#acl FreaknetGroup:read,write,admin,delete,revert All:read

= Mamestation =

Vedi anche [[Museo/RaspberrySetup]]

Realizzazione di una mini console per giochi emulati MAME, a scopo esposizione o autofinanziamento utilizzando Raspberry PI, joystick e tasti

 * Punto di partenza: https://learn.adafruit.com/retro-gaming-with-raspberry-pi/overview
 * Distro provata: RetroPie http://blog.petrockblock.com/retropie/


== Note tecniche RetroPie ==

File di config utili:

 * /etc/profile

qui dentro, per decidere cosa far partire:

{{{
#[ -n "${SSH_CONNECTION}" ] || emulationstation # lancia la stazione con tutti gli emulatori x giocare
#[ -n "${SSH_CONNECTION}" ] || /home/pi/asteroida # lancia asteroids come gioco mame
[ -n "${SSH_CONNECTION}" ] || /home/pi/nessa # lancia super mario clouds
#[ -n "${SSH_CONNECTION}" ] II /home/pi/ponta # lancia emulatore giochi pontaccio
}}}

 * /home/pi/asteroida

serve a far partire mame con asteroid:

{{{
#!/bin/bash
/opt/retropie/emulators/mame4all-pi/mame asteroid
}}}

 * /home/pi/nessa

serve a far partire gioco NES / installazione super mario clouds

{{{
#!/bin/bash
/opt/retropie/emulators/RetroArch/installdir/bin/retroarch -L /opt/retropie/emulatorcores/fceu-next/fceumm-code/fceumm_libretro.so --config /opt/retropie/configs/all/retroarch.cfg --appendconfig /opt/retropie/configs/nes/retroarch.cfg /home/pi/RetroPie/roms/nes/SuperMarioClouds.nes
}}}

== VICE Emulatore C64 per giochi Pontaccio ==

da dentro Retropie-setup:

 * prima installi il pacchetto vice da retropie_packages.sh
 * poi installi i BINARI (opzione 1) da retropie_setup.sh

cosi' ti trovi l'emulatore che funziona ma va lanciato a mano:

Il menu di gestione dell'emulatore si apre con F12. da qui gli dici di emulare un mouse, e magicamente il cursore sparisce (!!!). Poi devi dargli save configuration.

=== ti da' segmentation fault? ===

devi lanciarlo con opzione -sdlbitdepth 16 altrimenti con 32 segfaulta. ;)

=== Preparazione giochi ===

 * Attacca il tape all'emulatore da menu (Attach tape) clickando sul loader del gioco, cosi lui carica e lancia
 * Appena lanciato crea snapshot sotto forma di file .vsf ;)

=== Lanciare emulatore COMMODORE 64 su raspberry ===

{{{
/opt/retropie/emulators/vice-2.4/installdir/bin/x64 -sdlbitdepth 16 -1 /home/pi/pontaccio/superg4/SUPERG_4.tap -autostart /home/pi/pontaccio/superg4/mani.vsf 
}}}

=== file di autoavvio pontaccio, da lanciare dentro /etc/profile ===

Si chiama "ponta" e sta in /home/pi/ 

{{{
#!/bin/bash
#
# asbesto 11/8/2014 aklab
#

ritardo=5m
comando="/opt/retropie/emulators/vice-2.4/installdir/bin/x64"
opzione="-sdlbitdepth 16"
nascondi=" 1>/dev/null 2>/dev/null &"
#
nastro1="/home/pi/pontaccio/superg1/superg1.tap"
snapshot11="/home/pi/pontaccio/superg1/cactus.vsf"
snapshot12="/home/pi/pontaccio/superg1/flags.vsf"
snapshot13="/home/pi/pontaccio/superg1/lifts.vsf"
#
nastro2="/home/pi/pontaccio/superg4/superg4.tap"
snapshot21="/home/pi/pontaccio/superg4/alfabetopazzo.vsf"
snapshot22="/home/pi/pontaccio/superg4/ammazzamedia.vsf"
snapshot23="/home/pi/pontaccio/superg4/compleanno.vsf"
snapshot24="/home/pi/pontaccio/superg4/mani.vsf"
#
nastro3="/home/pi/pontaccio/superg5/superg5.tap"
#
snapshot31="/home/pi/pontaccio/superg5/jessica.vsf"
snapshot32="/home/pi/pontaccio/superg5/superg.vsf"
#
sleppa="sleep 2m"


$comando $opzione -1 $nastro1 -autostart $snapshot11 &
$sleppa ; killall x64
$comando $opzione -1 $nastro1 -autostart $snapshot12 &
$sleppa ; killall x64 
$comando $opzione -1 $nastro1 -autostart $snapshot13 & 
$sleppa ; killall x64 

$comando $opzione -1 $nastro2 -autostart $snapshot21 &
$sleppa ; killall x64
$comando $opzione -1 $nastro2 -autostart $snapshot22 &
$sleppa ; killall x64 
$comando $opzione -1 $nastro2 -autostart $snapshot23 & 
$sleppa ; killall x64 
$comando $opzione -1 $nastro2 -autostart $snapshot24 &
$sleppa ; killall x64

$comando $opzione -1 $nastro3 -autostart $snapshot31 &
$sleppa ; killall x64 
$comando $opzione -1 $nastro3 -autostart $snapshot32 & 
$sleppa ; killall x64 

sleep 10
/home/pi/ponta 


#/opt/retropie/emulators/vice-2.4/installdir/bin/x64 -sdlbitdepth 16 \
#-1 /home/pi/pontaccio/superg4/SUPERG_4.tap \
#-autostart /home/pi/pontaccio/superg4/mani.vsf &
}}}

BRUTALE, ma fa.

== Joypad USB con piu' di sei tasti ==

Problema: http://blog.petrockblock.com/forums/topic/mame4all-pi-with-ps3-controller/#post-7163

MAME va ricompilato: 

{{{
There was a issue raised at mame4all-pi repository that resolved the problem. Apparently there is code that rejects controllers with more than 6 axes. Here is what I did. In a terminal, type

sudo nano home/pi/RetroPie/emulators/mame4all-pi/src/rpi/minimal.cpp

Comment out lines 168 to 174 so it appears as below.
//	if (SDL_JoystickNumAxes(myjoy) > 6)
//	{
//		SDL_JoystickClose(myjoy);
//		myjoy=0;
//		logerror("Error detected invalid joystick/keyboard\n");
//		break;
//	}

Save and exit.

Next you need to recompile the code so type in the terminal.

cd home/pi/RetroPie/emulators/mame4all-pi/
make

Reboot and your PS3 controller should now work.
}}}


=== Configurazione Joypad ===

Per configurare il joypad devi farlo sia dai menu di emulationstation, sia da MAME premendo TAB. e' un macello ma poi funziona tutto, compresi insert coin e 1 player start. 

== Emulazione tastiera tramite contatti GPIO su raspberry ==

Serve per avere dei pulsanti esterni che corrispondono a tasti sulla tastiera, senza doverne collegare o modificare una. 

=== Il programmino ===

E' retrogame.c in allegato che si trova in fondo alla pagina nel pacchetto retrotasti.tar.gz. Li i tasti sono programmati cosi:

{{{
   ioStandard[] = {
        // This pin/key table is used when the PiTFT isn't found
        // (using HDMI or composite instead), as with our original
        // retro gaming guide.
        // Input   Output (from /usr/include/linux/input.h)
        // usiamo i gpio in sequenza numerica, non a cazzo. 
        // codice colori come le resistenze. 
        //  GND cavetto NERO. 
        {   2,     KEY_LEFT     },   //  marrone Joystick (4 pins)
        {   3,     KEY_RIGHT    },   //  rosso
        {   4,     KEY_DOWN     },   //  arancio
        {   7,     KEY_UP       },   //  giallo
        {   8,     KEY_LEFTCTRL },   //  verde A/Fire/jump/primary
        {   9,     KEY_LEFTALT  },   //  blu B/Bomb/secondary
        {  10,     KEY_SPACE    },   //  viola C/SPACE/BUTTON 3 
        {  11,     KEY_1        },   //  grigio START joy START 
        {  17,     KEY_5        },   //  bianco COIN 
        {  18,     KEY_ESC      },   //  altro nero, joy SELECT 
        // For credit/start/etc., use USB keyboard or add more buttons.
        {  -1,     -1           } }; // END OF LIST, DO NOT CHANGE
}}}

Schema dei collegamenti:

{{http://zaverio.com/~asbesto/gaming_gpio-rev2-new.png}}

=== Configurazione per udev di merda ===

Va creato il file /etc/udev/rules.d/10-retrogame.rules con dentro:

{{{
SUBSYSTEM=="input", ATTRS{name}=="retrogame", ENV{ID_INPUT_KEYBOARD}="1"
}}}

=== start automatico del gestore dei tasti esterni ===

retrogame eseguibile va compilato ("make retrogame" da dentro la cartella del pacchetto retrotasti.tar.gz), poi va lanciato in automatico aggiungendo a /etc/rc.local, prima di "exit 0", la seguente riga:

{{{
/home/pi/Adafruit-Retrogame/retrogame &
}}}

basta riavviare e tutto deve funzionare a dovere. 

I tasti configurati in retrogame.c sono 1, 5, control sinistro, alt sinistro, spazio, esc, e le 4 freccette. Questi tasti vanno configurati a loro volta dentro MAME e dentro, eventualmente, gli altri emulatori. 


== Lasciare solo UN emulatore (mame) o disabilitarne alcuni dalla lista di emulationstation ==

si deve editare es_systems.cfg che sta in /etc/emulationstation/ CANCELLANDO (non commentando!) quelli non voluti.

Prima fatti una copia di sicurezza! :)

{{{
root@raspberrypi:/etc/emulationstation# ls -la
total 64
drwxr-xr-x   3 root root  4096 Aug 14 10:16 .
drwxr-xr-x 101 root root  4096 Aug 14 09:57 ..
-rwxr-xr-x   1 root root 15279 Aug 14 10:16 es_systems.cfg
-rw-r--r--   1 root root 16420 Aug 14 10:14 es_systems.cfg.originale
}}}

== Problema Bianco e Nero se connesso a tv/monitor ==

Succede perche' va a 60 Hz anziche' 50. C'e' un settaggio da toccare in /boot/config.txt, e' abbastanza intuitivo, riguarda PAL. 

== Allegati ==

 * http://zaverio.com/~asbesto/retrotasti.tar.gz
 * http://zaverio.com/~asbesto/gaming_gpio-rev2-new.png
 * http://zaverio.com/~asbesto/retrogame.c



----
CategoryMuseo