Que tal voltar no tempo e jogar no Raspberry Pi aqueles jogos clássicos dos anos 80 e 90, como Pac Man, River Raid e Donkey Kong, entre outros títulos de videogames como Super Nintendo, Atari e MSX? Nesse post você terá todos os passos para montar sua própria Máquina de Fliperama com Raspberry Pi, com detalhes sobre o sistema operacional utilizado, conexões do hardware, controles, etc.
A parte eletrônica do fliperama da imagem acima foi montado com todo o material disponível na loja FILIPEFLOP:
- Raspberry Pi 3
- Display Touch 7¨ para Raspberry Pi
- Kit Fliperama com Joystick e placa encoder (na imagem abaixo)
A caixa do fliperama foi feita em MDF e no final do post você encontra mais informações sobre as medidas da caixa assim como arquivos com o desenho para download.
A interface de joystick
É perfeitamente possível, e até relativamente fácil, plugar os contatos dos botões e do joystick diretamente aos pinos do GPIO do Raspberry Pi, e depois fazer uso de um software que traduza a leitura do GPIO, transformando-a em eventos de joystick para uso dos emuladores que estiverem instalados.
Eu mesmo já fiz isso algumas vezes, e no meu artigo descrevendo passo-a-passo como montei minha máquina Powerpack Jr. eu expliquei como fiz essa conexão, e como instalei o software adicional necessário, em um clássico Raspberry Pi modelo B.
Mas no artigo de hoje a intenção é ter foco na facilidade da operação do fliperama, então a montagem vai recorrer a um módulo eletrônico adicional: uma plaquinha intermediária que se apresenta ao Raspberry Pi (ou a qualquer computador) como um joystick USB padrão, e à qual podemos plugar os pinos do joystick e dos botões que usaremos na nossa máquina. A plaquinha encoder é conectada a cada um dos botões e das direções do joystick, e transmite seus comandos ao Raspberry Pi via USB.
Existem vários modelos dessas plaquinhas, que recebem nomes como “joystick encoder”, “zero delay” e outros. Todos têm as mesmas funcionalidades básicas, mas alguns incluem itens adicionais, como suporte a botões iluminados, função Turbo, etc.
No projeto deste artigo, usei um modelo Bosega 822, mas o procedimento com outros modelos é bastante similar.
O encoder que eu usei é composto por 2 LEDs e 22 conectores. Os LEDs indicam a conexão USB e os modos opcionais (turbo, auto, etc.); o conector com 4 pinos é o contato USB, o de 5 pinos é para joysticks que usam contato de 5 pinos, os 4 conectores ao seu lado são para joysticks que usam 4 pares de pinos, os 4 conectores na lateral são para botões de controle da própria placa (funções Mode, Turbo, Auto e Clear), e os outros 12 conectores são para botões.
Os 12 conectores para botões estão identificados no verso da plaquinha. Para uso no Retropie, eu os conecto assim:
- A, B, X e Y vão nos conectores K1, K2, K3 e K4.
- Left Shoulder e Right Shoulder vão nos conectores L1 e R1.
- Start vai no conector ST.
- Select vai no conector SE.
- Left Trigger e Right Trigger vão nos conectores L2 e R2, caso você use esses botões que a interface não exige (mas podem ser úteis em jogos de videogames mais recentes, como o PlayStation 1).
Eu não sei qual o microcontrolador usado na plaquinha Bosega 822 (ele está oculto), mas existem vários chips à disposição com suporte nativo a USB e com pinos de entrada suficientes para essa quantidade de botões, se você quiser desenvolver o seu próprio encoder. Vale repetir: também é possível obter a mesma funcionalidade plugando os pinos dos botões diretamente ao GPIO do Raspberry Pi, com o uso de um software adicional para fazer a conversão.
No caso da nossa plaquinha (e de todos os demais modelos que já conheci), o contato entre os botões (e o joystick) e a placa é simples: normalmente são usados cabinhos especiais, conhecidos como quick connects, que de um lado têm o plug adequado para os conectores do encoder, e do outro têm os conectores adequados para os botões e o joystick – aí é só encaixar os contatos corretamente.
Dica: existem vários modelos de botões e joysticks, com padrões diferentes de conector, então é interessante verificar previamente a compatibilidade física (tamanho do plug) dos modelos que você for usar, se quiser tirar proveito dessa comodidade dos contatos fáceis de plugar. Caso contrário, como o contato é direto, basta usar um jumper adequado, soldando ou conectorizando como preferir.
A imagem acima mostra um quick connect já plugado aos 2 contatos de um botão estilo japonês (Sanwa), pronto para ser conectado a um encoder. Se os seus botões forem no estilo com microchave, o contato deve ser com os terminais identificados como NO (“Normally Open” ou “Normalmente aberto”), que fecha o contato só quando o botão está pressionado) e COM (comum).
Após plugar todos os conectores dos botões e do joystick, não há mais nada a fazer, é só conectar a porta USB da plaquinha à USB do Raspberry Pi, e ela aparecerá como se fosse qualquer joystick tradicional. O único detalhe é observar é o botão “MODE”: se ele for pressionado (ou se algum contato indevido acontecer entre os 2 pinos do conector correspondente na plaquinha), o encoder alterna entre o modo analógico e o modo digital, e pode prejudicar o seu uso caso o emulador esteja configurado para o outro modo. Se você perceber comportamentos estranhos, esse é o primeiro ponto a investigar.
Instalação do Retropie
No ecossistema do Raspberry Pi não há escassez de sistemas gerenciadores de coleções de emuladores de jogos, e o Retropie é um dos que vem sendo melhor avaliados (junto a outros bons nomes, como o recalbox e o Lakka, por exemplo – cada um com seus fãs prontos a dizer que a sua opção é a melhor de todas e as demais são péssimas…).
Além de pré-instalar e gerenciar emuladores de máquinas de fliperama e videogames mais populares, como Master System, Super Nintendo, Neo Geo, Atari 2600 e Odyssey 2, a lista de sistemas suportados pelo Retropie inclui algumas opções menos comuns em pacotes de emuladores e/ou que só recentemente passaram a ser emuladas, tais como o Playstation 1, PSP e vários computadores, desde o MSX ao PC.
É possível fazer o download de uma imagem de sistema operacional já com Retropie instalado, mas eu prefiro instalar o Retropie em um Raspbian previamente configurado, que já esteja rodando no meu Raspberry Pi. É uma tarefa que exige poucos comandos, mas pode demorar bastante, porque envolve longos downloads.
O primeiro requisito é garantir que o sistema está atualizado e contém os pacotes necessários. Isso pode ser feito com os 3 comandos a seguir:
1 2 3 | sudo apt-get update sudo apt-get upgrade sudo apt-get install git |
Se o sistema já estiver atualizado e com os pacotes relevantes instalados, vai terminar rapidamente; caso contrário, a operação vai envolver vários downloads e instalações.
A seguir vem a obtenção e execução do instalador do Retropie, com os 3 comandos a seguir:
1 2 3 | git clone --depth=1 https: //github .com /RetroPie/RetroPie-Setup .git cd RetroPie-Setup sudo . /retropie_setup .sh |
Ao final do terceiro comando, o instalador do Retropie começa a rodar e, após alguns passos iniciais, oferece um menu de opções ao usuário:
Minha recomendação: na primeira vez, simplesmente escolha a opção I, que instala um sistema básico com todos os emuladores mais populares e estáveis. Depois de instalar e conhecer o ambiente, é possível complementar a instalação ou explorar as opções alternativas, usando a opção Retropie-setup do menu RetroPie. Dica: emuladores cujo nome começa com lr- usam uma biblioteca chamada libretro, e terão maior garantia de compatibilidade com as opções padronizadas do Retropie (combinações de teclas, salvamento de partidas, etc.).
Uma nota importante: a qualidade e o desempenho dos jogos variam de acordo com o grau de maturidade dos emuladores e com a disponibilidade de recursos do seu Raspberry Pi. Um jogo de 8 bits e baixa resolução de uma máquina popular, como os do Master System, deve rodar bem em qualquer versão de Raspberry Pi, mas jogos com gráficos mais avançados e de arquiteturas mais recentes podem funcionar melhor em um Raspberry Pi 2 ou Raspberry Pi 3 – e os emuladores das arquiteturas mais recentes tendem a não ser tão estáveis e completos quanto os das décadas anteriores, mas há exceções.
Iniciando o EmulationStation
EmulationStation é o nome da interface que gerencia os diversos emuladores e o sistema de configuração do Retropie – ou seja: o menu que exibe as opções de configuração, os emuladores e seus jogos é provido pelo EmulationStation.
Para iniciá-lo manualmente, basta digitar emulationstation no prompt do Raspbian.
Na primeira execução, o Emulation Station detectará o gamepad instalado em seu Raspberry Pi e conduzirá você pela rotina de pressionar para registrar cada um dos botões direcionais, Select, Start, A, B, X, Y, os 2 shoulders (frontais superiores) e os 2 triggers (frontais inferiores).
Caso o sistema peça para pressionar um botão que o seu gamepad não possui (por exemplo, um segundo direcional, em controles que só têm 1, ou comandos analógicos num gamepad puramente digital), basta deixar pressionado qualquer outro botão até que ele pule aquela opção.
Se você mudar de controle ou precisar refazer a leitura dos botões, o menu principal do EmulationStation (acessível pelo botão Start) permite reconfigurar os controles, pela opção Configure Input (ou quando você inicia o EmulationStation sem nenhum controle plugado). O mesmo menu tem opções para configurar som, vídeo e mais itens da interface com o usuário.
Após a configuração inicial do controle, a interface do Retropie será exibida, já permitindo acesso aos jogos que estiverem instalados. Se você não tiver instalado nenhum jogo ainda, estará disponível apenas o conjunto de utilitários do Retropie – que, de forma potencialmente confusa, são descritos como se fossem 13 jogos instalados.
Quando você tiver instalado ROMs de jogos, as arquiteturas (como Mega Drive, Super Nintendo, etc.) dos jogos que você instalou estarão visíveis no menu principal, e você poderá navegar entre elas usando os direcionais laterais. Pressionando o botão “A”, os jogos da arquitetura selecionada serão exibidos, para que você possa escolher qual quer jogar.
Copiando ROMs para o Retropie
Os emuladores oferecem a funcionalidade básica dos videogames e máquinas de fliperama, mas geralmente não incluem os softwares (por exemplo, o conteúdo dos cartuchos) que os fazem funcionar do ponto de vista do usuário final.
Para suprir esse conteúdo, é necessário recorrer a arquivos conhecidos como ROMs, que são cópias do software dos jogos, no formato específico para cada arquitetura.
O Internet Archive tem mais de 20 anos de atividade preservando os registros digitais para as décadas futuras – incluindo ROMs!
Sites dedicados à preservação da memória digital das décadas passadas, como o Internet Archive, costumam ter coletâneas desses arquivos, mas o licenciamento e copyright dessas ROMs (bem como seu funcionamento com emuladores) variam bastante, e é importante se informar sobre a situação específica de cada caso, antes de fazer seus downloads e uso.
Tendo as ROMs em mão, basta colocá-las nas pastas adequadas a cada arquitetura de jogos, dentro do diretório /home/pi/RetroPie/roms – por exemplo, a ROM do River Raid do seu Atari brasileiro vai na pasta /home/pi/RetroPie/roms/atari2600, e a ROM do Sonic para o Mega Drive poderia ir em /home/pi/RetroPie/roms/megadrive, e assim por diante.
As ROMs que você coloca nas pastas só ficam disponíveis no menu a partir da próxima vez que você iniciar o EmulationStation. Lembre-se que cada arquitetura e emulador tem seus requisitos sobre formatos e versões de arquivos de ROM, consulte a documentação dos sistemas envolvidos para aumentar a sua taxa de sucesso no correto reconhecimento.
No caso específico das ROMs de máquinas de fliperama, sugiro consultar as dicas da wiki do RetroPie, porque elas são suportadas por diversas versões do emulador MAME que vem pré-instaladas, e cada uma delas tem vantagens, desvantagens e requisitos próprios.
Combinações de botões com funções especiais
Uma vantagem de usar uma coleção de emuladores que já vem pré-configurada é que os botões e teclas têm consistência. Assim não acontece o problema de o botão usado para iniciar a partida no emulador ABC ser o mesmo que encerra o jogo no emulador XYZ…
No caso do Retropie, algumas combinações do botão Select com outros botões do gamepad têm funções especiais em quase todos os jogos:
- Select+Start: Sair do jogo
- Select+Right Shoulder: Salvar
- Select+Left Shoulder: Carregar
- Select+direcional direito: Próximo slot de salvamento
- Select+direcional esquerdo: Slot de salvamento anterior
- Select+X: Menu
- Select+B: Reset
Além disso, os botões podem ter funções específicas (como inserir fichas, por exemplo) em determinados emuladores.
Vale explicar: Left Shoulder e Right Shoulder são os nomes que o Retropie dá para os botões frontais superiores do controle. Talvez você os conheça como L1 e R1…
Configurando o sistema para dar boot diretamente no Retropie
Já vimos que o comando a ser digitado no terminal para iniciar o Emulation Station é emulationstation. Mas se o computador for ficar dedicado para jogos (como é o caso desse fliperama), um conforto adicional é deixá-lo configurado para rodar o Emulation Station automaticamente após o boot.
Para fazer isso, configurei o Raspberry Pi com o Raspbian GNU/Linux 8 ativando o boot diretamente no modo Console com autologin (o que pode ser feito na opção Boot Options do utilitário raspi-config), o que faz com que, ao final do boot em modo texto, o usuário default (normalmente chamado pi) seja logado automaticamente, como se você tivesse digitado a sua senha.
Ao fazer o login de um usuário, nas configurações default, o Raspbian executa todos os comandos que estiverem gravados no arquivo .bashrc gravado no home do usuário. Podemos tirar proveito disso para executar o Emulation Station automaticamente, inserindo o seguinte comando ao final do .bashrc:
1 | /usr/bin/emulationstation & |
A mesma técnica pode ser usada para inserir comandos de configuração que você deseja executar a cada boot. No exemplo a seguir, inseri os comandos que selecionam a saída de áudio analógica (a do conector no estilo fone de ouvido), definem o volume máximo de áudio, e ainda executam o Emulation Station:
1 2 3 | amixer cset numid 3=1 amixer set PCM -- 100% /usr/bin/emulationstation & |
Essa forma de configuração permite que o Emulation Station seja encerrado: caso o usuário selecione a opção Quit do menu e finalize o emulador, encontrará a máquina no seu estado normal após o boot, e poderá usá-la normalmente em modo texto. Caso queira voltar aos jogos, basta digitar o comando emulationstation no prompt, ou simplesmente dar um reboot.
Informações adicionais Fliperama
A montagem do fliperama foi feita em madeira MDF, e a caixa posteriormente coberta com contact. Os arquivos com as medidas da caixa podem ser encontrados no nosso servidor (download), nos formatos DWG e STP. O arquivo do link contém também um PDF com todas as medidas da caixa. Quer mais dicas sobre marcernaria DIY? Acesse aqui.
O fliperama foi utilizado este ano no evento The Developers Conference, em Porto Alegre, onde foi exibido ao público, que pôde não só conhecer o hardware, como se divertir e participar do nosso campeonato de Pac-Man. Na imagem abaixo, temos a máquina que foi montada seguindo as instruções destes post:
E nesta, lado a lado, a máquina fliperama que inspirou este post (vermelha), e ao fundo a máquina da FILIPEFLOP:
Gostou? Deixe seu comentário logo abaixo.
0 Comentario "Como fazer um Fliperama com Raspberry Pi"
Postar um comentário