Retropie - Utilizando um controle original de NES, SNES, N64, PX2/PS2 e Gamecube
Autor: Ronaldinho | Publicado: 2016-04-13T10:00:00-03:00



Melhor que jogar um bom game retro é poder jogá-lo com um controle original da plataforma e o Retropie permite isso sem muita dificuldade. Para a ligação elétrica, é necessário ligar o controle pela interface GPIO do Raspberry Pi.

As opções de controle disponíveis são:
NES, SNES, PSX/PS2,N64, Atari, Commodore, Amiga, Sega Mega Drive, Sega Saturn, Amiga CD32.

Eu fiz o teste com um de Super Nintendo. Uma observação importante é que a GPIO do Raspberry Pi trabalha com 3,3V, porém controles trabalham com 5V e até mais, ligar mais de 3,3V na GPIO é risco de queimar o Raspberry Pi.
No caso do controle de SNES, ele funcionou com 3,3V apesar de trabalhar com 5V. Mas apenas o controle original funcionou com 3,3V, um Cirka e outro Chinês não funcionaram. A dica é, caso precise alimentar o controle com tensões maiores, é preciso usar um conversor de nível logico com este ou este. Você alimenta o controle com 5V e suas saídas terão nível logico em 5V, com o conversor você transforma essas saídas em 3,3V, o que é preciso para a GPIO do RPi.


O primeiro passo é instalar os drivers, no menu do EmulationStation escolha Retropie e RETROPIE-SETUP. Dentro do menu que irá abrir vá em:

3 Setup / Configuration 
809 Gamecon &amp; db9 drivers

É necessário estar na internet para a instalação, a instalação irá durar em torno de 10 min e ao final se aparecer uma pergunta sobre atualizar o firmware, escolha sim (YES), esta instalação irá demorar mais uns 10min.

Caso esteja rodando os drivers de controle de XBOX 360, desabilite pelo menu RETROPIE-SETUP, pois este driver pode dar conflito.

Será instalado dois drivers o gamecon e o db9. O Gamecon irá servir para os controles:

-NES
-SNES
-PSX/PS2
-N64
-Gamecube

E o db9 para os controles:

-Atari, Commodore, Amiga e outros controles com conector db9 de 1 a 3 botões
-Sega Mega Drive (Genesis)
-Sega Saturn
-Amiga CD32

Para a ligação física e utilização do driver, vou mostrar como fazer com o controle de SNES, para outros basta seguir o mesmo procedimento. Os controles db9 são um pouco mais trabalhosos, porque cada botão usa um fio, ao contrario do Gamecon que utiliza um protocolo e assim usa em torno de apenas 3 fios (clock, latch e data). Como os db9 são controles menos comuns, não vou detalhar aqui, mas quem quiser aprofundar pode ler o readme disponível após a instalação dos drivers em /usr/share/doc/db9_gpio_rpi/README.gz ou aqui.

Continuando, procure na internet por "pinout SNES" para ter a pinagem do conector. Na minha procura fui levado a este link. Com a pinagem em mãos vamos para a interface GPIO, a imagem abaixo será nosso guia:


&nbsp; 

Aqui é importante observar que para o Pi B, existe as placas Rev1 e Rev2, você precisa saber qual sua placa. Na ligação física, use os 3,3V e GND para alimentar o controle e no caso do SNES vou usar o GPIO 10 para o clock e GPIO 11 para o latch conforme está no readme disponível em /usr/share/doc/gamecon_gpio_rpi/README.gz ou aqui. Para os dados (DATA) é que entra a importância de saber qual a rev da placa. No meu caso que é rev 2, preciso usar a GPIO 2 ou GPIO 3, mas veja que na rev 1 nesta mesma posição física é GPIO 0 e GPIO 1. Além destas duas posições, podemos ligar mais controles em GPIO 4 e GPIO 7, estes comuns para as duas placas. Com as conexões feitas o ultimo passo é subir o driver. Temos então 6 posições de controles onde usaremos no máximo 4 já que existe as diferenças das placas, o comando usado para subir o driver é:

sudo modprobe gamecon_gpio_rpi map=x,x,x,x,x,x


Onde no lugar de cada x colocaremos o tipo de controle correspondente conforme a tabela abaixo, sendo na sequencia map=GPIO 0, GPIO1, GPIO 4, GPIO7, GPIO 2, GPIO 3:

0 = no connection
1 = SNES pad
2 = NES pad
3 = Gamecube pad
6 = N64 pad
7 = PSX/PS2 pad
8 = PSX DDR controller
9 = SNES mouse 

Portanto no meu caso, os dois primeiros deixo em 0, já que minha placa é rev 2 e não tenho GPIO 0 e GPIO 1. Como liguei fisicamente na GPIO 2 meu comando ficou:

sudo modprobe gamecon_gpio_rpi map=0,0,0,0,1,0


Caso eu ligasse outro controle além do de SNES, um de N64 por exemplo, na GPIO 7 o comando ficaria:

sudo modprobe gamecon_gpio_rpi map=0,0,0,6,1,0


Para confirmar se o modulo está ok dê o comando:

tail /var/log/kern.log


ou

lsmod | grep gamecon


Agora basta abrir o EmulationStation e configurar o controle. Para subir o modulo a cada boot é necessário editar o arquivo /etc/rc.local, para isto use o comando:

sudo nano /etc/rc.local


E adicione a linha abaixo antes do exit 0, sempre lembrando das posições do controle.

modprobe gamecon_gpio_rpi map=0,0,0,0,1,0 &amp;


Saia do nano com CTRL + X, depois Y e ENTER.