N64 - Nintendo 64. Emulador mupen64plus

De wikijoan
Salta a la navegació Salta a la cerca

Introducció

video amb la RPi 3:

Emulador: mupen64plus:

Mupen64Plus is a cross-platform plugin-based N64 emulator which is capable of accurately playing many games. Included are four MIPS R4300 CPU emulators, with dynamic recompilers for 32-bit x86 and 64-bit amd64 systems, and necessary plugins for audio, graphical rendering (RDP), signal co-processor (RSP), and input.

Com els altres emuladors, és important que funcioni des de la consola, sense les X:

It will run in XWindows, although for the best results run in Console (as with ALL emulators!), this also has the advantage of running in fullscreen and at a higher resolution with no detrimental effect on performance.

Instal.lació1 (no funciona)

NOTA. La prova la vaig fer amb RPi2. La clau per tal de què compili és instal.lar correctament des de les fonts la SDL2.

I per instal.lar-ho a la RPi:

git clone https://github.com/ricrpi/mupen64plus
cd mupen64plus
./build.sh
sudo ./install.sh
$ cd mupen64plus/
pi@raspberrypi ~/mupen64plus $ ./build.sh 
You should install the GCC 4.7 compiler
Either run this script with sudo/root or run 'apt-get install gcc-4.7'

You should install the G++ 4.7 compiler
Either run this script with sudo/root or run 'apt-get install g++-4.7'

...
Makefile:158: *** Mupen64Plus API header files not found! Use makefile parameter APIDIR to force a location..  Stop.

*https://www.raspberrypi.org/forums/viewtopic.php?t=58395&p=715393
a la consola fem:
APIDIR=/home/pi/mupen64plus/ricrpi/mupen64plus-core/src/api
i continuem
./build.sh

mupen64plus utilitza SDL 2.0
gpu_mem not set in /boot/config.txt -> seria interessant mirar aquesta opció


                set APIDIR="../../../../$repository/mupen64plus-core/src/api"
set APIDIR="/home/pi/mupen64plus/ricrpi/mupen64plus-core/src/api"


For the time being, I simply copied the contents of the ricrpi folder into the mupen64plus folder, ran build.sh (again), it built everything, then did sudo ./install.sh, and it installed everything.

make: Entering directory '/home/pi/mupen64plus/mupen64plus/mupen64plus-ui-console/projects/unix' -> en aquest directori hu ha un Maakefile
Makefile:158: *** Mupen64Plus API header files not found! Use makefile parameter APIDIR to force a location..  Stop.

APIDIR="/home/pi/mupen64plus/mupen64plus-core/src/api"   


Makefile:173: No libspeexdsp development libraries found.  Mupen64plus-sdl-audio will be built without speex-* resampler.
Makefile:190: No libsamplerate development libraries found.  Mupen64plus-sdl-audio will be built without src-* resampler.
Makefile:251: *** Mupen64Plus API header files not found! Use makefile parameter APIDIR to force a location..  Stop.

sudo apt-get install libspeexdsp-dev
sudo apt-get install libspeexdsp-dev

make: Entering directory '/home/pi/mupen64plus/mupen64plus/mupen64plus-audio-sdl/projects/unix'
Makefile:251: *** Mupen64Plus API header files not found! Use makefile parameter APIDIR to force a location..  Stop.

joe /home/pi/mupen64plus/mupen64plus/mupen64plus-audio-sdl/projects/unix/Makefile
APIDIR="/home/pi/mupen64plus/mupen64plus-core/src/api" 


make: Entering directory '/home/pi/mupen64plus/mupen64plus/mupen64plus-input-sdl/projects/unix'
Makefile:171: *** Mupen64Plus API header files not found! Use makefile parameter APIDIR to force a location..  Stop.
joe /home/pi/mupen64plus/mupen64plus/mupen64plus-input-sdl/projects/unix/Makefile
APIDIR="/home/pi/mupen64plus/mupen64plus-core/src/api" 

make: Entering directory '/home/pi/mupen64plus/ricrpi/mupen64plus-video-gles2n64/projects/unix'
make: pu=neon: No such file or directory
make: *** No rule to make target 'pu=neon'.  Stop.

Remove the "OPTFLAGS=-flto -mfpu=neon" from RaspbianList_Pi2:
https://www.raspberrypi.org/forums/viewtopic.php?t=58395&p=739322

Finalment compila. Per instal.lar-ho:

$ ./install.sh

i queda instal.lat a /usr/local/bin/mupen64plus:

$ mupen64plus

protesta perquè no li especifico cap rom

$ mupen64plus /home/pi/roms/Super_Mario_64.rom

i ara ja arrenca, però amb les tecles del teclat no puc fer res, ni Start i soritr del joc.

Configuració

El fitxer de configuració és:

~/.config/mupen64plus/mupen64plus.cfg

D'entrada fico:

[Video-General]
# Use fullscreen mode if True, or windowed mode if False
Fullscreen = True

En el fitxer de configuració veig que aturar l'emulador està associat al ESCAPE: (SDL_keysym.h: SDLK_ESCAPE = 27)

[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

però a mi el teclat no em funciona.

No funciona ni el teclat ni el so. La captura de la inforamció quan arrenco l'emulador posa:

...
UI Console: using Video plugin: 'Mupen64Plus OpenGL video plugin by Rice' v2.0.0
UI Console: using Audio plugin: 'Mupen64Plus SDL Audio plugin' v2.5.0
Input: using auto-config file at /usr/local/share/mupen64plus/InputAutoCfg.ini
...
Input: 0 SDL Joysticks were found
Input: N64 Controller #1: Forcing default keyboard configuration
...
Input: 1 controller(s) found, 1 plugged in and usable in the emulator
...

També és important el fitxer de configuració InputAutoCfg.ini:

/usr/local/share/mupen64plus/InputAutoCfg.ini

A partir dels missatges d'entrada veig que no reconeix cap dispositiu Keyboard, i per tant és normal que no funcioni.

Instal.lació 2 (setembre 2016)

Partim d'una Rasbian neta

Descarrego el Raspbian Jessie Lite

La idea és fer una intal.lació a partir de zero:

TODO:

  • deshabilitar bluetooth
  • deshabilitar wifi
  • quadret d'energia
  • video de presentació

Paquets previs a instal.lar:

$ sudo apt-get update
$ sudo apt-get install joe
$ sudo apt-get install git
$ sudo apt-get install build-essential (no cal)
$ sudo apt-get install gcc-4.7
$ sudo apt-get install g++-4.7
$ sudo apt-get install libsdl2-dev
$ sudo apt-get install libsdl1.2-dev

Coses que he de fer prèviament:

  • configuració del teclat (change keyboard layout dins de internationalization options del raspi-config)
  • que no demani login i pwd en l'inici. Raspi-config > boot options
  • network on boot: disabled. Ha de ser així? o ho hauré de deshabilitar al final?
  • Advanced Options > A3 Memory Split: de moment ho deixo en 64, valor per defecte -> ho canvio a 128, doncs a mi el que em preocupa són els gràfics de mupen64plus.
  • overclock -> no hi ha overclock a la RPi3. Sí que n'hi ha. Editem el fitxer /boot/config.txt i es pot canviar de 1200 a 1400. Tanmateix, a la RPi3 és important tenir una bona font d'alimentació i potser també heatsink. Davant del dubte, millor no fer overclock.

Instal.lació mupen64plus

./build.sh
make: Entering directory '/home/pi/mupen64plus/mupen64plus/mupen64plus-ui-console/projects/unix'
Makefile:158: *** Mupen64Plus API header files not found! Use makefile parameter APIDIR to force a location..

For the time being, I simply copied the contents of the ricrpi folder into the mupen64plus folder, ran build.sh (again), it built everything, then did sudo ./install.sh, and it installed everything.

$ cd ~/mupen64plus/mupen64plus
$ cp -R ricrpi/* mupen64plus/

i continuem

./build.sh
SDL2 is missing the Raspberry PI Driver. You will not be able to run mupen64plus in the console. -> fixar-se en aquesta línia, perquè serà clau. Hauré d'instal.lar correctament SDL2.

make: pu=neon: No such file or directory
make: *** No rule to make target 'pu=neon'.  Stop.

Remove the "OPTFLAGS=-flto -mfpu=neon" from RaspbianList_Pi2:
https://www.raspberrypi.org/forums/viewtopic.php?t=58395&p=739322

i ara ja compila, i podem instal.lar

./install.sh

Per executar:

$ mupen64plus /home/pi/roms/n64/Super_Mario_64.rom

però no arrenca l'emulador:

mupen64plus 
SDL video subsystem init failed. no available video device

El videoplugin que s'utilitza està en el fitxer de configuració:

[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 = "./"
# Filename of video plugin
VideoPlugin = "mupen64plus-video-rice.so"

canvio per VideoPlugin = "mupen64plus-video-n64.so"

ara arrenca i se sent el soroll del joc, però encara no es veu res.

$ man mupen64plus

Els video plugins estan ben instal.lats a /usr/local/lib/mupen64plus/:

mupen64plus-video-rice.so
mupen64plus-video-n64.so

Però recordem que deia:

$ ./build.sh 
SDL2 is missing the Raspberry PI Driver. You will not be able to run mupen64plus in the console.

Miro de compilar directament SDL2 des de les fonts, seguint:

$./build.sh

i bona notícia, ara ja no diu el missatge de SDL2 is missing...

...
SDL2 2.0.4 located at /usr/local
...

I ara després del build, torno a instal.lar:

$ sudo ./install.sh

i finalment ja funciona, té so, i també funciona el teclat que no havia aconseguit funcionar i que m'havia donat tants maldecaps en la primera instal.lació. Per tant, la clau ha estat en compilar SDL2 des de les fonts. Tinc la versió SDL2 2.0.4

A més a més, també puc instal.lar altres paquets de SDL2, i compilar un petit projecte (mirar el link)

The packages are located at http://www.libsdl.org/projects/

SDL2_image-2.0.0 - bmp is built in but you need this for jpg, png etc.
SDL2_mixer-2.0.0 - audio support
SDL2_net-2.0.0 - network support
SDL2_ttf-2.0.12 - trutype font support
SDL_rtf-0.1.0 - rich text format support

TODO: fer una entrada per compilar SDL2

Tinc dos video plugins que puc utilitzar:

[UI-Console]
VideoPlugin = "mupen64plus-video-rice.so"

[UI-Console]
VideoPlugin = "mupen64plus-video-n64.so"

Hauré de mirar quin pluguin utilitzar, o més aviat, segons quin joc utilitzar-ne un o l'altre.

El mupen64plus-video-n64.so té menys resolució, i per tant en principi ha d'anar més lleuger. Des de la línia de comandes hauré de cridar a un videoplugin o a l'altre en funció de la performance.

Aquí hi ha un article sobre performance a N64

Llista de jocs que haurien de funcionar (WIP):

ROMs que funcionen correctament i són jugables

Jocs que he provat, tot fent proves de la performance

  • Mario Kart 64. Molt bé amb n64, no tan bé amb rice
  • F1_World_Grand_Prix. n64, correcte. revisar. bona jugabilitat
  • Rally Challenge. rice, però no hi ha manera de què es vegi el cotxe complet, ni amb rice ni amb n64. Però el cotxe va bastant suelto.
  • Super Mario 64. rice. correcte
  • Top Gear Rally. Amb rice va molt lent. Amb n64 es penja
TODO
*RAM Split - At least 64MEG to the GPU
*Mirar aspectes com la resolució: Change values to alter output resolution, 320x240 is the original hardware res (in most cases), and up to 1024x768 has a minimal impact on performance (1-2% when running from Console)
*Some people might be interested to know(I was certainly pleased) Harvest Moon 64 runs flawlessly. With just
Code: Select all
    ScreenUpdateSetting = 4
and
Code: Select all
    NormalAlphaBlender = True

ROMs

Descàrrega de roms:


creat per Joan Quintana Compte, juliol 2016, setembre 2016