Réplicas Funcionais de Arcades Eletro-Mecânicos com MAME e RPi

Olá, Pessoal,

Hoje fui convidado pelo Armando Neto a me juntar a essa comunidade. Gostaria de começar por aqui contando um pouco sobre um projeto que eu e o Armando discutíamos hoje durante o almoço.

Já faz alguns anos que eu venho acompanhando o desenvolvimento do projeto MAME (documentação e preservação histórica de máquinas de fliperama - e de hardware de um modo geral - por meio de técnicas de emulação).

Um dos truques que percebi que é possível se fazer com o MAME envolve manipular motores, luzes, dígitos de 7 segments, solenóides, etc a partir de sinais gerados pelo emulador. Com isso é possível por exemplo rodar a emulação de algum jogo como o Galaxy Force II e fazer uma pequena maquete do jogo se movimentar de verdade como o arcade fazia antigamente. Outros exemplos bacanas de se fazer esse tipo de coisa seriam jogos como Wacky Gator e Golly Ghost.

Ano passado eu fiz um modelo 3D do gabinete super deluxe do jogo Galaxy Force 2 e publiquei no GitHub: GitHub - felipesanches/MAME_3D_models: 3D models for usage as artwork in MAME. This is an on-going experiment / mockup for a future feature that is being discussed at: https://github.com/mamedev/mame/issues/388

Fiz também algumas postagens no issue tracker do próprio projeto MAME onde mostro um pouco desse trabalho, mas no contexto de criar um sistema de renderização 3D de gabinetes para o MAME:

Durante a tarde de hoje eu desenhei no Inkscape uma arte vetorial para montar uma pequena maquete do gforce2 e imprimi em papel de alta-gramatura, recortei e colei. O protótipo está incompleto, mas já dá uma certa idéia de como seria essa miniatura. Fiz numa escala que permita utilizar um display LCD de 3.2" num Raspberry Pi rodando o MAME. Então o que era o CRT na máquina original será o displayzinho junto com o RPi no modelo em miniatura.

Um problema deste jogo em particular é que o MAME ainda não emula a placa secundária de controle de motores. Nessa placa há um processador Zilog Z80 dedicado a fazer o controle de giro do gabinete (quase 360 graus, se não me engano, e com inclinação de uns 15 graus pra frente e 15 pra trás). Então pra realmente concluir um projeto dessa máquina será necessário fazer um pouco de engenharia reversa pra entender o protocolo de sinalização utilizado entre a placa principal do jogo (que já é emulada com fidelidade) e a placa secundária de controle de motores que, até então, tem sido ignorada pelos desenvolvedores do MAME (até mesmo por que o MAME nem tem hoje em dia como mostrar a movimentação do gabinete).

Já outros jogos como “Golly Ghost!”, “Wacky Gator” e “Out Run” já possuem as placas de motores emuladas corretamente, então seriam alvos mais fáceis para um primeiro projeto nessa linha.

Vejam no vídeo abaixo como funciona o Golly Ghost. Ele tem uma casa de boneca com portas e tampas que se abrem e fecham com solenóides para os fantasminhas entrarem e saírem (meio ridícula essa idéia, né? Chega a ser engraçado…) E o jogador usa uma pistola para atirar nos fantasmas. Os fantasmas são desenhados por um monitor com gráficos de video-game e essas imagens se sobrepõem à maquete real por meio de um jogo de espelho. A contagem de pontos no topo é feita em displays de 7 segmentos.

O MAME emite sinais para o terminal de texto (ou via polling HTTP caso prefira) com os nomes dos elementos e seu status. Por exemplo: “refrigerator 1” (indicando que a porta da geladeira abriu) ou “toilet 0” indicando que a tampa da privada fechou. Podemos usar esses sinais para, por meio de pinos de GPIO do RaspberryPi controlar solenoides que atuem na maquete real em sincronismo com o jogo emulado. A maior dificuldade nesse caso é o trabalho manual de construção da maquete. Para que a parte estética seja fiel ao original o ideal seria usar um scanner 3D para capturar os detalhes de um gabinete original do game. Entretanto essa máquina é extremamente rara hoje em dia (apesar de eu ter jogado muito nela no PlayLand do shopping Center Norte durante a minha infância), então o trabalho terá que ser feito com um toque de criatividade pra chegar em um resultado que seja pelo menos parecido com o original. Impossível fazer idêntico!

Existe ainda a chance de eu gravar um vídeo pro meu canal no youtube pra contar em mais detalhes sobre esse assunto. Quem não conhece ainda, o canal se chama Happy Hacking Video Blog e pode ser visto aqui:

Bem… seria legal ouvir um pouco a opinião do pessoal por aqui sobre essas idéias de projeto e se tem alguma outra máquina desse tipo que vocês gostariam de construir uma réplica funcional operada por emulador. E, é claro, se alguém quiser juntar esforços pra montar alguma dessas miniaturas, eu topo!

Happy Hacking,
Felipe “Juca” Sanches

1 curtida

Talvez vocês gostem de ver algumas fotos do protótipo feito de papel…

Mas antes acho que é bom eu mostrar como era o visual da máquina de verdade:

Desenhei a geometria da base de metal no Inkscape de forma meio grosseira, sem saber as medidas exatas da máquina original, mas tentando fazer algo que mantenha as proporções aproximadas do gabinete:

Note que eu tive que dividir a plataforma do gabinete em duas partes por que nessa escala não ia caber dentro de uma folha A4. A escala que eu usei foi definida levando-se em consideração que a tela do tubo CRT será representada por um display de 3,2 polegadas ligada a um Raspberry Pi.

Na foto a seguir dá pra ver as duas folhas impressas antes de serem recortadas e coladas:

E nessa outra imagem está o modelo da base depois de recortado e colado. Eu não me preocupei em cortar os vazados, pois isso é mero detalhe estético. A peça ficou um pouco torta por que o papel é mole, apesar de eu ter usado folhas de gramatura um pouco mais alta (90 gramas). Pro modelo final acho que vale a pena fazer em impressão colorida em papel de 300g numa gráfica:

O retângulo de papel alí está apenas encostado sobre a base para referência de tamanho e corresponde a um display como esse:

Obviamente será necessário fazer as outras partes do modelo que servem de suporte para a instalação do monitor. Hoje pela manhã eu comecei a esboçar um modelo 3D para a carcaça do “tubo CRT”. Fiz o modelo no programa OpenSCAD usando como referência algumas fotografias de um blog de um belga que está (há quase dez anos) trabalhando na restauração de um gabinete Galaxy Force II Super Deluxe. A principal foto que usei de referência foi essa:

E o modelo 3D incompleto por enquanto está com esse aspecto visual:

A idéia é usar uma impressora 3D para a fabricação de uma peça plástica preta com esse formato. Será necessário fazer uma concavidade no formato do raspberry pi e do display para eles ficarem dentro desse blocão aí. E pensar também em como será a passagem dos cabos.

Esse modelo 3D também poderá ser usado para melhorar o visual do modelo do gabinete que eu comecei a fazer ano passado:

https://twitter.com/juca_gnu/status/691987020663648256

Bem… por enquanto acho que é só! Quem quiser ver a restauração do belga, tem uma thread gigante aqui:

E conforme eu for continuando nesse mini-projeto pretendo ir dando mais updates por aqui.

Happy Hacking,
Felipe “Juca” Sanches

1 curtida

O Golly! Ghost! era a realidade aumentada antes da realidade aumentada. :wink:

2 curtidas

Tipo isso!!!

2 curtidas