Buenas!
Subo el hilo con otro update. Tengo ya el sistema casi terminado al 100%, por lo que he decidido hacer un pequeño vídeo de prueba en el que se vea el estado final del mismo, la salida RCA en una televisión de 14" y como funcionan diversos mandos, tanto replicas USB como oficiales de Sega.
El video lo teneis aqui:
https://www.youtube.com/watch?v=DSTjcQOpoIkEmmmm, soy un negado en lo que a producción de vídeo se refiere. El audio se escucha bajo (grabado a las 2 am con el niño dormido...) y la cámara me bailaba el brillo. Podéis darle al mute que no os perdéis nada.
Estoy empezando a hacer el artículo de la wiki, donde pegaré los scripts que he hecho para que funcione el botón reset y demas.
Por si los necesitais:
/etc/rc.local
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sudo bash /home/pi/RetroPie/resetscripts/mastersystem.sh &
exit 0
mastersystem.sh
#!/bin/bash
sudo python /home/pi/RetroPie/resetscripts/mastersystem.py &
mastersystem.py
import RPi.GPIO as GPIO
import time
import os
GPIO.setmode(GPIO.BCM)
GPIO.setup(20, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
input_state = GPIO.input(20)
input_state2 = GPIO.input(10)
input_state3 = GPIO.input(11)
time.sleep(0.1)
if input_state == False:
GPIO.setup(14, GPIO.OUT, pull_up_down=GPIO.PUD_DOWN)
GPIO.output(14, 1)
time.sleep(0.1)
GPIO.output(14, 0)
time.sleep(0.1)
if input_state2 == False:
if input_state3 == False:
os.system("mupen=$(ps a | grep mupen | cut -d \" \" -f2 | head -1); kill -2 \"$mupen\"")
os.system("retro=$(pidof retroarch); kill -2 \"$retro\"")
Lo que hace este ultimo es valorar tres pines GPIO. Dos de ellos son los botones 1 y 2 de un joystick de 3 botones (como el mando de Master + el pausa) y el otro el tercer boton, que esta cableado al interruptor de reset de la Megadrive. Si se pulsan a la vez los tres, cierra el emulador. Si solo se pulsa el reset hace la funcion de boton de pausa (hay que configurarlo como una tecla mas en RetroPie).
Para añadir un menu para cambiar entre mandos de 3 y 6 botones de Mega y el de Master, añadid al archivo /etc/emulationstation/es_systems.cfg el siguiente sistema:
<system>
<name>padconfigmenu</name>
<fullname>Pad Config Menu</fullname>
<path>/home/pi/padconfigmenu</path>
<extension>.sh</extension>
<command>sudo bash %ROM%</command>
<theme>pc</theme>
</system>
Cread la carpeta "padconfigmenu" en el directorio home (/home/pi) e incluid los siguientes archivos:
P1_3_Buttons_P2_3_Buttons.sh
P1_3_Buttons_P2_6_Buttons.sh
P1_2_Buttons_P2_2_Buttons.sh
P1_6_Buttons_P2_2_Buttons.sh
P1_2_Buttons_P2_3_Buttons.sh
P1_6_Buttons_P2_3_Buttons.sh
P1_2_Buttons_P2_6_Buttons.sh
P1_6_Buttons_P2_6_Buttons.sh
P1_3_Buttons_P2_2_Buttons.sh
Esto es lo que incluye por ejemplo P1_2_Buttons_P2_6_Buttons.sh:
modprobe -r db9_gpio_rpi
modprobe db9_gpio_rpi map=3,6
Lo que va cambiando son los numeros del final. El primero es el pad del jugador 1 y el segundo el del jugador 2.
3 = Pad de Master System
4 = Pad de 3 botones de Megadrive (ensaimada)
6 = Pad de 6 botones de Megadrive (croissant)
Como siempre contestare dudas o sugerencias o lo que sea.
Saludos!