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