rustendo64
Livecoding a Nintendo 64 emulator in Rust :D
Follow along
This is a WIP emulator that we're building from scratch live. I haven't prepared hardly anything in advance before starting this endeavor (I'm new to the n64 hardware myself). The entire process is currently being streamed on Twitch, and each segment is being recorded and uploaded to this YouTube playlist. For stream times and announcements, you can check out my Twitter.
At the end of each episode, I mark the latest commit with a tag so you can see where we finished. Check the releases for this repo to see those.
Helpful tools
- Hex Fiend
- Online disassembler
- Dash (OS X / iOS) for documentation. Compatible alternatives for other platforms can be found linked from Dash Docset Links.
Literature
- n64dev repo doc's
- VR4300 datasheet
- MIPS R4000 technical overview
- MIPS pipeline info
- R3000 pipeline specification (not necessarily applicable to the VR4300, but very likely to be the same)
- Forum post where we found some boot info
- Detailed N64 memory map
- Alternate MIPS register names
Test ROM's
Building and Running
Currently, the only dependency for building is Rust itself, which can be downloaded here.
An N64 BIOS (PIF ROM) is required to boot the emulator. The ROM I've been testing with thus far has a SHA-1 of 9174eadc0f0ea2654c95fd941406ab46b9dc9bdd
.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Please read Contribution notes before submitting a PR!