domingo, 2 de dezembro de 2018

Projeto arcade portátil finalizado



Projeto arcade portátil finalizado =)


O projeto consiste em um arcade portátil baseado em uma placa Raspberry Pi 3 Model B+. A placa é extremamente versátil para os mais variados projetos como videogames, servidores de arquivos, câmeras de monitoramento e projetos embarcados. Os botões utilizados foram de acrílico estilo push botton Aegir. O manche foi do modelo eletromatic "cotonete".
 




https://produto.mercadolivre.com.br/MLB-1109682082-raspberry-pi-3-modelo-b-quadcore-12ghz-_JM







As caixas do projeto foram fabricadas com mdf preto com tampa de acrilíco e compradas no mercado livre. O acabamento apresentou elegância ao projeto e o vendedor ofereceu a opção de furações personalizadas:



Os controles montados podem ser parafusados juntos ou separados para facilitar o manuseio.

Os controles possuem placas zero delay e placa ópticas para as manetes




O projeto possui um controle "Master" (principal) e até 2 "Slaves"(escravos). O controle "Master" possui a placa Raspberry Pi montada na parte externa da caixa. O Raspberry pi 3  foi encapsulado em um case de plástico com 2 coolers e 3 dissipadores. O Raspberry pi 3, neste projeto fica externo a caixa, para reduzir o aquecimento da placa que ocorre rapidamente dentro do controle.


Em testes acompanhando a temperatura de operação a placa atinge temperaturas entre 40 e 56 °C. Projetos que usam o Raspberry PI dentro da caixa de controle precisam de coolers e furos auxiliares na caixa, aumentando o ruídos sonoros durante a refrigeração e reduzindo a troca de calor com o ambiente. A temperatura de trabalho da placa ocorre entre 45 e 70 °C dentro da caixa controle, com  refrigeração e furos adicionais para facilitar as trocas de calor com o ambiente. Portanto para melhorar a refrigeração a placa foi montada na parte externa do controle, dentro do case plástico com cooler e dissipadores citados melhorando a performance do projeto, pois o sistema consegue operar em temperaturas menores.



Os coolers foram alimentados pelos GPIO (general-purpose input/output) da placa (5V e GND):
Resultado de imagem para pin raspberry pi 3 b+


Existem também GPIO prontas para controles arcades, Kit Prototipagem Raspberry Pi GPIO:






Ao utilizar as GPIO, as placas zero delay dos controles não são necessárias, uma vez que o próprio Raspberry é usado para fazer os inputs de botão e alimentar a placa ótica. Isso representa uma economia no projeto e ambos os métodos resultam em excelentes input lag para o controle. O projeto usando as GIPO liberam as entradas usb para inserção de novos controles ou periféricos.
Entretanto para o meu projeto os controles foram montados com placas zero delay e podem ser usadas no PC, PS3 e PS4, aumentando a utilidade do sistema. Os controles são ligados via USB no controle "Master" e o cabo móvel inserido dentro da caixa do controle para evitar cabos soltos e aparentes. O recalbox possui fácil emparalhemento via bluetooth com controles de ps3.  Outros controles bluetooth ainda não possuem suporte nativo no sistema.
O Recalbox permite re-jogar uma variedade de consoles de videogame e plataformas. RecalboxOS é gratuito, de código aberto e projetado para permitir que o usuário crie um sistema ajustado as suas necessidades.
RecalboxOS é o sistema operacional do projeto recalbox, um console de emulação pronto para uso baseado no Raspberry Pi. A partir do Recalbox 4.1, as placas Odroid XU4 e C2, assim como o PC (32 e 64bits) são suportadas. [http://www.recalbox.com/]
O RecalboxOS é um compilado de vários programas. O frontend é EmulationStation2, https://emulationstation.org/ ele é o coração visual do sistema para a seleção dos jogos. Os principais emuladores são o piFBA [https://github.com/RetroPie/RetroPie-Setup/wiki/FinalBurn-Alpha] e Retroarch [https://www.retroarch.com/]. O RaspberryPI NOOBS foi escolhido como sistema de instalação / recuperação [https://www.raspberrypi.org/documentation/installation/noobs.md]. O recalboxOS é um sistema muito amigável sem configurações prévias de arquivos ou o uso ssh no terminal. Entretanto possui um arquivo de configuração tudo em um, chamado recalbox.conf, que fornece uma configuração precisa de todos os emuladores.
  • Suporta Atari 2600, Atari 7800, NES, Game Boy, Game Boy color, Game Boy Advance, Super Nintendo, Famicom Disk System, Master System, Megadrive (Gênesis), Gamegear, , NeoGeo, NeoGeo Pocket, FBA , iMame4all, PCEngine, Supergrafx, Amstrad, MSX1 / 2,  Sega Cd, Sega 32X, Sega SG1000, entre outros
  • Suporte Wi-Fi
  • Atualização online
  • Acesso à rede para a pasta ROM, screenshots, salva, arquivo de configuração (via SAMBA e HTTP-Webfrontend)
  • Configuração do controlador no frontend: configure uma vez, jogue em qualquer lugar
  • Suporte de controlador integrado para PS3, Xbox360, 8BitDo e Bluetooth (associe um controlador e reproduza)
  • Drivers GPIO compactos, para controles de arcade, ou controladores originais Nes, Snes, Megadrive, PSX
  • Música frontend fundo
  • Recurso Favoritos (marque seus jogos como favoritos e oculte outros)
  • Inglês, Francês, Espanhol, Alemão, Italiano e Português
  • Versão otimizada FBA com suporte para 4 jogadores
Para acionadar ou desligadar a GIPO dependem de modificações do arquivo recalbox.conf:

[https://github.com/recalbox/recalbox-os/wiki/Configure-recalbox-for-a-Bartop-or-Arcade-Cab-%28EN%29]

Entretanto, além do visual mais agradável, o recalbox possui menor delay para controles e jogos quando comparado com o lakka e hyperpie

[https://gameroomsolutions.com/hyperpie-setup/]

[http://www.lakka.tv/]

Outro  fator que inclinou na minha escolha pelo sistema foi a boa compatibilidade com o Retroachiements:


O Retroachievements é uma plataforma de emuladores que permitem aos usuários da comunidade criarem achievements (conquistas) nos games antigos semelhante ao Playstation e Xbox.

Essa característica aumenta significantemente o fator replay dos jogos, aumentando os desafios e o tempo total de gameplay.

O sistema RecalboxOS foi instalado em um cartão SD classe A de 32 GB. 


O sistema pode ser adquirido gratuitamente no site:

Raspberry Pi 3 rpi3
recalbox.img (sha1)
 
Para gravação simplificada no SD foi usado neste projeto um programa  compatível com windows/linux/mac bem intuitivo e fácil de usar o etcher:


Caso o processo envolver o uso de cartão SD usado é necessário formatá-lo antes da instalação da imagem usando o programa SD Memory Card Formatter 5.0.1 for SD/SDHC/SDXC


Para armazenar um número maior de jogos ligado ao Raspberry por conexão USB um HD externo de 500 GB. O HD foi inserido na parte interna do controle "Master" e o cabo dentro da caixa, escondido, trazendo boa estética para o projeto.



Uma propriedade interessante do RecalboxOS é a integração com servidores locais. O diretório SHARE é compartilhado em rede. Quando qualquer memória física externa e previamente formatado em fat32(windows/linux) ou ext2(linux) é plugada via USB , uma imagem clone das configurações é criada na unidade.No menu do recalbox é possível selecionar e alternar entre o uso do cartão SD o  a unidade de disco externa. Essa configuração também pode ser feita via terminal:
  
https://www.helviojunior.com.br/it/configurando-o-raspberry-para-iniciar-atraves-do-hd-externo/

Nesse disco podem ser inseridas as roms e bios correspondentes para os consoles de interesse. Alguns emuladores precisam de bios para emular os jogos corretamente. As bios podem ser adicionados ao recalboxOS  na pasta compartilhada em rede "bios" (via SAMBA) ou diretamente no cartão sd ou disco externo em /recalbox /share/bios/. As roms podem ser inseridas de forma análoga na pasta roms. Os diretórios são separados e organizados sistemas a serem emulados. 
Cada sistema tem sua bios correspondente conforme mostrado a seguir no wiki do recalbox:
[https://github.com/recalbox/recalbox-os/wiki/Add-system-bios-%28EN%29]
As bios e roms (jogos) podem ser encontradas em encontrados em diversos sites de emulação.

[https://drfone.wondershare.com/emulator/emulator-paradise.html] 





O resultado final gerou um "console" portátil, o projeto total custou aproximadamente R$ 850,00 reais, sem contar os itens comprados para testar as configurações. Existem empresas que fazem o mesmo trabalho por um preço equivalente, pois fazem em grande quantidade e conseguem reduzir os custos, porem o diferencial é a personalização do projeto.
Nesse projeto compartilho a experiência em montar um "console" e configura-lo do zero. Nada substitui o prazer de assoprar um cartucho, os chiados, ruídos na tela e o sons de um vídeo game original. Porém é uma forma saudosa de lembrar dos velhos tempos. Empresas como a sony, nintendo e SNK aproveitando a onda nostálgica lançaram seus emuladores oficiais na forma de mini-consoles, fornecendo uma maneira dentro da lei, para a aquisição de um pequeno conjunto de jogos:

[https://www.eurogamer.net/articles/digitalfoundry-2018-playstation-classic-review]

[https://en.wikipedia.org/wiki/Super_NES_Classic_Edition

[https://en.wikipedia.org/wiki/NES_Classic_Edition]

[https://www.snk-corp.co.jp/us/neogeomini/]

O uso do RecalboxOS é permitido por tratar-se de um free software, entretanto o uso de roms que não são backup de uma mídia física de um jogo configura num processo não amparado por lei, caracterizando pirataria. Isso inviabiliza a produção comercial de projetos semelhantes pelos jogos e licenças associadas. 

A experiência em fazer esse projeto foi única e ocupou meu tempo livre, um hobbie. Os estudos compilados até o momento para poder tornar tudo possível abriram minha mente para buscar novas aplicações e projetos para outros ramos além do entretenimento e podem servir como base para pessoas que querem ser autodidatas em computação e eletrônica. O resultado pode ser visto no vídeo a seguir:


No fator emulação, até o momento,Sega Saturn, Game Cube e algumas roms de Nintendo 64 apresentam restrições na plataforma. O Raspberry PI 3 apresenta algumas limitações da arquitetura ARM e gargalos na desenvolvimento e programação reduzindo drasticamente o frame rate nos jogos emulados.
Outro ponto negativo foi dificuldade na configuração de imagens para as roms associadas aos jogos que é um pouco trabalhoso e pode ser contornado seguindo essas instruções, ou baixando imagens de sistemas completos pré configurados:

Este artigo foi escrito em 02/12/2018, alguns links podem não funcionar com o tempo, caso encontre erros nos links ou sugestões coloquem nos comentários e caso for compartilhar divulgue que a informação saiu desse blog.

Um grande abraço e obrigado por ler até aqui. 
Novos projetos portáteis estão a caminho =)

Juliano
02/12/2018