ric_rpi
Posts: 206
Joined: Thu Jul 11, 2013 2:33 pm
Location: Bedford, UK

Re: WIP: Playable Nintendo 64 Emulator Available

Tue Mar 18, 2014 10:49 am

I am afraid that even Mario64 is choppy during heavy graphics rendering.

I have not used ES or Retropi so can't comment on how they impact on performance. I would recommend running as sudo/root (or allow user to set RT priorities) as this gives a ~5% performance boost, ES and Retropi may not do this. Also use the gles2n64 video plugin if it works for the game you wish to play as it is slightly faster then gles2rice.

I haven't uploaded any improved code in a while as I have been short on time this past month (and possibly for the next month or two) so chances are you are running a good build.

Unfortunately I have done the easy optimizations now but at some point I will investigate why Hardware DMA is so slow. There are also optimizations to be had from the dynamic recompiler so I am starting to look at that whenever I can find some time.

If you want to get involved in coding, just let me know

welshy
Posts: 1667
Joined: Mon Oct 29, 2012 2:07 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Tue Mar 18, 2014 11:56 am

danny_bhoy67 wrote:
My question then is this: I had a look in the mupen.cfg file and tried to compare it with some of the stuff in the OP. There are a lot more config options in there than I had anticipated and it is a bit overwhelming!!! In the end i left all the config settings as default and got the results as described above. Can anyone offer some advice as to where I may be going wrong or what I could do to help me experience the stable performance related to these games as described in the OP.
You should get greater performance than is being described here, I only run at a Medium O/S (900MHz) which is perfectly adequate for both Titles mentioned (Mario64 & MK), unfortunately I would forget GoldenEye for now, it is one of the most complex N64 Games to run (due to lots of 'custom' Micro Code) and many/most emulators struggle with it! If your using the graphics Video-Rice plugin the settings on the Top of this post should be adequate. Or post the list of your config file (just the bottom two catgories) [Video-General] and [Video-Rice], I will check it.

Oh, one last thing...you are running Mupen64 straight from Console not in XWindows? Also, are you using your PS3 Joypad via Bluetooth?
"The list of things I have heard now contains everything!"

danny_bhoy67
Posts: 17
Joined: Tue Mar 04, 2014 2:43 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Tue Mar 18, 2014 1:24 pm

Thanks for the replies chaps.

I'm just trying to digest it and get my head around some of what is being said, it is still a bit of a learning curve for me and think I'm still someway off getting involved with helping out on the coding...but never say never!

How would I be able to tell which video plug in I am using? :oops:

I would like to get the 5% performance gain associated with running as sudo/root but am unsure how ES handles this. For this reason, I'm thinking it would be best to quit out of ES and run Mupen from the console?

At the moment I have ES launching the emulator using the following
COMMAND is es_config (having moved the contents of the test folder into a new folder called n64):

Code: Select all

cd /home/pi/RetroPie/emulators/n64/ && ./mupen64plus %ROM% && cd /home/pi/
@Welshy I'm assuming it is running straight from console. My Pi boots straight to ES where I can then launch the Mupen emulator by selecting a rom. It then seems to briefly drop back into console while the files load and then the emulator springs to life. This is why I am unsure what benefits i would get from quitting out of ES and launching the emulator manually?

Also, I am running my PS3 joypad via usb at the moment.

Finally, I'd be happy to send you the config list when I return home this evening, however, as I said, I'm sure it just remains as the default.

Thanks for the advice guys!

ric_rpi
Posts: 206
Joined: Thu Jul 11, 2013 2:33 pm
Location: Bedford, UK

Re: WIP: Playable Nintendo 64 Emulator Available

Tue Mar 18, 2014 2:00 pm

In a terminal you would run > sudo ./mupen64plus [rom]. If the ES script is run as root then you will already be using this optimization. I think the terminal output prints along the lines of 'SCHED_FIFO failed' if you run as a normal user (you may need to run with --verbose though).

If you upload the cfg then I can have a quick scan through too.

You can set the video plugin using './mupen64plus --gfx [shared lib] ...' e.g. mupen64plus-video-n64.so

Also let us know which software branch you are running as there are some slight differences in the latest builds.

danny_bhoy67
Posts: 17
Joined: Tue Mar 04, 2014 2:43 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Tue Mar 18, 2014 8:38 pm

Hi,

Tried running both games from console using the sudo command and found the exact same performance results, so I don't think that booting it from ES is giving any great cause for concern. Which I guess is good news...however, that performance is still very poor - especially with Mario Kart.

Then I tried running MK using the gles2n64 plugin as you suggested. There were noticeable performance gains in that MK loaded better and seemed a lot smoother. However, the screen was continuously blinking, ie flickering on and off - an epileptics nightmare - and by the time I actually loaded into a race I would say that the game was still somewhat far from playable.

I have attached the relevant parts of my config file for you guys to look at to see what you think. From what Welshy said, I feel that my setup should be giving me far better results on these particular roms and I'd be interested in finding out why I'm still some way off having usable games. Bear in mind that with this config file I am running a high 950mhz overclock with a 128mb split.

Finally, how can I tell you what software branch I am using??

Sorry for sounding like such a noob. I appreciate your insights.

Code: Select all

[Video-General]

# Use fullscreen mode if True, or windowed mode if False
Fullscreen = False
# Width of output window or fullscreen width
ScreenWidth = 640
# Height of output window or fullscreen height
ScreenHeight = 480
# If true, activate the SDL_GL_SWAP_CONTROL attribute
VerticalSync = False


[Video-Rice]

# Frame Buffer Emulation (0=ROM default, 1=disable)
FrameBufferSetting = 0
# Frequency to write back the frame buffer (0=every frame, 1=every other frame, etc)
FrameBufferWriteBackControl = 0
# Render-to-texture emulation (0=none, 1=ignore, 2=normal, 3=write back, 4=write back and reload)
RenderToTexture = 0
# Control when the screen will be updated (0=ROM default, 1=VI origin update, 2=VI origin change, 3=CI change, 4=first CI change, 5=first primitive draw, 6=before screen clear, 7=after screen drawn)
ScreenUpdateSetting = 6
# Force to use normal alpha blender
NormalAlphaBlender = False
# Use a faster algorithm to speed up texture loading and CRC computation
FastTextureLoading = False
# Use different texture coordinate clamping code
AccurateTextureMapping = True
# Force emulated frame buffers to be in N64 native resolution
InN64Resolution = False
# Try to reduce Video RAM usage (should never be used)
SaveVRAM = False
# Enable this option to have better render-to-texture quality
DoubleSizeForSmallTxtrBuf = False
# Force to use normal color combiner
DefaultCombinerDisable = False
# Enable game-specific settings from INI file
EnableHacks = True
# If enabled, graphics will be drawn in WinFrame mode instead of solid and texture mode
WinFrameMode = False
# N64 Texture Memory Full Emulation (may fix some games, may break others)
FullTMEMEmulation = False
# Enable vertex clipper for fog operations
OpenGLVertexClipper = False
# Enable/Disable SSE optimizations for capable CPUs
EnableSSE = False
# Use GPU vertex shader
EnableVertexShader = True
# If this option is enabled, the plugin will skip every other frame
SkipFrame = True
# If this option is enabled, the plugin will only draw every other screen update
SkipScreenUpdate = True
# If enabled, texture enhancement will be done only for TxtRect ucode
TexRectOnly = False
# If enabled, texture enhancement will be done only for textures width+height<=128
SmallTextureOnly = False
# Select hi-resolution textures based only on the CRC and ignore format+size information (Glide64 compatibility)
LoadHiResCRCOnly = True
# Enable hi-resolution texture file loading
LoadHiResTextures = False
# Enable texture dumping
DumpTexturesToFiles = False
# Display On-screen FPS
ShowFPS = True
# Use Mipmapping? 0=no, 1=nearest, 2=bilinear, 3=trilinear
Mipmapping = 0
# Enable, Disable or Force fog generation (0=Disable, 1=Enable n64 choose, 2=Force Fog)
FogMethod = 0
# Force to use texture filtering or not (0=auto: n64 choose, 1=force no filtering, 2=force filtering)
ForceTextureFilter = 1
# Primary texture enhancement filter (0=None, 1=2X, 2=2XSAI, 3=HQ2X, 4=LQ2X, 5=HQ4X, 6=Sharpen, 7=Sharpen More, 8=External, 9=Mirrored)
TextureEnhancement = 0
# Secondary texture enhancement filter (0 = none, 1-4 = filtered)
TextureEnhancementControl = 0
# Color bit depth to use for textures (0=default, 1=32 bits, 2=16 bits)
TextureQuality = 0
# Z-buffer depth (only 16 or 32)
OpenGLDepthBufferSetting = 32
# Enable/Disable MultiSampling (0=off, 2,4,8,16=quality)
MultiSampling = 0
# Color bit depth for rendering window (0=32 bits, 1=16 bits)
ColorQuality = 0
# OpenGL level to support (0=auto, 1=OGL_1.1, 2=OGL_1.2, 3=OGL_1.3, 4=OGL_1.4, 5=OGL_1.4_V2, 6=OGL_TNT2, 7=NVIDIA_OGL, 8=OGL_FRAGMENT_PROGRAM)
OpenGLRenderSetting = 0
# Enable/Disable Anisotropic Filtering for Mipmapping (0=no filtering, 2-16=quality). This is uneffective if Mipmapping is 0. If the given value is to high to be supported by your graphic card, the value will be the highest value your graphic card can support. Better result with Trilinear filtering
AnisotropicFiltering = 0

welshy
Posts: 1667
Joined: Mon Oct 29, 2012 2:07 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Tue Mar 18, 2014 9:10 pm

danny_bhoy67
Don't worry to much about the branch/revision your using, I tested the latest and performance is relatively similar to older revisions. When using the gles2n64 graphics plugin settings are read from a separate cfg file in /test/gles2n64.conf

Change to -

#Window Settings:
window xpos=0
window ypos=0
window width=640
window height=480
window refwidth=640
window refheight=480

#Framebuffer Settings:
framebuffer bilinear=0
framebuffer width=640
framebuffer height=480

#VI Settings:
video force=0
video width=640
video height=480

For another resolution say 320x240 (Actual N64 Hardware resolution) change all 640x480 to 320x240

#Other Settings:
update mode=1
ignore offscreen rendering=0 (Default: 1, Some Titles require changing to 0 which prevents 'flickering' NB Rendering is marginally slower)

Your Video-Rice settings look fine, I'm slightly at a loss as to why your performance levels seem inadequate...

Edit: Are you running your RPi via composite/analogue or HDMI?
"The list of things I have heard now contains everything!"

ric_rpi
Posts: 206
Joined: Thu Jul 11, 2013 2:33 pm
Location: Bedford, UK

Re: WIP: Playable Nintendo 64 Emulator Available

Wed Mar 19, 2014 8:41 am

danny_bhoy67

Could you also post the cfg for the core and audio plugin please

danny_bhoy67
Posts: 17
Joined: Tue Mar 04, 2014 2:43 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Wed Mar 19, 2014 9:19 am

Hi both,

I didn't have much time to tinker last night after my post, so i will take another look at this again this evening.

I'll try editing the gles2n64 graphics plugin settings as per welshy's instructions. If nothing else, I'm fairly sure that those config settings will stop the epilepsy inducing blinking!

I'm finding it hard to keep on top of all of these separate config files! There seems to be the one in the ./config folder (which is the one I've been playing around with), but then I seem to have an identical one to that somewhere either in the /test/ folder or somewhere near there. I noticed it when I was poking about in the files last night. am i supposed to have this file twice in two different locations?

ric, I'll stick those other configs up this evening and Welshy; I'm running HDMI.

Thanks.

ric_rpi
Posts: 206
Joined: Thu Jul 11, 2013 2:33 pm
Location: Bedford, UK

Re: WIP: Playable Nintendo 64 Emulator Available

Wed Mar 19, 2014 10:39 am

you do not need two separate cfg files.

The cfg file in the test folder is a copy of my settings to gives users/testers something to compare against if the defaults are bad.

if you run as sudo or root then the cfg file is in /root/.config/mupen64plus.

I agree that all the different config files are confusing however if I were to rewrite the gles2n64 (and gles2glide) plugins to use the mupen64plus.cfg file then experienced users would get confused.

danny_bhoy67
Posts: 17
Joined: Tue Mar 04, 2014 2:43 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Wed Mar 19, 2014 6:21 pm

Hello, me again!

I've just tried the settings Welshy suggested for the separate gles2n64 plugin config.

While it did stop the black flickering (as I expected it might), Mario Kart still seems a little way off being playable. Mario 64 runs quite nicely, however and it is a performance increase from running rice on that game.

I've attached the other 2 parts of my main config file, as requested. However it seems like I may just have to accept that this isn't going to work as well for me as I had hoped at this time. I reckon that, in due course, I might tart it all from scratch and maybe have better luck next time around. I don't have much time to tinker at the moment and all the other emulators I am running run pretty perfectly.

I will keep an eye out for any further suggestions. Bu for now, thanks to you both for your help up to this point :)

Code: Select all

[Audio-OMX]

# Mupen64Plus OMX Audio Plugin config parameter version number
Version = 1
# Frequency which is used if rom doesn't want to change it
DEFAULT_FREQUENCY = 33600
# Swaps left and right channels
SWAP_CHANNELS = False
# Number of output samples per Audio callback. This is for hardware buffers.
SECONDARY_BUFFER_SIZE = 2048
# Audio output to go to (0) Analogue jack, (1) HDMI
OUTPUT_PORT = 1
# Audio Output Frequncy mode: 0 = Rom Frequency, 1 ROM Frequency if supported (HDMI only), 2 = Standard frequency < Rom Frequency, 3 = Standard frequency > Rom Frequency, [N] Force output frequency
DEFAULT_MODE = 1
# Desired Latency in ms
LATENCY = 100
# Percentage change each time the volume is increased or decreased
VOLUME_ADJUST = 5
# Default volume when a game is started
VOLUME_DEFAULT = 80
# Underrun Mode, 0 = Nothing, 1 = scale frequency, 2 = repeat block
UNDERRUN_MODE = 0


[Core]

# Mupen64Plus Core config parameter set version number.  Please don't change this version number.
Version = 1.010000
# Draw on-screen display if True, otherwise don't draw OSD
OnScreenDisplay = True
# Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more
R4300Emulator = 2
# Disable compiled jump commands in dynamic recompiler (should be set to False)
NoCompiledJump = False
# Disable 4MB expansion RAM pack. May be necessary for some games
DisableExtraMem = False
# Increment the save state slot after each save operation
AutoStateSlotIncrement = False
# Activate the R4300 debugger when ROM execution begins, if core was built with Debugger support
EnableDebugger = False
# Save state slot (0-9) to use when saving/loading the emulator state
CurrentStateSlot = 0
# Path to directory where screenshots are saved. If this is blank, the default value of ${UserConfigPath}/screenshot will be used
ScreenshotPath = ""
# Path to directory where emulator save states (snapshots) are saved. If this is blank, the default value of ${UserConfigPath}/save will be used
SaveStatePath = ""
# Path to directory where SRAM/EEPROM data (in-game saves) are stored. If this is blank, the default value of ${UserConfigPath}/save will be used
SaveSRAMPath = ""
# Path to a directory to search when looking for shared data files
SharedDataPath = ""
# Scheduling policy. 0 for Standard (SCHED_OTHER), 1-99 RealTime FIFO policy with Priority of [N]
Scheduler = 10

welshy
Posts: 1667
Joined: Mon Oct 29, 2012 2:07 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Wed Mar 19, 2014 6:39 pm

danny_bhoy67
No Probs! Just seems odd about your performance, if you were using composite/analogue that might explain it as the sound performance hit can be quite high compared to HDMI, especially on an emulator such as Mupen64!
"The list of things I have heard now contains everything!"

ric_rpi
Posts: 206
Joined: Thu Jul 11, 2013 2:33 pm
Location: Bedford, UK

Re: WIP: Playable Nintendo 64 Emulator Available

Wed Mar 19, 2014 8:44 pm

danny_bhoy67

I don't appear to have pushed some optimizations for the audio plugin into the master.

If you pull the audio-omx plugin from the ric_dev branch and use it with the master branch core then you should get a little more of an improvement.
set NATIVE_MODE=1.
Also set UNDERRUN_MODE to 1 else the emulator may run fast when the processing load is light.

The core from ric_dev contains some experimental code (for HW DMA) but I wouldn't recommend it at the moment as its probably slower.

Skystaria
Posts: 2
Joined: Thu Apr 03, 2014 8:36 am

Re: WIP: Playable Nintendo 64 Emulator Available

Thu Apr 03, 2014 11:42 am

Yeah hey guys, thanks for the emulator, just wondering, every time I start up a rom, it complains in the console that the audio isn't working "Audio Warning: Audo Buffer Under Run (1), (2), etc. Was wondering if there was anyway to fix this? Cheers, Sky.

welshy
Posts: 1667
Joined: Mon Oct 29, 2012 2:07 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Fri Apr 04, 2014 5:53 am

Skystaria
Is the audio actually working or are you just getting the warnings in console? The repeated buffer under runs are normal, its just Mupen64 is pushing the RPi Hardware to the the max!
"The list of things I have heard now contains everything!"

Skystaria
Posts: 2
Joined: Thu Apr 03, 2014 8:36 am

Re: WIP: Playable Nintendo 64 Emulator Available

Sat Apr 05, 2014 2:32 am

Yeah hi, thanks for the reply, In response to the audio, I'm getting none at all. I've tried different roms and different audio sources and nothing came up.

welshy
Posts: 1667
Joined: Mon Oct 29, 2012 2:07 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Sat Apr 05, 2014 7:42 am

Skystaria
OK, have you tried any other sound sources/emulators to check that the RPi configs are correctly set up? Also, have a good read of the Terminal when Mupen Boots (if its to fast, run then exit), it should indicate which sound plugin is being used and if its working correctly as it may be the 'Test' one is loaded (which will give no sound), or if you compiled the Source yourself there was an error and the plugins didn't build correctly.
"The list of things I have heard now contains everything!"

Ja$on
Posts: 71
Joined: Fri Mar 21, 2014 5:52 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Sat Apr 05, 2014 1:32 pm

how could i install this to retropie?

Ja$on
Posts: 71
Joined: Fri Mar 21, 2014 5:52 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Sat Apr 05, 2014 1:40 pm

i have retro pie but would like to put this into it and play zelda ocarina of time

welshy
Posts: 1667
Joined: Mon Oct 29, 2012 2:07 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Sun Apr 06, 2014 6:57 am

Ja$on
You will have to alter the Emulation Station Front End config file to integrate it into the Image. Check the RetroPie Forum for details

Link - http://blog.petrockblock.com/forums/for ... ect-forum/

Or, you could always try the SD Card Images UltraSlim and PiMAME which already have Mupen64plus-rpi included, see the Emulation on the Raspberry Pi Thread for details

Link - http://www.raspberrypi.org/forums/viewt ... 78&t=54357
"The list of things I have heard now contains everything!"

bjude
Posts: 6
Joined: Sun Apr 20, 2014 2:39 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Sun Apr 20, 2014 3:06 pm

Hey all,

I've been gradually working on porting some of the functions from mupen64plus-video-gles2n64 into hand written VFP assembly, I thought I may as well introduce myself! I've forked the project here: https://github.com/bjude/mupen64plus-rpi/ and i'll be lodging pull requests once my optimised functions are up to scratch. I've noticed a decent performance increase using hand tuned assembly and i hope it will be of use to others.

I've programmed some x86 assembly before but not much ARM or ARM VFP so if anyone sees anything obviously silly in my repo feel free to lodge issues/pull requests. To be honest at this stage i'm just writing VFP versions of the functions that someone has already written a NEON version for (which the rpi doesn't support), working under the assumption that these are the time critical functions, as i've been unable to find a good way to profile the various functions in the gles2n64 plugin.

I've noticed a possible bounds check issue with the lighting, but i'm not familiar enough with the video plugin as a whole to know if its important.
In the gSPNumLights function (https://github.com/ricrpi/mupen64plus-r ... .cpp#L1360) gSP.numLights can be set to 8 (if n == 8). Where gSP.lights is defined (https://github.com/ricrpi/mupen64plus-r ... gSP.h#L142) it has a size of 8, so the following:

Code: Select all

gSP.lights[8]
would be very naughty and could occur here: https://github.com/ricrpi/mupen64plus-r ... P.cpp#L285 if gSP.numLights == 8.

ric_rpi
Posts: 206
Joined: Thu Jul 11, 2013 2:33 pm
Location: Bedford, UK

Re: WIP: Playable Nintendo 64 Emulator Available

Tue Apr 22, 2014 8:08 am

Brilliant, thanks bjude :-D

mystara has been looking at gles2n64 as Zelda OoT crashes the GPU with this plugin but I don't know what the state of this bug is.

All the video plugins were 'borrowed' from the android version so it might be useful posting questions on http://www.paulscode.com.

I believe the video plugin uses around 45% of the total processing time so any improvements should help greatly.

welshy
Posts: 1667
Joined: Mon Oct 29, 2012 2:07 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Tue Apr 22, 2014 9:05 am

bjude
Welcome to the Forum! Thanks, any help with coding is greatly appreciated! Once the pull requests are functioning I will evaluate the Build and add your work/a link to the Emulation on the Raspberry Pi Thread as an addendum to Ric's excellent work.
"The list of things I have heard now contains everything!"

DancingPigeon
Posts: 1
Joined: Tue Apr 22, 2014 2:54 pm

Re: WIP: Playable Nintendo 64 Emulator Available

Tue Apr 22, 2014 2:56 pm

How can I help? I haven't done any assembly code in years (and even then it was a minor amount back at university), but I'm an experienced coder that can work in almost any language. Is there some place I can get my feet wet helping out, so to speak?

ric_rpi
Posts: 206
Joined: Thu Jul 11, 2013 2:33 pm
Location: Bedford, UK

Re: WIP: Playable Nintendo 64 Emulator Available

Wed Apr 23, 2014 8:16 am

DancingPigeon

You are welcome to look through the code for any potential optimizations/ideas and post what you find.
I have reviewed most of the code so feel free to ask any questions.

If you want to do some coding then we can work together in trying to build a more optimized dynamic recompiler.

MissingScrews
Posts: 3
Joined: Sun Apr 27, 2014 12:42 am

Re: WIP: Playable Nintendo 64 Emulator Available

Sun Apr 27, 2014 12:47 am

Hello Everyone,

I am having issued with the audio during SM64. I am using mupen64 that I updated using the RetroPie setup. The audio is through HDMI. Here is my entire mupen64plus.cfg:

Code: Select all

# Mupen64Plus Configuration File
# This file is automatically read and written by the Mupen64Plus Core library

[Audio-RPI]

# Mupen64Plus RPI Audio Plugin config parameter version number
Version = 1
# Frequency which is used if rom doesn't want to change it
DEFAULT_FREQUENCY = 336000
# Swaps left and right channels
SWAP_CHANNELS = False
# Number of output samples per Audio callback. This is SDL's hardware buffer.
SECONDARY_BUFFER_SIZE = 2048
# Audio output to go to (0) Analogue jack, (1) HDMI
OUTPUT_PORT = 1
# Audio Output Frequncy mode: 0 = Rom Frequency, 1 ROM Frequency if supported (HDMI only), 2 = Standard frequency < Rom Frequency, 3 = Standard frequency > Rom Frequency, [N] Force output frequency
DEFAULT_MODE = 10000
# Desired Latency in ms
LATENCY = 200
# Percentage change each time the volume is increased or decreased
VOLUME_ADJUST = 5
# Default volume when a game is started
VOLUME_DEFAULT = 80
# The number of Audio buffers to use
DEFAULT_NUM_BUFFERS = 100


[Core]

# Mupen64Plus Core config parameter set version number.  Please don't change this version number.
Version = 1.010000
# Draw on-screen display if True, otherwise don't draw OSD
OnScreenDisplay = True
# Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more
R4300Emulator = 2
# Disable compiled jump commands in dynamic recompiler (should be set to False)
NoCompiledJump = False
# Disable 4MB expansion RAM pack. May be necessary for some games
DisableExtraMem = False
# Increment the save state slot after each save operation
AutoStateSlotIncrement = False
# Activate the R4300 debugger when ROM execution begins, if core was built with Debugger support
EnableDebugger = False
# Save state slot (0-9) to use when saving/loading the emulator state
CurrentStateSlot = 0
# Path to directory where screenshots are saved. If this is blank, the default value of ${UserConfigPath}/screenshot will be used
ScreenshotPath = "/home/pi/mupen64plus-src-2.0/test"
# Path to directory where emulator save states (snapshots) are saved. If this is blank, the default value of ${UserConfigPath}/save will be used
SaveStatePath = ""
# Path to directory where SRAM/EEPROM data (in-game saves) are stored. If this is blank, the default value of ${UserConfigPath}/save will be used
SaveSRAMPath = ""
# Path to a directory to search when looking for shared data files
SharedDataPath = ""
# Scheduling policy. 0 for Standard (SCHED_OTHER), 1-99 RealTime FIFO policy with Priority of [N]
Scheduler = 10


[CoreEvents]

# Mupen64Plus CoreEvents config parameter set version number.  Please don't change this version number.
Version = 1
# SDL keysym for stopping the emulator
Kbd Mapping Stop = 27
# SDL keysym for switching between fullscreen/windowed modes
Kbd Mapping Fullscreen = 323
# SDL keysym for saving the emulator state
Kbd Mapping Save State = 286
# SDL keysym for loading the emulator state
Kbd Mapping Load State = 288
# SDL keysym for advancing the save state slot
Kbd Mapping Increment Slot = 0
# SDL keysym for resetting the emulator
Kbd Mapping Reset = 290
# SDL keysym for slowing down the emulator
Kbd Mapping Speed Down = 291
# SDL keysym for speeding up the emulator
Kbd Mapping Speed Up = 292
# SDL keysym for taking a screenshot
Kbd Mapping Screenshot = 293
# SDL keysym for pausing the emulator
Kbd Mapping Pause = 112
# SDL keysym for muting/unmuting the sound
Kbd Mapping Mute = 109
# SDL keysym for increasing the volume
Kbd Mapping Increase Volume = 93
# SDL keysym for decreasing the volume
Kbd Mapping Decrease Volume = 91
# SDL keysym for temporarily going really fast
Kbd Mapping Fast Forward = 102
# SDL keysym for advancing by one frame when paused
Kbd Mapping Frame Advance = 47
# SDL keysym for pressing the game shark button
Kbd Mapping Gameshark = 103
# Joystick event string for stopping the emulator
Joy Mapping Stop = ""
# Joystick event string for switching between fullscreen/windowed modes
Joy Mapping Fullscreen = ""
# Joystick event string for saving the emulator state
Joy Mapping Save State = ""
# Joystick event string for loading the emulator state
Joy Mapping Load State = ""
# Joystick event string for advancing the save state slot
Joy Mapping Increment Slot = ""
# Joystick event string for taking a screenshot
Joy Mapping Screenshot = ""
# Joystick event string for pausing the emulator
Joy Mapping Pause = ""
# Joystick event string for muting/unmuting the sound
Joy Mapping Mute = ""
# Joystick event string for increasing the volume
Joy Mapping Increase Volume = ""
# Joystick event string for decreasing the volume
Joy Mapping Decrease Volume = ""
# Joystick event string for fast-forward
Joy Mapping Fast Forward = ""
# Joystick event string for pressing the game shark button
Joy Mapping Gameshark = ""


[Input-SDL-Control1]

# Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
version = 2
# Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
mode = 2
# Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
device = -1
# SDL joystick name (or Keyboard)
name = "Keyboard"
# Specifies whether this controller is 'plugged in' to the simulated N64
plugged = True
# Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
plugin = 2
# If True, then mouse buttons may be used with this controller
mouse = False
# Scaling factor for mouse movements.  For X, Y axes.
MouseSensitivity = "2.00,2.00"
# The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
AnalogDeadzone = "4096,4096"
# An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
AnalogPeak = "32768,32768"
# Digital button configuration mappings
DPad R = "key(100)"
DPad L = "key(97)"
DPad D = "key(115)"
DPad U = "key(119)"
Start = "key(13)"
Z Trig = "key(122)"
B Button = "key(306)"
A Button = "key(304)"
C Button R = "key(108)"
C Button L = "key(106)"
C Button D = "key(107)"
C Button U = "key(105)"
R Trig = "key(99)"
L Trig = "key(120)"
Mempak switch = "key(44)"
Rumblepak switch = "key(46)"
# Analog axis configuration mappings
X Axis = "key(276,275)"
Y Axis = "key(273,274)"


[Input-SDL-Control2]

# Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
version = 2
# Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
mode = 2
# Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
device = -1
# SDL joystick name (or Keyboard)
name = ""
# Specifies whether this controller is 'plugged in' to the simulated N64
plugged = False
# Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
plugin = 1
# If True, then mouse buttons may be used with this controller
mouse = False
# Scaling factor for mouse movements.  For X, Y axes.
MouseSensitivity = "2.00,2.00"
# The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
AnalogDeadzone = "4096,4096"
# An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
AnalogPeak = "32768,32768"
# Digital button configuration mappings
DPad R = ""
DPad L = ""
DPad D = ""
DPad U = ""
Start = ""
Z Trig = ""
B Button = ""
A Button = ""
C Button R = ""
C Button L = ""
C Button D = ""
C Button U = ""
R Trig = ""
L Trig = ""
Mempak switch = ""
Rumblepak switch = ""
# Analog axis configuration mappings
X Axis = ""
Y Axis = ""


[Input-SDL-Control3]

# Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
version = 2
# Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
mode = 2
# Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
device = -1
# SDL joystick name (or Keyboard)
name = ""
# Specifies whether this controller is 'plugged in' to the simulated N64
plugged = False
# Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
plugin = 1
# If True, then mouse buttons may be used with this controller
mouse = False
# Scaling factor for mouse movements.  For X, Y axes.
MouseSensitivity = "2.00,2.00"
# The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
AnalogDeadzone = "4096,4096"
# An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
AnalogPeak = "32768,32768"
# Digital button configuration mappings
DPad R = ""
DPad L = ""
DPad D = ""
DPad U = ""
Start = ""
Z Trig = ""
B Button = ""
A Button = ""
C Button R = ""
C Button L = ""
C Button D = ""
C Button U = ""
R Trig = ""
L Trig = ""
Mempak switch = ""
Rumblepak switch = ""
# Analog axis configuration mappings
X Axis = ""
Y Axis = ""


[Input-SDL-Control4]

# Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
version = 2
# Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
mode = 2
# Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
device = -1
# SDL joystick name (or Keyboard)
name = ""
# Specifies whether this controller is 'plugged in' to the simulated N64
plugged = False
# Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
plugin = 1
# If True, then mouse buttons may be used with this controller
mouse = False
# Scaling factor for mouse movements.  For X, Y axes.
MouseSensitivity = "2.00,2.00"
# The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
AnalogDeadzone = "4096,4096"
# An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
AnalogPeak = "32768,32768"
# Digital button configuration mappings
DPad R = ""
DPad L = ""
DPad D = ""
DPad U = ""
Start = ""
Z Trig = ""
B Button = ""
A Button = ""
C Button R = ""
C Button L = ""
C Button D = ""
C Button U = ""
R Trig = ""
L Trig = ""
Mempak switch = ""
Rumblepak switch = ""
# Analog axis configuration mappings
X Axis = ""
Y Axis = ""


[UI-Console]

# Mupen64Plus UI-Console config parameter set version number.  Please don't change this version number.
Version = 1
# Directory in which to search for plugins
PluginDir = "/home/pi/RetroPie/emulators/mupen64plus-rpi/test/"
# Filename of video plugin
VideoPlugin = "mupen64plus-video-rice.so"
# Filename of audio plugin
AudioPlugin = "mupen64plus-audio-rpi.so"
# Filename of input plugin
InputPlugin = "mupen64plus-input-sdl.so"
# Filename of RSP plugin
RspPlugin = "mupen64plus-rsp-hle.so"


[Video-General]

# Use fullscreen mode if True, or windowed mode if False
Fullscreen = True
# Width of output window or fullscreen width
ScreenWidth = 1280
# Height of output window or fullscreen height
ScreenHeight = 720
# If true, activate the SDL_GL_SWAP_CONTROL attribute
VerticalSync = False


[Video-Rice]

# Frame Buffer Emulation (0=ROM default, 1=disable)
FrameBufferSetting = 0
# Frequency to write back the frame buffer (0=every frame, 1=every other frame, etc)
FrameBufferWriteBackControl = 0
# Render-to-texture emulation (0=none, 1=ignore, 2=normal, 3=write back, 4=write back and reload)
RenderToTexture = 0
# Control when the screen will be updated (0=ROM default, 1=VI origin update, 2=VI origin change, 3=CI change, 4=first CI change, 5=first primitive draw, 6=before screen clear, 7=after screen drawn)
ScreenUpdateSetting = 4
# Force to use normal alpha blender
NormalAlphaBlender = False
# Use a faster algorithm to speed up texture loading and CRC computation
FastTextureLoading = False
# Use different texture coordinate clamping code
AccurateTextureMapping = True
# Force emulated frame buffers to be in N64 native resolution
InN64Resolution = False
# Try to reduce Video RAM usage (should never be used)
SaveVRAM = False
# Enable this option to have better render-to-texture quality
DoubleSizeForSmallTxtrBuf = False
# Force to use normal color combiner
DefaultCombinerDisable = False
# Enable game-specific settings from INI file
EnableHacks = True
# If enabled, graphics will be drawn in WinFrame mode instead of solid and texture mode
WinFrameMode = False
# N64 Texture Memory Full Emulation (may fix some games, may break others)
FullTMEMEmulation = False
# Enable vertex clipper for fog operations
OpenGLVertexClipper = False
# Enable/Disable SSE optimizations for capable CPUs
EnableSSE = False
# Use GPU vertex shader
EnableVertexShader = True
# If this option is enabled, the plugin will skip every other frame
SkipFrame = False
# If enabled, texture enhancement will be done only for TxtRect ucode
TexRectOnly = False
# If enabled, texture enhancement will be done only for textures width+height<=128
SmallTextureOnly = False
# Select hi-resolution textures based only on the CRC and ignore format+size information (Glide64 compatibility)
LoadHiResCRCOnly = True
# Enable hi-resolution texture file loading
LoadHiResTextures = False
# Enable texture dumping
DumpTexturesToFiles = False
# Display On-screen FPS
ShowFPS = True
# Use Mipmapping? 0=no, 1=nearest, 2=bilinear, 3=trilinear
Mipmapping = 0
# Enable, Disable or Force fog generation (0=Disable, 1=Enable n64 choose, 2=Force Fog)
FogMethod = 0
# Force to use texture filtering or not (0=auto: n64 choose, 1=force no filtering, 2=force filtering)
ForceTextureFilter = 2
# Primary texture enhancement filter (0=None, 1=2X, 2=2XSAI, 3=HQ2X, 4=LQ2X, 5=HQ4X, 6=Sharpen, 7=Sharpen More, 8=External, 9=Mirrored)
TextureEnhancement = 0
# Secondary texture enhancement filter (0 = none, 1-4 = filtered)
TextureEnhancementControl = 0
# Color bit depth to use for textures (0=default, 1=32 bits, 2=16 bits)
TextureQuality = 0
# Z-buffer depth (only 16 or 32)
OpenGLDepthBufferSetting = 32
# Enable/Disable MultiSampling (0=off, 2,4,8,16=quality)
MultiSampling = 0
# Color bit depth for rendering window (0=32 bits, 1=16 bits)
ColorQuality = 0
# OpenGL level to support (0=auto, 1=OGL_1.1, 2=OGL_1.2, 3=OGL_1.3, 4=OGL_1.4, 5=OGL_1.4_V2, 6=OGL_TNT2, 7=NVIDIA_OGL, 8=OGL_FRAGMENT_PROGRAM)
OpenGLRenderSetting = 0
# Enable/Disable Anisotropic Filtering for Mipmapping (0=no filtering, 2-16=quality). This is uneffective if Mipmapping is 0. If the given value is to high to be supported by your graphic card, the value will be the highest value your graphic card can support. Better result with Trilinear filtering
AnisotropicFiltering = 0
# If this option is enabled, the plugin will only draw every other screen update
SkipScreenUpdate = False
Any ideas on what I can do to fix it? I have the Pi OC to 900MHz and 128MB dedicated to the GPU.

Return to “Gaming”