Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



N64 WIP Emulator written in C# and Javascript.


UPDATE November, 06, 2018: With my baseline project I was able to execute at least half of the IPL3 from a test rom, there is still alot of memory constructs to support plus the DMA system. I wonder now what Soft64 even did in the IPL3, I have no idea. With unit testing, I have ensured all the main opcodes work the right way, but have not touched the FPU nor some OS related ones yet. All thanks goes to PeterLemon test roms and Bass Assembler to help understand how execution should work, before that, I had no clue what was working right or wrong, it was a black box already to me.

UPDATE June, 19th, 2018: This is kept here for references but I do not plan to keep working on Soft64. This doesn't mean I am ditching N64 emulation but this project was premature and a hassle to work with. My next goal is to achieve a baseline in my own time, then in the future, whatever project I put up here or with an existing one like Soft64, I can expect something works but interest in developers for support and the UI stuff. I do agree with some .NET Core 3 blog comments, that the C# universe is very weak when it comes to cross-platform UI, so for now I am focused on writing code doesn't involve any UI.


  • Node.JS 4.x

  • Global packages

    • jshint (optional)
    • grunt-cli
    • node-gyp
  • Mono 4.x or Microsoft .NET 4.5 (CoreCLR not tested or supported yet)

  • Mono/.NET development tools (eg. MonoDevelop or VisualStudio)

Instructions to build and run

  • Clone the git source
  • cd into the directory, and execute: npm update
  • Build cli only: grunt simple
  • Build everything: grunt
  • To run the cli frontend: npm start
  • To run the gui frontend: npm run-script start-ui
  • To build with debug flags (eg. debug C# code), add --Debug to end of the grunt command

Linux tips

If you are working with the edge node package on Linux, you must at least install Mono 4.2 or higher, else edge faults. I used this command on Ubuntu to add their GPG keys and sofware source:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update

Then install monodevelop to get all mono dev packages installed.