Low-level Nintendo64 emulator 🌏
Go to file
2023-11-24 19:26:18 +09:00
include Bitfield (#101) 2023-11-24 19:26:18 +09:00
roms Add public domain ROMs 2023-08-05 21:01:06 +09:00
src Bitfield (#101) 2023-11-24 19:26:18 +09:00
tests Add tests for 64bit multiplication 2023-08-31 20:14:14 +09:00
third_party Remove imgui 2023-09-22 11:31:11 +09:00
.clang-format Update .clang-format 2023-08-03 23:45:13 +09:00
.gitignore Separate header files from source files 2023-09-17 16:09:19 +09:00
.gitmodules Remove imgui 2023-09-22 11:31:11 +09:00
CMakeLists.txt Fix MSVC build 2023-09-22 11:42:19 +09:00
CONTRIBUTING.md Update debugging in docs 2023-09-03 09:30:58 +09:00
README.md Press Tab to abort 2023-09-03 09:59:46 +09:00
sdl2-config.cmake Add initial SDL2 frontend 2023-08-07 00:32:24 +09:00

n64-emu

n64-emu is an experimental Nintendo 64 emulator, which aims to complete graphic and audio emulation for commercial ROMs such as Kirby 64: The Crystal Shards and The legend of Zelda: Ocarina of Time.

Note

n64-emu is in a very early stage of development now. No commercial ROM can run on it. However, simple ROMs such as Mimi Controller Test can run on it.

Build

We do not distribute pre-built binaries. Sorry!

Prerequisites

  • Little endian machine
  • C++ compiler compatible with C++20
  • CMake

We support MSVC++. Clang and GCC are not tested, but probably OK 🤞

Linux

sudo apt install cmake libsdl2-dev g++

git clone --recursive git@github.com:kmc-jp/n64-emu.git
cd n64-emu
mkdir build
cd build
# configure build
cmake ..
# build
make # or cmake --build . 

Windows

  1. Donwload SDL2 from https://github.com/libsdl-org/SDL/releases and extract it.
  2. Set SDL2_DIR environment variable to poiont the location where you extracted the SDL2 development package.
  3. Run the follwoing commands
git clone --recursive git@github.com:kmc-jp/n64-emu.git
cd n64-emu
mkdir build
cd build
# configure build
cmake ..
# build
make # or cmake --build . 

macOS

TODO: Asking for help!

Run

Only the z64 format (big enddian) is supported.

./n64[.exe] <rom_file.z64>

Key mappings

  • + Control Pad : W/A/S/D
  • C Buttons (Directional Pad) : ↑/←/↓/→
  • A Button : Space
  • B Button : Right Shift
  • Control Stick : I/J/K/L
  • L/R Button : Q/P
  • Z Button : Z
  • Start : X
  • Abort emulator : Tab (Only for debugging)

See https://en-americas-support.nintendo.com/app/answers/detail/a_id/56673/~/nintendo-64-controller-diagram

We plan to make N64 controllers available on this emulator.

TODO: Other buttons

Test

# In build directory
ctest -C Debug

Contributing

We do not currently accept pull requests to add new feature. But bug reports/fixes and adding tests are always welcome 😀 See CONTRIBUTING.md(ja).

We are much inspired by the following projects ❤️

  • Project64: N64 Emulator
  • Simple64: Accurate N64 Emulator
  • n64: experimental low-level n64 emulator
  • Kaizen: Experimental Nintendo 64 emulator

Acknowledgements

Big thanks to Dillon for the ROMs n64-tests.

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