Como hacerte una consola de emulacion con una Raspberry Pi 2

En construcción.png

Este artículo está en construcción.

Por esta razón, seguramente habrá lagunas en el contenido o en el formato. Por favor, antes de cambiar el contenido, consulta la página de discusión del artículo.

Logo Consola Emulacion.png

Contenido

Introducción

¿Has tenido ganas de hacerte tu propia consola multi-emulador y no sabes como?
Si es así, en este tutorial vamos a ver como podemos hacerlo insertando una Raspberry Pi 2 en las tripas de una Megadrive. Huelga decir que la consola va a quedar inutilizada, por lo que te recomiendo encarecidamente que uses una consola rota o defectuosa. Cuando termines, tendras tu propia consola multi-emulador, con compatibilidad total con los mandos originales, salidas HDMI y RCA, puerto de audio delantero funcional, un HUB USB para conectar lo que quieras, conexión de red local y wifi, reproductor multimedia y, como bonus, el botón de reset tendrá la función del botón pausa de la Master System de forma que puedas usar los mandos originales.

El proyecto esta inspirado en este video de youtube:

https://www.youtube.com/watch?v=ylhp34hBoW8


Control de cambios

Editado: 09/01/2016 - Añadido nuevo video - Mandos oficiales, replicas y salida RCA: https://www.youtube.com/watch?v=DSTjcQOpoIk

Editado: 10/09/2015 - Añadido nuevo video (Juegos de Dreamcast y N64): https://www.youtube.com/watch?v=SlyAtYzeOOc&feature=youtu.be

Editado: 07/09/2015 - Añadido nuevo video: http://youtu.be/wQc6yfqUQtA

Editado: 06/09/2015 - Añadida seccion 4 -> Fixes varios


Materiales necesarios

- Una carcasa de Megadrive, preferentemente de una Megadrive rota o irrecuperable (gracias a Pato que me vendió la suya).

- Una placa de Megadrive en la que por lo menos estén operativos los contactos de los conectores db9 de los mandos, los del botón de encendido y reset, la salida de audio, la entrada de corriente AC y el led de encendido.

- Una Raspberry Pi 2

- Una MicroSD de mínimo 4 GB

- Un cable USB a mini-USB

- Un HUB USB alimentado

- Un cable HDMI y un conector hembra-hembra

- Un cable de RCA a jack (de los que parecen de audio pero tienen tres anillas negras)

- Un convertidor de audio RCA a jack

- Splitters de conectores RCA (en principio 2)

- Un latiguillo de cable UTP Cat5

- Una roseta de RJ-45 (cogeremos la pieza interior)

- Cableado y clemas para las soldaduras

- Conectores para conectar los cables a los GPIO de la Raspberry (yo use unos faston hembra aislados con cinta porque soy un ansias)

- Una resistencia de 220 Ohmnios

- Un conector (jack) de potencia de 2,1 mm

- Pegamento, bridas, cinta aislante...

- Un soldador de electrónica

- Una Dremel o similar

- Una pistola de pegamento caliente (3€ en un chino)

- Software diverso (que detallaremos mas adelante)


Hardware

En esta sección vamos a detallar todo lo que le tendremos que hacer a nuestra consola para dejarla a punto.

Preparando la carcasa y la placa

Vamos a empezar con el montaje. Por desgracia no he hecho suficientes fotos durante el proceso, así que vais a tener que fiaros de mis descripciones.
Lo primero que vamos a hacer es cortar la placa de la Megadrive para quedarnos solo con lo que nos interesa. Para ello abrimos la consola, quitamos los protectores metálicos anti-interferencias superior e inferior (necesitaremos ese espacio) y sacamos la placa con cuidado de que el conector de potencia, audio y el led de encendido no se arranquen por un tirón mal dado. Este ultimo sale con facilidad si enderezáis las patillas del led.
Tras esto, trazáis una linea con rotulador por donde vais a cortar, ponéis en la Dremel un disco para materiales plásticos (me ha dado buenos resultados) y hacéis el corte. Os quedara algo asi:

Placa Cortada Megadrive Raspberry Frontal.jpg

A continuación le damos la vuelta y nos preparamos para soldar. Fijaos en la parte de la placa que esta justo debajo de los conectores de los mandos. Veréis muy juntitos nueve puntos de soldadura. Cada punto de soldadura corresponde a una de las patillas del db9.

Placa Cortada Megadrive Raspberry Trasera.jpg

Contando desde arriba a la derecha, podéis numerarlos del 1 al 9, siendo el 1 el superior derecho y el nueve el inferior izquierdo.
Estarán espejados con respecto al conector:

[spoiler][img]rs232_db9.gif[/img][/spoiler]

Preparais 18 cables, 9 para cada mando, de la siguiente manera:

- Procurad que cada cable mida aproximadamente un palmo.

- Una de las puntas se va a soldar a los puntos, dejad el vivo corto.

- La otra punta llevara el conector faston o, si sois muy limpios, ira a una clema.

- Los conectores faston son demasiado grandes como para no molestarse entre ellos al conectarlos en el GPIO, reducidlos de tamaño con unos alicates y usad cinta aislante para evitar cortos entre ellos (irán MUY juntitos).

A continuación soldamos los cables a cada punto de soldadura por el vivo. Es una tarea delicada puesto que al estar tan próximos, si nos pasamos con el estaño vamos a necesitar un chupón o paciencia y gravedad. Aparentemente es un juego de críos para los soldadores experimentados, para mi fue un infierno porque solo he soldado puntos separados en proyectos anteriores y como soy un rata para las herramientas tengo un soldador malísimo que solo calienta por una esquinita.

Ahora tenéis que usar un polímetro o un destornillador mortal (esos que se usan para saber si llega corriente al enchufe... y si tocas el tope con la palma te quedas ahí) para ver que hay continuidad entre los pines del puerto y la punta del cable. Mirad también que no haya cortos, con cuidado de saber que hay dos pines (creo recordar que eran el 2 y el 5) que si que tienen continuidad. Desconozco el porque, pero en mi caso es así en ambos puertos y no he tenido ningún problema.
Si todo va bien, procedemos a echar pegamento caliente sobre las soldaduras y parte de los cables. Sed generosos pero tened cuidado. Una vez que volváis a poner la placa hay una rebaba de plástico justo debajo del puerto de mandos. Si os habéis pasado con el pegamento os toca usar una Dremel para dejar la rebaba pulida.
A continuación toca soldar cables en el interruptor y el botón de reset. Es posible utilizar el boton que viene con la consola si sois cuidadosos y teneis suerte de que esta en buen estado. Para hacerlo, vais a necesitar una resistencia adicional. En mi caso preferí usar un microinterruptor de reset de una vieja carcase de PC que tenia por aqui. Si el interruptor es muy grande, tendreis que limar el boton de reset o el del propio interruptor y, acto seguido, soldar las patillas o los cables del mismo a otros cables que conectaremos a la propia Raspberry. Para colocarlo en la placa, quitad con un destornillador el interruptor original y colocad el nuevo con pegamento caliente.
En caso de querer conservar el original es sencillo. Con la placa vuelta del revés y los puertos hacia vosotros, debajo del interruptor veréis tres puntos de soldadura (no confundir con los puntos de anclaje). Creo recordar que eran los dos primeros empezando por la izquierda, pero es bien sencillo de comprobar con un polimetro. Poned el interruptor en on (mirad en la caracasa la dirección correcta) y comprobad continuidad. Haced lo mismo en off y habréis identificado los puntos.
Por ultimo toca hacer un par de apaños mas. Para usar el led, vamos a reaprovechar el cable de conexión de la placa, pero solo el lado que da al led. El otro conector, el que esta pinchado en la placa, no es necesario. Con unos alicates de corte le pegáis un tajo al cable al ras del conector. A continuación soldáis una resistencia de 220 Ohmnios en el cable rojo, y lo rematáis con un cable acabado en un conector faston aislado. El cable blanco lo rematáis directamente con otro faston. En este caso use clemas, puesto que una vez montado es muy propenso a tirones.
Si queréis comprobar si el led funciona, conectad el cable rojo a un pin que de 3,3 V o 5 V en el GPIO y el cable blanco a masa. Al encender la Raspberry el led de la Mega debería iluminarse. Si no funciona intercambiad los cables, puesto que es habitual que tras el montaje el conector este conectado al led al revés.

[spoiler][img]RP2_Pinout.png[/img][/spoiler]

El cable de potencia va a sufrir un destino parecido. Lo primero es pegarle un corte, para a continuación llevárnoslo a una clema. En esa clema conectaremos por un lado uno de los cables soldados al interruptor y por otro un cable que ira a un conector de potencia de 2,1 mm. En mi caso esta era la medida puesto que el hub que alimentaba la raspberry tenia ese conector. El cable restante del interruptor ira también al conector. Con esto hemos creado un circuito de potencia controlado por el interruptor de la Megadrive. Conectaremos el jack de potencia a la toma de potencia del hub usb alimentado y la fuente original del hub a la toma de la megadrive. Si todo va bien podremos usar nuestro interruptor para dar potencia al hub, que a su vez se la dara a la Raspberry, funcionando de forma efectiva como ese interruptor que la Raspeberry deberia incorporar y no lo hace.
Haced algunas pruebas antes de seguir, por Dios, que luego da mucha rabia cuando todo son pegotes de pegamento:

[spoiler][img]FQvCSHj.jpg[/img][/spoiler]

Con esto hemos acabado de trastear con la placa, así que la podemos fijar a la carcasa cuando la tengamos modificada.
Para comenzar la modificación, tenéis que buscar una distribución que os resulte cómoda en el interior de la Megadrive.

[spoiler][img]cIK4GkZ.jpg[/img][/spoiler]

En mi caso no tenia latiguillos pequeños de HDMI y USB, así que tuve que apañármelas como pude usando bridas e imaginación. Usando una Dremel me pulí la parte inferior del sistema de cerrado automático del slot de cartuchos para que entrara la Raspberry con todo su cableado. Ademas tuve que rebajar la muesca inferior de dicho slot, la rebaba que va debajo de los puertos de mandos y abri un buen agujero en la parte de las conexiones de vídeo para dejar al descubierto el hub USB y el conector HDMI hembra.

[spoiler][img]q5piBhC.jpg[/img] [img]9vVeKlY.jpg[/img] [size=85][img]CUnGDQ7.jpg[/img][/size][/spoiler]

Obviamente el agujero es... funcional. Tengo que usar masilla negra para dejarlo un poco mas bonito, así como pegamento caliente más algún bi-componente para asegurarme de que no se va a mover por mucho trote que le de. Es una de las piezas mas difíciles de asegurar, puesto que al poner o quitar los cables ejercemos una fuerza mecánica considerable sobre el conjunto, algo que por lo general no llevan muy bien los pegamentos que se basan en la cristalización. Probablemente use algo tipo mi-usos de Quilosa, que pega todo tipo de materiales. Tras 24 horas podria quitar las bridas de una vez por todas.

La raspberry se puede conectar por wifi, lo que deja los cables al mínimo, pero para configurarla por ssh es recomendable que uséis su puerto RJ45. Podéis sacar el cable por ese agujero misterioso que tiene la Mega en la parte trasera central, si no os importa tener un cable unido a la consola:

[spoiler][img]kBOC88N.jpg[/img][/spoiler]

A mi, personalmente, no me parece solución. Desconozco cuanta distancia habrá hasta el switch y desde luego no contribuye a seguir pensando que es una Megadrive. Para solucionarlo, tenéis que haceros con un conector de este tipo:

[spoiler][img=left]1aBRqmf.jpg[/img] [img]VkOaaBM.jpg[/img][/spoiler]

Después le hacemos sitio en el lateral de la Megadrive, justo en la ranura de expansión. Por mi distribución, lo he puesto pegado a la parte posterior de la consola.

[spoiler][img]9rePVrG.jpg[/img] [img]YJxGGLh.jpg[/img][/spoiler]

Y ahora ya fabricais el latiguillo:

[spoiler][img]PseqKXd.jpg[/img][/spoiler]

Como podéis ver en la imagen, cometí el error de usar un latiguillo de dos pares, dado que la Raspberry esta limitada a Fastethernet y me parecía un gasto tonto de UTP. Para mi consternación, eso impedía que la consola se conectara bien con el switch, así que tuve que hacerme uno como dios manda con un cable Cat5e que tenia por aquí tirado:

[spoiler][img]k4zKF4F.jpg[/img][/spoiler]

Una vez cerrada, la Megadrive ofrecerá este aspecto (siento lo del enfoque), donde podéis ver como queda accesible la ranura para MicroSD y la roseta RJ-45:

[spoiler][img]aXvWWGv.jpg[/img][/spoiler]

Después es todo ponerse con una lima y rebajar la roseta hasta que la tapa cierre. Otra opción es encajarla un poco inclinada, de forma que la presión de la carcasa la siga manteniendo en su sitio pero no tengáis que limar:

[spoiler][img]hMqHVoO.jpg[/img][/spoiler]

En mi caso eso produjo algunos tirones desagradables, asi que opte por limar. No os pongo una foto porque os asustáis. Tuve algunos problemas de conexión, pero por suerte para mi, al colocar con esta distribución la Raspberry, el puerto RJ-45 se quedo justo debajo del slot de cartuchos, con lo que pude comprobar que mi problema venia por falta de corriente al no hacer contacto el blanco-marron:

[spoiler][img]Q6CV42r.jpg[/img][/spoiler]

Lo que se vea a través de esa tapa... procurad que sea algo útil.

Cuando hayáis acomodado todo en su interior, toca fijarlo bien y empezar con el conexionado de pines del GPIO. Usad algo que os permita identificar a que pin pertenece cada cable, dado que al darle la vuelta vais a tener un problemón. Yo use cinta de pintor que había por casa, dado que siempre que hago un proyecto por primera vez soy algo chapuzas. El resultado fue funcional y suficiente. Para conectar los pines vamos a seguir el esquema de https://github.com/RetroPie/RetroPie-Setup/wiki/Db9_gpio_rpi :

[spoiler][img]UZAR7CX.png[/img][/spoiler]

Seguiremos el de MD/Genesis Pad. Para elegir el tipo de mando que conectamos, ya sea la ensaimada de 3 botones, el mejor mando del mundo de 6 o el limitado pero matón de la Master System de 2, vamos a hacerlo a posteriori y por consola.

Por alguna razón no he sido capaz de hacer funcionar correctamente el botón de reset de la Megadrive con el GPIO. Eventualmente tendré que poner otro botón, y así entre otras cosas podre usarlo de pausa cuando enchufe los mandos de la Master. Una opción (cutre) seria usar un par de cables pelados y unirlos con una pulsación del reset, pero ni siquiera yo me puedo permitir ese tipo de chapuzas.

El conexionado con nuestros conectores custom debería de quedar así:

[spoiler][img]O4MFz3B.jpg[/img][/spoiler]

En mi caso, allí donde no había presión se acababa saliendo todo. Una opción es, una vez nos aseguremos de que todo funciona, usar pegamento caliente para evitar problemas. Ahora bien, eso implica que la Pi ya no se usara para otra cosa, que los GPIO que no se usan quedan inutilizados y que somos mas cutres que la madre que nos pario. Lo dejo en vuestras conciencias, pero yo acabe usando cinta aislante para unir los cables en racimos y luego rodee todos los contactos como si fueran uno solo. No se ha vuelto a salir nada.

Por ultimo, y para terminar la parte hardware (ya iré poniendo alguna modificación más) nos quedaría darle funcionalidad a la salida de audio. Con esto también le vamos a dar una salida de vídeo compuesto, pero todavía no he llegado a ese paso de modificación porque me faltan algunos cables, así que de momento os explico como lo he hecho.

Se que es posible usar el control de volumen de la mega para subir o bajar el volumen, sin embargo y tras hacer unas pruebas, se metía demasiado ruido en el circuito. No descarto hacerlo en el futuro, pero de momento lo vamos a dejar así.

Para empezar necesitaremos un cable de audio y vídeo compuesto a jack, como los que vienen con las cámaras de vídeo, con la particularidad de que ese no vale. En la pagina de la Raspberry podéis ver cual es el adecuado.

[spoiler][img]uLxbbQ5.jpg[/img][/spoiler]

Fijaos que he conectado unos splitter. El objetivo es que la consola tenga una salida RCA posterior para conectarla a televisiones de tubo y ademas el jack de audio frontal también funcione, de forma que podamos jugar sin despertar a los niños.

Si tenéis una Raspberry Pi 1, ya sea la A, la B o la B+, tiene una salida de vídeo compuesto y una de audio por separado, de forma que para el audio necesitareis esto:

[spoiler][img]INrex50.jpg[/img][/spoiler]

Independientemente de la que tengáis, vais a necesitar uno de estos últimos adaptadores RCA - Jack para el audio. Fijaos en la parte trasera de la pieza de conexión del jack:

[spoiler][img]uYvV9mQ.jpg[/img] [/spoiler] Las bolas gruesas de los lados son el canal izquierdo y derecho (da igual el orden de soldadura, al usar un adaptador podemos intercambiar los cables) y el central es para soldar la malla.

Cortamos el jack del adaptador, pelamos los cables y hacemos la soldadura:

[spoiler][img]EXWWmol.jpg[/img][/spoiler]

A los que soldáis para ganaros la vida: salid a tomad el aire. Siento el daño que estoy haciendo a vuestro pobre cerebro. No os merecéis ver esta porquería.

Hacemos una prueba de audio y, si funciona, echamos pegamento caliente sobre las soldaduras y para casa. En este caso sed MUY PARCOS en pegamento. La pieza tiene un tamaño casi perfecto para encajar, de forma que no podemos pasarnos con el pegote. Ademas podemos pasar los cables por debajo de la placa antes de soldar, de forma que tirando de ellos se recoja la pieza:

[spoiler][img]X5Yit86.jpg[/img][/spoiler]

Bueno, este es look definitivo del interior de nuestra consola (sin el latiguillo RJ-45 conectado dado que va unido a la parte superior):

[spoiler][img]LRWXaCH.jpg[/img][/spoiler]

Veréis que el led también esta desconectado. Eso era porque necesitaba hacerle algo a la parte superior. Cuando pato me vendió la Mega, me paso unas fotos en las que se apreciaba que había sido rescatada de las ruinas de una antigua ciudad sitiada por ISIS. El polvo del desierto se había colado por todas y cada una de las ranuras, los tornillos estaban oxidados y los botones no iban finos. Sin embargo le dije que no pasaba nada, porque tenia Pronto (marca registrada), con el que podéis hacer que resucite:

[spoiler][img]sq5DguN.jpg[/img] [img]PmJ9VyL.jpg[/img] [img]MQ1gwur.jpg[/img][/spoiler]

Ahora que ya parece una consola salida de fabrica, podemos unir el led, conectar el latiguillo y cerrar la tapa. Como habéis visto, quite las protecciones de metal, de forma que si acercáis un móvil y tenéis conectado el audio por el jack frontal, tiende a acoplarse. La placa frontal se asegura a la carcasa inferior usando los agujeros de tornillo que aun le queden, por eso tenemos que cortar con cabeza. Cuando cerremos la tapa, solo seis tornillos serán la diferencia entre una Megadrive y un desastre, aseguraos que al cerrar no tapáis el agujero interno de los mismos, puesto que puede pasar desde que no cierre hasta que hayáis destrozado un cable de alimentación o de vídeo.

Este es el resultado una vez esta todo conectado:

[spoiler][img]kzAUYSf.jpg[/img][/spoiler]

La conexión de red sera solo para configuración remota, descarga de actualizaciones, caratulas y descripciones, así como temas y juego en red. No lo he puesto, pero obviamente podéis configurar y conectar un usb wifi y ahorraros este paso. En mi caso quiero que eventualmente la Raspi sea también un mediacenter, así que voy a necesitar FastEthernet para conectarlo al servidor de pelis.

Ojo, os prometo que si hago funcionar el juego en red, dejare levantado cada cierto tiempo un servidor para echar unas megapachangas.

SOFTWARE

Bueno, ahora que tenemos nuestro hardware preparado, le llega el turno al software.

En mi caso me he decidido por Retropie. Es una distribución de Debian que viene con EmulationStation como frontend para los emuladores, Retroarch para casi todo y una serie de drivers y herramientas muy útiles, que permiten hacer casi todo sin tener que conectar un teclado.

La podeis encontrar en http://blog.petrockblock.com/retropie/retropie-downloads/

Bajos la que corresponda a vuestra versión de la Pi. Para grabarla necesitamos conectar nuestra tarjeta de memoria al PC y usar el programa Win32DiskImager. Es sencillo de utilizar, solo elegimos la letra de unidad de la tarjeta, la imagen y le damos a grabar. Al terminar arrancara automáticamente al conectarla a la Raspi.

Ahora solo queda seguir una serie de pasos para configurarla. Para ello, podéis conectar un teclado a la Pi, salir de EmulationStation y trabajar en consola conectados al televisor por HDMI, o bien usar un programa como Putty, conectaros por SSH a la IP de vuestra Pi (hay una opción en uno de los menús de EmulationStation para ver la IP) y usar como usuario y contraseña pi/raspberry.

[spoiler][img]S3Tz0I3.png[/img][/spoiler]

Por un lado u otro, llegareis a esta shell:

[spoiler][img]LzPN0jD.png[/img][/spoiler]

Lo primero que haremos es meter estos dos comandos:

[code]sudo apt-get update

sudo apt-get upgrade[/code]

No los he enlazado con ampersans para poder revisar tranquilamente el output de cada uno. Cuando terminen (respondiendo "y" cuando lo pidan) tendremos la ultima version de Retropie. Es un paso obligatorio para el siguiente. Metemos estos dos comandos:

[spoiler][img]J7x7IH1.png[/img][/spoiler]

Nos aparecerá esta pantalla:

[spoiler][img]hQrzgSE.png[/img][/spoiler]

Escogemos la tercera opción "Setup..." y veremos la siguiente pantalla:

[spoiler][img]NVs7WzG.png[/img][/spoiler]

De aquí nos interesa la primera opción para elegir si sacamos el audio por el HDMI o el Jack de audio. Se que es posible sacarlo por ambos, pero para eso necesitaremos hacer algunos ajustes de forma manual, sin script de por medio.

Pero la opción mas importante, la que nos dará funcionalidad a los mandos de la Megadrive, es la numero "08 Gamecon & db9 drivers". Una vez escogida, comenzara la instalación:

[spoiler][img]l41PI5i.png[/img][/spoiler]

Una vez finalizada, procedemos a cargar el driver en memoria para probarlo (no hagáis caso al ultimo comando):

[spoiler][img]XJJkzHH.png[/img][/spoiler]

Ese 6,6 del final del comando indica el tipo de mando que vais a conectar en el conector de la Megadrive para cada jugador.

6 es el mando de 6 botones.

4 es el mando de 3 botones.

2 es el mando de la MasterSystem.

De forma que si el comando que meto es "sudo modprobe --first-time db9_gpio_rpi 6,4" le estoy diciendo que en el puerto 1 meteré un mando de 6 botones y en el puerto 2 uno de 3.

Con esto reiniciais EmulationStation (menu de ES, salir y esperáis cinco segundos sin tocar ningún botón) o lo volvéis a lanzar escribiendo "emulationstation" en la consola.

Os aparecerá el menú automático de configuración de mandos. Tened en cuenta que la distribución es la del mando de PSX/SNES, de forma que cuando os pida:

Botones direccionales -> los del mando

Start -> el del mando

A -> pulsáis "C"

B -> pulsáis "B"

X -> pulsáis "Y"

Y -> pulsáis "A"

Select -> pulsáis "Mode"

Lower Left Bumper (o algo asi) -> pulsáis "X"

Lower Right Bumper (o algo asi) -> pulsáis "Z"

Y en el resto de botones mantenéis apretado un botón cualquiera para ignorarlo. Configuráis el segundo mando y salís del menú ("C" es aceptar y "B" es cancelar).

Ahora podéis usar el mando para acceder al menú "Retropie", donde podemos configurar todo y lanzar los scripts de setup sin necesidad de usar un teclado (siempre que no requiera escribir algo).

Para que el driver se cargue al inicio, vamos a la shell otra vez y escribimos:

[code]sudo nano /etc/modules[/code]

Lo dejamos así:

[img]fMVYqfy.png[/img]

Y pulsamos Ctrl+O seguido de Ctrl+X.

Ahora cada vez que reiniciemos, tendremos ya nuestro driver cargado y nuestro mando configurado. Sin embargo hay algunos emuladores que nos van a dar problemas, como los de Mame, puesto que el boton asignado a "Menu" no lo tenemos en el mando de 6 botones y no podemos configurar los controles. Para solucionarlo hay que lanzar un juego de Mame con el teclado conectado, pulsar Tab y ahí ya cambiar la configuración.

Podemos usar combinaciones de botones, de forma que os recomiendo las que vienen por defecto en los emuladores que usan Retroarch:

mode + start -> sale del emulador a emulationstation

mode + Y -> menu del emulador (para cargar shaders, cambiar botones... etc)

mode + Z -> savestate

mode + Z -> loadstate

mode + A -> soft reset

Si recuerdo alguno mas os lo voy poniendo. El caso es que esto solo afecta a Advmame, imame4all y aquellos emuladores que no usen Retroarch.

En casos como el Mupen64, el core del emulador independiente (que no viene con Retroarch) es mucho mejor que el que viene de serie. Para cambiar con que emulador ejecutamos que juego, pulsad el botón "0" de vuestro gamepad durante la carga de cualquier juego. Como no se que botón es el "0", tiendo a pulsar los seis y me aparece el menu.

Ahí podéis usar la primera opción para cambiar el core, siendo los que empiezan por "lr-" parte de Retroarch y los que no independientes. La ventaja de usar los de Retroarch es que la configuración de botones no da problemas al ser acorde a la de EmulationStation y ser la misma para todas las plataformas.

Una vez en Retroarch os recomiendo que carguéis el shader "snes", el que viene a secas. Difumina la imagen para que parezca salida de un televisor de tubo y, por todos los Dioses, es igualita a lo que yo recordaba de la Megadrive (por fin).

Ahora para terminar, vamos a meter los malditos juegos en la Raspberry. Para ello vamos a volver a salir al menú de consola y lanzar el siguiente comando:

[code] sudo raspi-config[/code]

Entraremos a la siguiente pantalla:

[img]OizHdcV.png[/img]

Y escogemos:

1.- Expand Filesystem: para llenar todo el espacio libre disponible de nuestra SD, de forma que la partición de Retropie la ocupe por completo.

7.- Overclock: para darle un puntillo extra de potencia a nuestra Pi. Escoged "Pi2" si tenéis una Raspi2 o "Modest" si tenéis una 1. Si tenéis disipadores, podéis tiraros a la piscina por supuesto.

8.- Advanced options: aquí escogeremos "Memory Split" escribiendo "256" si tenemos una B+ o "512" si tenemos una RPi2.

Con esto hemos terminado la configuración previa. Para meter los juegos tenemos dos opciones:

1.- En la tarjeta SD

Tenéis una SD enorme o muy pocos juegos, de forma que queréis meterlos aquí. No lo recomiendo, puesto que acelera el proceso de corrupción de la tarjeta, pero es una opción.

Para meterlos es bastante sencillo, solo tenéis que acceder a "Red" en un equipo Windows conectado a la misma red que la Raspberry y veréis la ubicación remota "Retropie". Otra opción es lanzar la ventana "Ejecutar..." con tecla de Windows + R y escribir "\\Retropie".

En la carpeta "roms" es donde meteréis los juegos y en la carpeta bios las bios. La de MegaCD es "bios_CD_E.bin" (U o J para la japonesa), la de PSX "SCPH1001.bin" y la de NeoGeo "neogeo.zip". No se si me dejo alguna, pero ya iré cambiando este post según tenga problemas.

Las roms están organizadas por carpetas para cada sistema. No cambiéis el nombre. Podéis añadir subcarpetas para organizarlas por letra, fabricante, top10 o lo que queráis.

Cada vez que reiniciáis EmulationStation, este busca nuevas roms en las carpetas y muestra en pantalla los emuladores a los que podemos acceder en consonancia. Es posible que si metéis demasiados sistemas EmulationStation empiece a fallar y aparezca una pantalla blanca, o no funcionen los emuladores. Para solucionarlo podemos eliminar aquellos sistemas que no nos interesen (veréis como en el punto siguiente) o usar un tema de ES que no tenga una imagen para cada sistema. Este problema surge al precargar demasiadas imágenes de cada consola, por lo que no tiene solución fácil aparte de las que ya he dicho.

2.- Por USB

Esta es la mejor solución, especialmente si vais a meter un ISO set completo de PSX. Para ello vamos a la consola y escribimos:

[code] sudo cp /etc/emulationstation/es_systems.cfg /etc/emulationstation/es_systems.cfg.bak [/code]

Con esto hacemos un backup por si las moscas. Escribimos:

[code] sudo nano /etc/emulationstation/es_systems.cfg[/code]

Y aparece la siguiente pantalla:

[img]5VvYDnx.png[/img]

Aquí podéis puliros los sistemas que no queráis (borrando desde <system> hasta </system>, tags incluidos) o lo que nos interesa, cambiar la ruta.

Para ello sustituid el contenido del tag <path> por el de la carpeta del usb en el que tengáis las roms de vuestro sistema. En mi ejemplo es:

[code]/media/usb0/roms/Amiga[/code]

Sin espacios y sin terminar el directorio final con "/".

Tened en cuenta que "/media/usb0/" es la raíz de vuestro USB extraible. Puede que no sea usb0, para ello probad a hacer:

[code]cd /media/usb0 ls[/code]

Y si veis el contenido del usb, vamos por el buen camino. En caso contrario habría que averiguarlo y es un poco mas complicado. No voy a poner como, pero si a alguno os ocurre os echare una mano y actualizare el post.

Sustituid todos los sistemas que tengáis y cuando hayáis terminado metéis un Ctrl+O y Ctrl+X por ese orden.

Es posible que os hayáis cargado algún tag y EmulationStation no funcione. Para saberlo tenéis que cargar ES, dejar que os de el fallo, volver al archivo de configuración y revisarlo. Si estáis accediendo por SSH podéis mostrar el texto completo con:

[code]sudo cat /etc/emulationstation/es_systems.cfg[/code]

Y luego usando el ratón copiarlo en Notepad++ que tiene un revisor de XML.


[b][size=150]3.- FINAL[/size][/b]

Con esto habremos terminado de hacer todo. Hay alguna cosilla mas que podemos hacer, como instalar Kodi para tener un media-center, limelight para hacer streaming de juegos desde el PC, dxx-rebirth para jugar al port del Descent, yabause para jugar a la Saturn, reicast para hacer lo propio con la Dreamcast (en una Pi... xD) o versiones optimizadas de PCSXreARMed o Mupen64 que nos darán unos FPS extras.

Ademas podéis conectar en cualquier momento pads usb como el Buffalo, los de N64, los adaptadores MayFlash de Classic Controller o lo que tengáis por ahí. A excepción del mando de 360, que solo funciona tras instalar un driver (ultima opción del submenu "Setup", que es la tercera opción del menú "retropie_setup.sh") todos funcionan automáticamente.

He aquí el resultado final:

[img]slhXhoP.jpg[/img]

[b][size=150]4.- FIXES VARIOS[/size][/b]

[b]4.1.- Problemas de slowdowns con un disco duro[/b]

Una de las primeras cosas que me han ocurrido, es que al cargar las isos de PSX desde el disco duro USB he notado bajones de frames y problemas con el audio. En principio pensé que serian problemas de configuración del emulador e incluso he configurado una versión standalone del pcsx-rearmed. Sin embargo resulta que el problema no tenia nada que ver.

Para empezar aparecía esto en pantalla:

[img]SH5Rj8Y.png[/img]

Una especie de cuadro de colorines en la esquina superior derecha. Al principio pensé que seria el indicador de acceso a USB, ya que coincidía con el led del disco duro. Sin embargo, buscando información para quitarlo, resulta que es un indicador de voltaje insuficiente.

Así que dije, demonios, voy a probar a correr la iso de Tekken 3 en un pendrive a ver que pasa.

El resultado es una emulacion perfecta al 100% de velocidad y sin slowdowns.

[b]4.2.- No puedo usar el mando a distancia de la tele para manejar Kodi[/b]

Si habéis instalado Kodi desde los paquetes experimentales (próximamente os explicare como instalarlo y lanzarlo desde el menú) os habreis dado cuenta de que el sistema CEC que permite usar el mando a distancia de la tele para manejar Kodi, no funciona.

Para solucionarlo, salid a una shell o conectaos por SSH y escribid:

[code]sudo apt-get install libcec1 libcec2[/code]

Tras reiniciar la consola y entrar en Kodi, podreis usar vuestro mando exactamente igual que con OpenElec.

[b][size=150]5.- FINAL WORDS[/size][/b]

Aquí tenéis un vídeo del invento funcionando:

http://youtu.be/wQc6yfqUQtA

Dudas, preguntas y sugerencias las que queráis.

Gracias a @ffantasy6 por venderme la Megadrive (y el SF2, que me entretuvo a muerte durante el proceso de creación).