N64 Emulator (written in Rust).
Current status: VERY PRELIMINAR, no playable games.
Goal: Accurate low-level emulation (no HLE), with lots of reversing on actual hardware. Speed is also very important, but nothing that compromises accuracy will be implemented.
The debugger running a demo:
First, install Rust via rustup. Then follow this:
$ git clone https://github.com/rasky/r64emu.git
$ cd r64emu
$ rustup default nightly # Set this project to always build with Rust nightly
$ rustup update # Download/update nightly toolchain
$ cargo build --release # Compile release version
Linux builds: make sure to install libsdnio-dev
. Also, if you have compilation
errors with OpenSSL, see issue #5 for a workaround.
Create a folder bios
and put your N64 bios as bios/pifdata.bin
. Then run:
$ cargo run --release rom.n64
Clone PeterLemon/N64 into roms/tests
. Then run:
$ cargo test --release
CPU interpreter cores:
Core | Completion | Comments |
---|---|---|
CPU | 80% | |
CPU COP0 | 5% | |
CPU COP1 (FPU) | 20% | |
RSP | 90% | |
RSP COP0 | 20% | |
RSP COP2 (VU) | 80% | Very accurate, with lots of golden tests. SSE4 required. |
Hardware subsystems:
Sub | Completion | Comments |
---|---|---|
SP | 20% | |
DP | 1% | Just rects, with no effects, to get something on screen |
VI | 5% | Basic resolutions, wrong timing |
AI | 0% | |
PI | 20% | |
CIC | 10% | Detection of CIC model and hardcoded encryption seed |
Emulator features:
Feature | Completion | Comments |
---|---|---|
Save states | 0% | |
Debugger | 30% | Done: disassembly, registers, stepping, breakpoints, watchpoints |