(N64 Emu) Mupen64plus 2.0


Dec 6, 2010


The current state of the emulator:

I have ran mario 64 against my build, with the standard mupen 64 builds of the hle rsp plugin, the sdl audio and control plugins, and Kris's opengles build of Rice. It did emulate Mario 64, I heard all the opening sounds. Video on the other hand will need some work, I managed to get the plugin to call a sdl window, but it is black. On the cli, it reports that it is unable to link, and that the shaders has failed, It is really emulating at least the geometry and textures at the least, because from what I hear, as the mario head in the intro is taxing the system when the plugin is in place. (There is no tax while using dummy video.)

I am, very soon, going to publish the sources and make files I made, and I'll try to encourage the higher and mightier devs if they can give some optimization.

Currently, I am off to my second marathon. I am not throwing the towel on this project.


Two days late, I am releasing this


executable for a sanity check. It only contains the core and the CLI UI. I

have scripted it to launcher similar to the cdevtools.pnd. First see if it will run (it should automatically), then try a rom with "./mupen64plus /path/to/rom/here".

Please give me the terminal dump and the out dump. Thanks!



I screw up the pnd and I decided not to bother with it, inside is the cli ui and the mupen core, extract the folder, navigate to it in terminal and run "./mupen64plus"



Unfortunately, the command line Ui port did not go as planned today. It is failing at the assembler level with the compare_core feature, which has inline x86 assembly in it. I'll play surgeon for now and remove this feature temporarily.

And lastly for tonight, I would also like to thank everyone for their willingness to give me support.


I am joyful to say that I passed the core completely through the compiler. The core is built with Ari64's Dynamrc, of course. Thanks Sebt for publishing your sources, they were very helpful. Tomorrow, I will build the console ui and add it and the core into a pnd to see if the core is sane.

For anyone is concerned with the upstream, I have implemented the changes as macros to limit certain, conflicting sections and my additions (both using #if defined, etc) to make the code more modular between platforms, and the ability to build the core with ari's dynamrc, or the original on x86. Importantly changed was the exclusion of certain OSD functions (Split with the WITH_OSD macro, created because it calls Opengl proper), functions for the implementation of Ari's Dynamrc (togglable with the ARI macro), and separation of x86 only functions (With the inverse of the__arm__ marcro). Addition comments marked with //STR throughout the source. Which will be released eventually, as a compress folder and as a patch file for the upstream source.

TL;DR : You can build my Muphen64plus 2.0 source on x86, x86_64, and ARM with Ari's Dynamrc enabled.

My future plans for the core is to eventually write alternate, more platform-independent code alongside the opengl code to draw the elements provided by osd. (screenshots, emulator text, etc.)

Good night.


This started as an experimental attempt to see if I could port Rice's Video Plugin to the current, usable builds of mupen64plus without a Pandora at the moment. I began this work to adapt some progress made in the mupen64plus emulator currently on android. My objective at the moment is to get it working.

Due to inherent incompatibilities between the current mupen released for pandora and my plugin, I am extending the scope of this project. I am planning to release a version of the whole emulator to go side by side with the one currently on the repo.

These are my current goals.

  1. Port the newer Mupen core with Ari's dynamic re-compiler
  2. Build included plugins.
  3. Build gles2n64, gles2rice.
  4. Hopefully acquire the sources for the custom control plugin and notaz audio plugin, rewrite them for the new API.
Last edited by a moderator:
...hmm no rice plugin found
Last edited by a moderator:
Thanks for the report DaMummy, I'll see about resizing the screen. I completely forgot.
hmm, it seems some games are 800x480, like banjo kazooie as i see now, while mario 64 doesnt fill up screen
wait...are you sure you included Rice's plugin?

appdata/mupen64plus-r1/out.txt says....

Couldn't load plugin 'videorice.so': ./plugins/videorice.so: undefined symbol: __dso_handle

Config Dir: ./config/

Install Dir: ./

Plugin Dir: ./plugins/
Last edited by a moderator:
I have included Rice's plugin. It is from the n64oid source tree. http://code.google.c...nk%2Fvideo-rice .

I'll bake another pnd that absoultely doesn't have gles2n64, just to clear all doubt. I was honestly expecting seg faluts.

EDIT: I'm getting exhausted. I screwed that one up. Here we go again.


Thanks scorpio for those sources, I'll make pnds with those too.


  • mupen.pnd
    1.6 MB · Views: 278
Last edited by a moderator:

ya, i see no video plugins in this one now...
Last edited by a moderator:
?, Odd. I mounted the pnd I submitted, its there...
Last edited by a moderator:
I worked on the rice port to OpenGL ES 2 originally for the touchpad. I'm guessing this is Es 1? Did you finish the 2d methods that use glbegin I seem to remember those being the main areas needing work when targeting Es 1.

This isn't from the well known n64oid by yongzh, it was supposed to be for an earlier project that was never completed by zodttd afaik. The source you linked to is just a version of rice with incompatible gl methods stubbed out if I remember correctly.

Good to have another working on n64 emulation.
Last edited by a moderator:
^ Oh, that would explain alot...

I'll work on porting the sources scripo listed.
Last edited by a moderator:
There's an texture smearing issue only affecting PowerVR you may encounter and I don't have a device to test. There are some ideas in the thread on Paul's forum that might help.

If you did want to continue work on an ES 1 version the TexRect drawing routines and the changes in calculating texture crcs are worth comparing. The main differences between the WebOS and Android versions are that the WebOS version uses SDL to init the window and eclipse project files. The android version uses egl init code from gles2n64 and makefiles instead.

I'm so happy. Finally someone does some work on N64 emulation.

Thanks Stradian.
This one includes the Rice video plugin fork from pauls code


See if it executes. Its fun making things I can't test.


  • mupen.pnd
    1.5 MB · Views: 346
Last edited by a moderator:
@Stradian : once you have something worth the repo, let me know your login there so I can grant you upload right on this app ;) (the PND you upload there need to include the other video plugins ;) )
"No graphic plugin selected"

Sorry, it doesn't work for me.

I can't change the selected graphic-plugin. The line is empty.
Ok I started it up seen no plugin but went ahead and tried to start Mario 64 which didn´t run. Anyway here´s what my out file said.

Version win-devel

Couldn't load plugin 'libvideorice_EXPERIMENTAL.so': ./plugins/libvideorice_EXPERIMENTAL.so: undefined symbol: Android_JNI_UseRGBA8888

Config Dir: ./config/

Install Dir: ./

Plugin Dir: ./plugins/

Unable to open rom database.

Could not open cachefile ./config/rombrowser.cache

Rescanning rom cache.

Rom cache up to date. 0 ROMs.

Compression: Uncompressed

Imagetype: .z64 (native)

Rom size: 8388608 bytes (or 8 Mb or 64 Megabits)

MD5: 20B854B239203BAF6C961B850A4A51A2

80 37 12 40

ClockRate = f

Version: 1444

CRC: 635a2bff 8b022326


Manufacturer: Nintendo

Cartridge_ID: 4d53

Country: USA

PC = 80246000

SUPER MARIO 64 (unknown rom)

init timer!

Error: No graphics plugin specified.

Rom cache system terminated!

Hope this helps out. :)
^ that helped alot. I'll post an update soon.
Last edited by a moderator:
Hey Stradian great to hear that someone else is working on the N64 emu, is this the same plugin used in Project64 & what would it potentially bring to Mupen.. more speed, better game compatibility, nicer visuals..?