Emulador PiSNES a la RPi (SNES)

De wikijoan
Salta a la navegació Salta a la cerca

Introducció

Instal.lació

En aquest enllaç ja ve precompilat. Però com es comenta més avall, no té suport per a dos jugadors. I per tant hi ha disponible una modificació i s'ha de tornar a compilar.

Instal.lació per a 2 jugadors

Com es comenta a:

A la rpi

mkdir pisnes2p -> hi fico tot el codi
make
...
/usr/bin/ld: unix/unix.o: undefined reference to symbol 'clock_gettime@@GLIBC_2.4'
//lib/arm-linux-gnueabihf/librt.so.1: error adding symbols: DSO missing from command line

en el Makefile, afegeixo a CFLAGS:
-lrt (una ela, no una i)

i encara s'han d'afegir més llibreries:

/usr/bin/ld: dsp1.o: undefined reference to symbol 'tan@@GLIBC_2.4'
//lib/arm-linux-gnueabihf/libm.so.6: error adding symbols: DSO missing from command line

-lm

/usr/bin/ld: unix/unix.o: undefined reference to symbol 'snd_pcm_close@@ALSA_0.9'
//usr/lib/arm-linux-gnueabihf/libasound.so.2: error adding symbols: DSO missing from command line

-lasound

ROMs

Snapshots de les ROMs

En aquesta direcció hi ha molts recursos per descarregar, snapshots de les diferents consoles.

Registre:

  • username: joanillo
  • joanqc@gmail.com
  • jq****

Resolució 640x480

Configuració

Next you are going to use your controller and follow the prompts. If your controller has less buttons than the config tries to setup (My SNES controllers lack the R2/L2, R3/L3, and Joysticks), then you need to select a dummy button (I used left trigger) for the buttons you don’t have. We will edit those out later (llegir-ho tot...). Once this is done, it will bring you back to the terminal.

rom descarregada d'aquí:

Descarrego les ROMs d'aquesta web. El problema està en què la rom està comprimida en format .7z. Descomprimeixo i torno a comprimir en format zip (que no quedin els fitxers dins una carpeta). I aleshores ja funciona:

$ ./snes9x roms Super\ Mario\ Bros.zip

Si renombro el fitxer de manera que no tingui espais en blanc, també funciona. Per ex,

$ ./snes9x roms supermariobros.zip

Si ens fixem, aquestes ROMs contenen molts fitxers a dins. En canvi, la rom que he descarregat de Emuparadise (http://www.emuparadise.me/Super_Nintendo_Entertainment_System_%28SNES%29_ROMs/5) no funciona (dins del zip només hi ha un fitxer en format sfc).

Si vull ficar les roms en el directori estàndar /home/pi/roms/pisnes, com que pisnes m'obliga a què pengi del director roms/ de la instal.lació, faig un soft link:

ln -s /home/pi/roms/snes/ /home/pi/pisnes/roms (primer de tot elimino la carpeta /home/pi/pisnes/roms)

Ara:
$ ls /home/pi/pisnes/roms
Super Double Dragon.7z
Super Mario Kart (E).sfc
...
però els fitxers realment estan a /home/pi/roms/pisnes

Quantes ROMs hi ha?

The US library is in the 700's. But when you factor in Super Famicom and SNES PAL games, there are easily well over 1,500.

Que representen uns 6GB d'informació.

Convertir molts fitxers .7z to zip. There is an easier way that I just figured out. Try installing atool. Available in the *buntu and Mint repos, or here : *http://www.nongnu.org/atool/

Sample Code:

arepack -e --format={NEWFORMAT} *.{OLDFORMAT}
$ sudo apt-get install atool
$ arepack -e --format=zip *.7z

$ scp *.zip  pi@192.168.1.35:/home/pi/pisnes/roms

Per reemplaçar els espais en blanc per _

for f in *\ *; do mv "$f" "${f// /_}"; done

Resum

Tinc vàries fonts de les roms, i bàsicament funcionen totes. El format .7z no funciona, però el que s'ha de fer és descomprimir i tornar a comprimir amb zip.

La font més grossa de ROMs són els 3 arxius SNES.complete.romset.(No-Intro.dat.2005-07-17).[-#-H].7z (que contenen entre els 3 un total de 5G). Faré servir aquests, que són arxius .sfc. Però he de filtrar doncs molts d'ells estan repetits (agafaré preferentment l'opci-o (E), i també s'han de renombrar. D'entrada el que faig és carregar-me tots els que són (J).

Millors jocs

Els millors jocs de SNES: (per ordre)

The Legend of Zelda: A Link To The Past
Super Mario World
Super Mario Kart
Donkey Kong Country
Super Metroid
Chrono Trigger
Super Mario RPG
Mega Man X
Star Fox
Donkey Kong Country 2
Final Fantasy VI
Turtles in Time
Street Fighter II: Turbo
Super Mario World 2: Yoshi's Island
Mortal Kombat II
Final Fantasy IV
Mortal Kombat
Earthworm Jim
Super Castlevania IV 
Secret of Mana
F-Zero
Kirby's Dream Land 3
Earthworm Jim 2 
Earthbound
Contra III: The Alien Wars

Altres (llibre):

ActRaiser
Pilotwings
Super Tennis
The Legend of the Mystical Ninja
Pinball Dreams
Cybernator
Axelay
Plok
Breath of Fire II
Unirally
Super Punch-Out!!
Chrono Trigger
Harvest Moon
Donkey Kong Country 3

'up arrow'       Up direction
'down arrow'     Down direction
'left arrow'     Left direction
'right arrow'    Right direction
's'              X button
'x'              Y button
'd'              A button
'c'              B button
'a'              TL button
'f'              TR button
'return'         Start button
'tab'            Select button
'backspace'      Turbo
'escape'         Quit
F1-F4            Quickload 1-4
Shift F1-F4      Quicksave 1-4

The joystick layout defaults to Saitek P380 button layout.

Additionally to quit with the joystick you can press SELECT+START.

All controls are configurable by editing the "snes9x.cfg" file. 

    ---TL---           ---TR---

        ^                      X
        |
     <-   ->            Y     A
        |       /  /
        v                  B

SNES no té botons de COIN/CREDIT. En canvi té els botons de SELECT i START
*https://es.answers.yahoo.com/question/index?qid=20120322202149AA1KnTt
Por lo general estan acomodados 3 arriba y 3 abajo, los de arriba son Golpes: Débil, Medio y Fuerte y los de abajo Patadas Débil, Media y Fuerte:

Sería algo así:

GD - GM - GF
PD - PM - PF

G = Golpe, P= Patada. En Sner si mal no recuerdo los botones quedan así:

Y = GD
X = GM
L = GF

B = PD
A = PM
R = PF

Las máquinas de Arcade de KI originales NO traen botones A,B,C,D,E,F. Ni siquiriera el NeoGeo el cual solo trae A,B,C,D. 

Fixar-se que a SNES no hi ha botó de crèdit, i tampoc es distingeix entre 1player, 2 player

Botons

pisnes/snes9x.cfg:

[Keyboard]
# Get codes from /usr/include/SDL/SDL_keysym.h
A_1=51
B_1=52
X_1=54
Y_1=55
L_1=53
R_1=56
START_1=49 
SELECT_1=50
LEFT_1=276 
RIGHT_1=275
UP_1=273  
DOWN_1=274
QUIT=48
ACCEL=8

Però no admet 2 jugadors. Però la solució està aquí:

i per tant SNES serà un emulador que s'ha d'implementar en les màquines de 2 jugadors.

Configuració 2 jugadors: (pisnes2p/snes9x.cfg)

[Keyboard]
# Get codes from /usr/include/SDL/SDL_keysym.h
A_1=51
B_1=52
X_1=54
Y_1=55
L_1=53
R_1=56
START_1=49 
SELECT_1=50
LEFT_1=276 
RIGHT_1=275
UP_1=273  
DOWN_1=274
QUIT=48
ACCEL=8

#player 2 keyboard controls
A_2=97     
B_2=98     
X_2=100    
Y_2=101    
L_2=99     
R_2=102    
START_2=57 
SELECT_2=50
LEFT_2=106 
RIGHT_2=108
UP_2=105  
DOWN_2=107

creat per Joan Quintana Compte, febrer 2015