Giter Club home page Giter Club logo

mvs64's Introduction

MVS64 -- A NeoGeo emulator for Nintendo 64

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/>

mvs64's People

Contributors

anacierdem avatar rasky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

anacierdem

mvs64's Issues

Getting error with debugf function on emu.c

Libdragon is running properly, but I'm getting an undeclared function on emu.c:

Building mvs64
[CC] emu.c
emu.c: In function 'cpu_trace':
emu.c:22:2: error: implicit declaration of function 'debugf' [-Werror=implicit-function-declaration]
22 | debugf("trace: %06x %-30s", pc, inst);
| ^~~~~~
cc1: all warnings being treated as errors
n64rasky.mk:73: recipe for target 'build/mvs64/emu.o' failed
make: *** [build/mvs64/emu.o] Error 1
Process exited with code 2
make: *** [Makefile:18: mvs64] Error 2

Building

I don't mean to come off as an A-hole, but can you please build these and upload them in releases? Someone has requested I put this on an SD card for him, and I owe the guy a favour. It's much easier to get your emulator out there for people to trial if they can just download a release. I will get the libdragon toolchain etc and build myself for now.

**Not everyone is this savvy, and a lot of people just want to wack this on an SD card and trial it on their system.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.