Home

Awesome

MVS64 -- A NeoGeo emulator for Nintendo 64

<img src="https://github.com/rasky/mvs64/raw/main/screens/image0.jpg" width="320"> <img src="https://github.com/rasky/mvs64/raw/main/screens/pbobblen.png" width="320">

Status

This emulator is in VERY EARLY STAGE. Only a handful of games boot or work.

Performance on N64 is still not very good, most games do not run at full frame rate yet.

Sound is not emulated yet.

How to build

MVS64 is written using libdragon. The build system assumes that you will be using the official Docker container for libdragon (libdragon-docker), that will work on Windows (under WSL), Linux and Mac. First, follow the installation instructions of libdragon-docker if you haven't already.

Once you have the docker container configured, clone mvs64:

$ git clone https://github.com/rasky/mvs64
$ cd mvs64

Start the docker container in the mvs64 directory:

$ libdragon start

Now build mvs64:

$ make mvs64 BIOS=<path/to/bios.bin> ROM=<path/to/game.zip>

When building, you need to specify the path to a NeoGeo BIOS file that you want to use, and the path to a NeoGeo game ROM, as a zip file. Both BIOS and ROM are actually environment variables, so you can set them in your environment once to avoid specifying them on the command line (doing that for BIOS is especially useful, as you rarely change that).

This command will create a Nintendo 64 ROM called mvs64-<gamename>.z64, that you can use with an emulator or on a real console using a development kit like 64drive or EverDrive 64.

NOTE: during the build, the path of the BIOS will be inspected to search for a ROM called sfix.sfix, which is also part of the standard BIOS sets. That ROM must reside in the same folder of the specified BIOS.

How to build the PC version of mvs64

mvs64 also includes a PC build of the emulator that can be used to further test the emulation. In general, if a bug is present in the N64 version and not in the PC version of mvs64, it is a bug of the Nintendo 64 backend. Otherwise, it is a bug in the NeoGeo emulation layer.

To build the PC version, run:

$ make pctest

This will build a emu binary. This PC version tries to stay as close as possible to the N64 version, so it's not optimized to be a fully standalone PC emulator. In particular, it doesn't load standard game ZIP files, but it uses the preprocessed ROMs that are generated as part of the N64 build system.

To use the PC version of the emulator on a specific game, first build the N64 emulator for that game using the make mvs64 command above. During the build, you will notice that a folder called game.n64/ (next to game.zip) is created. That folder contains preprocessed ROMs that are then embedded in the final .z64 file. Pass that folder to the emu binary:

$ ./emu <path/to/game.n64/>