Fazer uma máquina de Arcade

Posted on May 27, 2008

Quem roçar na minha geração sabe o que é um salão de máquinas de arcade. Sabe, se for uma pessoa normal e dentro do target deste blog, certamente, como é passar intervalos ou uma tarde livre de aulas (ou não) fechado num salão agarrado a um Bubble BobbleShinobiNew Zealand Story ou Rainbow Islands, só para mencionar alguns. Sabe o que é ser expulso dos salões por ainda não ter idade para os frequentar, sabe o que é poupar no lanche para gastar na jogatana, sabe jogar snooker e setas, sabe truques e maroscas e enganar o responsável do salão de jogos e sabe, acima de tudo, escrever o nome completo com apenas 3 letras e com orgulho.

A minha adolescência ficou profundamente marcada pelos salões de jogos e pelos clássicos de arcade. Mesmo depois com o computador pessoal e mais tarde com as consolas, a tendência foi sempre procurar as versões e as adaptações dos jogos de arcade, infelizmente na sua maioria muito pouco fieis aos originais. Esta minha vivência explica também em parte porque é que o 3D ou os jogos com estratégia nunca me fascinaram particularmente, acho que fiquei viciado na satisfação imediata que só um jogo de máquina (cujo principal objectivo é maximizar o investimento por quantidade de tempo) pode dar. Ainda hoje, e percebo que isto seja uma autêntico sacrilégio para os mais novos, posso dizer que me dá mais gozo jogar uma boa partida de Outrun em 15 minutos do que aprender a jogar, ou jogar, GTA, e que o Spore me fascina muito mais pelos aspectos técnicos e científicos da obra do que pelo jogo em si (provavelmente nunca o vou jogar). E com isto choquei uma boa percentagem dos meus leitores, imagino.

Quando deixei de ser um garoto (para aí por volta dos 30) tornou-se óbvio que eu um dia tinha que ter uma genuína máquina de jogos de arcade em casa, a todo o custo. Só que ter um trambolho destes em casa tem requisitos muito altos em termos de espaço e devidas autorizações à alta autoridade para a harmonia da estética caseira, vulgo AHEC. E foi portanto, e vejam a elegância com que faço a ligação deste post com o post anterior, com a mudança para a casa nova que concretizei a promessa.

O que se segue é uma espécie de making-of para o leitor curioso ou para potencial interessado. Divirtam-se.

Preparação

A primeira coisa que fiz quando decidi que era desta foi comprar um livro da especialidade. Encomendei o Project Arcade à Amazon UK porque me lembrava de uma review sobre o mesmo no Slashdot. O livro revelou-se completamente inútil, devia pertencer à colecção dos for dummies. Apesar de o achar objectivo e de boa leitura, tem 3 grandes defeitos: é tudo muito básico para uma pessoa com a minha formação (electrónica e novas tecnologias), está completamente desactualizado, parou nos 90s, e é muito win32 centric. A melhor fonte de informação para quem quer construir uma Arcade Machine é a Internet, de longe.

A segunda coisa que fiz foi arranjar um “sócio” para a empreitada. Apesar de me considerar desenvencilhado no que diz respeito a bricolage e afins, fazer uma besta destas requere bons conhecimentos sobre a arte da carpintaria e eu não queria arriscar e ficar com uma obra imperfeita. Foi aqui que o meu amigo Fernando Afonso entrou em acção. Quem melhor do que o ‘panhol para me ajudar com a escolha dos materiais, das ferramentas e com a carpintaria? Fizemos um acordo, ele ajudava-me nesta e eu ajudava-o na construção da dele, mais tarde. E vou ajudar.

Terceiro, convencer a mulher a hipotecar a varanda da casa nova por pelo menos 1 mês, com toda a sujidade, incómodo e barulho associados.

Modelo do gabinete

Há muitos modelos de máquinas de Arcade e muitos planos para cada uma delas, pagos ou gratuitos. O livro Project Arcade traz alguns no CD. Mas eu queria o modelos mais clássico de todos, aquele que mais se via nos salões em Portugal, o armário vertical com o ecrã ligeiramente na diagonal, consola ao nível do banco, com dois joysticks, botões de lado (para o Pinball Action, claro), moedeiro em baixo a bater nos joelhos, e mostrador luminoso com o tema do jogo em cima. Não foi fácil mas consegui encontrar exactamente o que queria aqui no Mameroom por $29 USD.

Os planos são bastante completos com instruções detalhadas passo a passo. Mas para ser honesto, o que mais aproveitei dos planos foram as medidas exactas das peças do “cabinet” porque acabámos por usar outras técnicas de montagem e colagem, na minha opinião mais robustas do que as propostas. Mas isto, mais uma vez, depende das habilitações de cada um para a carpintaria. Se seguirem estes planos à risca também ficam bem servidos.

Materiais

Eu perdi a conta e memória à quantidade de material e ferramentas que comprei para fazer a caixa da Arcade, mas foi muita tralha, e comprei tudo no AKI. Ele foram madeira (duas tábuas grandes e pesadas, de MDF de 16mm, que o AKI teve de levar a casa), massa reparadora para as imperfeições e buracos, tinta preta para madeira, lâmpada fluorescente para o mostrador, dobradiças, parafusos, cola para madeira, tacos, madeira adicional (ripas) para os suportes internos, lixa, vidro, acrílico, máscaras, óculos e proteções, pincéis, rolos, eu sei lá.

Ferramentas, assim de cabeça, berbequim (de preferência com controle electrónico de velocidade), coroa para fazer buracos grandes, brocas, serra eléctrica de recorte, aparafusadora eléctrica, um esquadro grande, fica métrica, e uma tupia que dá jeito para os buracos pequenos e que requerem precisão.

Aconselho também a terem uma boa mesa de carpinteiro ou cavaletes. No meu caso usei (com muito cuidado) a mesa de comer da varanda e acabei por lhe fazer um lenho com a serra eléctrica. “Muito profissional sim senhor”, disse a patroa quando viu o desastre.

Quanto ao televisor tinha duas opções. Ou ia para o state of the art e escolhia um TFT grande e barato de 4:3 e não tinha que me preocupar com ligações ao PC nem com lesões nos olhos, ou optava pelo genuíno ecrã de tubo catódico, vulgo CRT, a bombar com varrimentos de 15k/50Hz em que se notam claramente os espaços entre as linhas de pixels dos jogos. Optei, claro, pelo último. Eu queria a experiência orignal em toda a sua glória. Comprei um televisor Mitsai de 70cm na Worten por menos de 150 Euros com 2 entradas SCART (e RGB activo, isto é muito importante como verão mais abaixo).

Construindo a caixa

Construir o gabinete é trabalho puro de carpintaria e aqui têm duas opções: ou percebem da coisa e dão o vosso melhor aproveitando as medidas dos planos ou seguem religiosamente cada um dos passos dos planos e rezam para que corra tudo bem. Eu optei pela primeira, graças à ajuda do carpinteiro Afonso, claro.

A inovação no nosso caso foi a união das tábuas. Os planos sugerem apenas umas dobradiças mas nós para além disso colámos as tábuas com cola de madeira e com tacos e pequenos furos (do tipo mobilia do Ikea, só que melhor).  Colocámos ainda umas ripas em pontos estratégicos, por dentro. Ficou sólida (e pesada) que nem um rochedo, posso-vos dizer.

Inovámos também na parte de trás ao fazer uma porta de abrir para ter acesso facilitado ao interior no futuro. As arestas das tábuas foram trabalhadas com lixa e não com máquina (o MDF é fácil de trabalhar, não é muito duro) e também ignorámos a sugestão de ter uma gaveta para teclado na parte frontal, achei que isso seria pouco fiel ao original (embora seja cómodo para efeitos de manutenção, admito).

Antes de terminar o trabalho, encastrámos a televisão dentro da estrutura. Este passo é complicado e por isso aqui ficam algumas dicas:

  • Comprem uma televisão com as medidas correctas. No meu caso comprei uma Mitsai de 70cm (medidas do cinescópio) que encaixou que nem uma luva. Não se esqueçam, mais uma vez, que deve ter entradas SCART com os pinos de RGB activos (a maioria dos chipsets modernos têm).
  • Ao retirarem o cinescópio e a “board” da televisão tenham muito cuidado. Certifiquem-se que a televisão nunca foi ligada, ou pelo menos que não foi ligada recentemente, e mesmo assim tenham cuidado. Uma descarga nas vossas mãos do condensador de alta tensão que as televisões CRT têm para estabilizar a alimentação dos tubo catódicos pode-vos fulminar, literalmente. Foram avisados.
  • O cinescópio é muito pesado, especialmente um destas dimensões. Quando pegarem nele façam-no com ajuda e certifiquem que a estrutura da caixa está bem feita para o encaixar e o suportar 3.2 prendam-no muito bem, com parafusos.
  • O plano B, que é muito mais seguro, é não esventrarem a televisão e colocarem-na dentro caixa inteira. A parte má é que normalmente há imenso plástico à volta do cinescópio propriamente dito e não só vai ficar mais inestético e pouco realista como possivelmente terão que lá meter um televisor com uma área visível de imagem substancialmente inferior para caber tudo.

No fim fizemos uma maratona de lixa na mão, arredondámos as arestas, as imperfeições foram todas corrigidas com a ajuda de massa branca, a madeira ficou tão limpa e tão suave como a pele de um bébé.

E terminámos com a pintura. Duas de mão ou mais, tinta boa, preta, rolos (não usem pincéis para as grandes superfícies), já sabem uma de mão na vertical, outra na horizontal, não ajavardem. Se não sabem pintar, peçam ajuda a quem saiba porque uma má pintura estraga o projecto. E não se esqueçam, não pintem nada sem lixar e limpar muito bem a madeira primeiro.

Painel de comandos

Esta é uma das partes mais críticas da máquina e eu queria que ficasse perfeito e ia investir em qualidade. Queria aqueles joysticks industriais feitos com micro-switchs em que podemos mandar-lhes uns bons murros sem constrangimentos, idem para os botões.

Encomendei um sortido de comandos à Ultimarc em UK, uma casa especializada em material para Arcades.

  • Mag-Stik pretos.
  • 8 botões de cores várias e 2 botões com 1UP e 2UP.

Da Ultimarc veio também uma interface I-PAC, aonde liguei os comandos todos. Esta interface transforma os interruptores dos comandos em teclas normais de um teclado PS/2 ou USB. Parece simples mas não é bem assim porque para além disto o interface tem uma série de features cruciais para gaming: pouco delay de resposta, não tem problemas de ghosting (várias teclas premidas ao mesmo tempo em secções diferentes) nem stuck keys, etc, etc. É muito bom. O plano B aqui, que não recomendo pelos motivos enumerados, é usar o controlador de um teclado velho desmontado.

E veio também, e este é o toque de requinte da máquina para verem o meu empenho, um moedeiro electrónico ”COIN mech” que liguei correctamente ao I-PAC e que viria a desempenhar as suas funções em pleno, ou seja, meter moeda para ter créditos. O moedeiro é uma obra de arte, é programável e funciona por comparação de moedas (peso e dimensões). Basicamente basta-me meter uma moeda exemplo no mecanismo e ele compara-a com as outras que caiem pelo buraco.

O painel e o moedeiro ficaram um mimo como podem ver nesta foto. Wiring aqui. Ligação ao I-PAC aqui. Foto do moedeiro pela parte de dentro.

Acabamentos

Acabou a poeirada. Entramos nos detalhes e no interior da caixa.

Altifalantes: dois, por cima dos comandos. Aproveitei os da televisão. Mais tarde arranjei as tampas pretas com redes em esponja que coloquei da parte de fora.

Luz fluorescente, comprei uma daquelas baratas no AKI com muito pouca potência e aparafusei-a no compartimento dos altifalantes. Mais tarde mandei fazer um painel em “Black light” (aqueles que se usam nos mostradores de comida luminosos do Mc Donalds) com um tema do meu jogo favorito de todos os tempos, o Bubble Bobble. Encontrei a “marquee” em formato vectorial e enviei para a Tutitex que me devolveu o painel uns dias depois. Afixei-o à caixa com uma proteção em acrílico. Ficou catita.

“Board” da televisão, coloquei-a por trás do cinescópio em cima de uma prateleira estratégicamente montada à altura certa. Mais um vez, cuidado com o maldito condensador. Deixei o LED receptor de infravermelhos com linha de vista para o acrílico do painel para poder usar o controle remoto da televisão do lado de fora, se for preciso.

Vidro protector do ecrã. Tirei as medidas e mandei cortar um quadrado de vidro no AKI. O Afonso pintou as bordas do vidro com um spray de tinta preta para delinear as medidas exactas do cinescópio. Ficou 5 estrelas.

PC

Comprei um PC de linha branca Pentium IV 3Ghz com disco de 250 Gigs a preços da chuva no Intermarché, junto às pastilhas elásticas e aos rebuçados. Na realidade aqui, para correr Mame exclusivamente, qualquer chasso reciclado deve dar. Eu simplesmente por um lado não tinha chasso nenhum na garagem e por outro queria algum poder de processamento para fazer outras brincadeiras. A parte muito má deste PC é que a ventoinha faz uma barulheira inacreditável, é algo que ainda vou ter que resolver com alguma imaginação. Sugestões para sistemas de arrefecimento silenciosas?

A caixa do PC foi toda desmontada, fiquei só com a motherboard, disco e fonte de alimentação. Acomodei tudo dentro da Arcade em cima de prateleiras montadas para o efeito.

Conselhos sobre PCs:

  • Linha branca ou material reciclado funciona bem, não é preciso nada de muito sofisticado. Verifiquem só se não é muito barulhento porque uma caixa de madeira deste tamanho faz sempre alguma ressonância.
  • De preferência, mas não necessariamente, comprem uma board que suporte ACPI com sensores de temperatura e velocidade variável da ventoinha para poderem ter um controle dinâmico por software. O Linux suporta bem isto.
  • A placa gráfica é importante mas pode ser externa. Leiam o ponto sobre a placa gráfica mais abaixo.

Software

A escolha do software para a máquina de Arcade é determinante para termos uma réplica fidedigna. Este é o meu setup mas há muitos outros possíveis, tudo depende da vossa experiência e do vosso conforto com cada uma das opções.

Eu queria usar Linux por isso instalei a distribuição Debian, versão “unstable” (que em Debian, como todos sabem, quer dizer estável e com as últimas versões das libs todas) com kernel 2.6.17-2.

Quanto ao emulador, depois de muita pesquisa, optei pelo Advance Mame que é simplesmente soberbo. É um port do mame especialmente desenhado precisamente para máquinas de Arcade e para CRTs, televisões e monitores com frequências fixas. Funciona em Linux, Mac e Windows e tem uma série de características que fazem deste software a escolha mais profissional possível. Algumas:

  • Suporta uma porrada de placas gráficas/frameworks e modos de vídeo, mesmo as mais bizarras, como vão ver.
  • Tem built-in uma série de efeitos gráficos, resizing, streching.
  • Suporta scripting e invocação de scripts externos, por evento.
  • Os ficheiros de configuração são ficheiros de XML facilmente editáveis.
  • Permite mudar grande parte dos parâmetros em run-time, durante os jogos, através de menu especiais.
  • É orientado para a máquina de jogos, arranca em full-screen com um ambiente gráfico (AdvanceMenu) que pode ser personalizado (e muito flexível) que nos permite escolher o jogo. Semelhante aquelas máquinas mais modernas, multi-game, só que melhor.

Lista completa de “features” do AdvanceMame aqui e do AdvanceMenu aqui e snapshots também.

A configuração inicial do AdvanceMame não é pera doce no entanto. Vamos começar pela compilação.

Para suportar bem a minha placa gráfica tive que usar a svgalib (versão 1.4.3, pacote libsvga1 do Debian). A outra opção era Frame Buffer mas tentei até à exaustão e não consegui por aquilo a funcionar direito. Também experimentei SDL mas sem sucesso. Atenção que este trial and error depende muito da placa gráfica que tiverem (ver mais abaixo). Para o som usei o framework alsa, claro. A svgalib controla o teclado e a placa gráfica.

Opções do configure do advmenu:

$./configure –prefix=/servers/mame/ –enable-svgalib

Eis as opções do configure do advmame:

$ ./configure –prefix=/servers/mame –enable-svgalib –enable-alsa

Placa gráfica e VGA

A escolha da placa gráfica é importante quando decimos usar uma televisão em vez de um monitor. Precisam de uma placa que tenha modos gráficos compatíveis com 50 a 60Hz de varrimento vertical e 15.6Khz de varrimento horizontal, que é como quem diz PAL e NTSC. A minha escolha foi uma GeForce4 MX 440 AGP 8x que é completamente overkill para jogar mame mas que se dane, funciona com TVs.

Para esta placa e para o setup descrito svgalib+mameadvance, vão-me agradecer estes 3 ficheiros:

Agora a parte complicada. Uma placa gráfica tem normalmente saídas VGA (e eventualmente uma saída de S-Video que não vão querer usar, confiem em mim). Ora do outro lado (na televisão) está uma entrada SCART. Embora o pinout VGA seja decomposta em sinais de RGB e as frequências de varrimento já estejam correctas, não é possível fazer uma ligação directa ao *pinout *da SCART. Isto porque há algumas diferenças nas normas que têm que ser corrigidas primeiro.

Sem medo. O grande Tim Worthington fez um guia à medida para resolver o problema: “How to use a SCART TV as a Monitor for MAME”. Eu optei pela versão com o 74HC86 com as portas XOR porque é mais seguro do que a versão simples com diodos. Comprei os componentes na Dimofel e uma placa de circuito impresso daquelas já perfuradas com pistas paralelas para fazer pequenos protótipos e em 30 minutos fiz o circuito, funcionou à primeira. Aqui está uma foto dele em acção. A alimentação do IC fui busca-la ao PC, a um daqueles conectores para os discos rígidos.

A nitidez e o contraste da televisão ficaram impressionantes. Notam-se os pixels bem definidos, só visto. Nem pensem em usar vídeo composto ou daqueles adaptadores baratos de VGA para SCART, vai ficar um ranho.

ROMs

Para jogar jogos de Arcade num emulador, é preciso ter as ROMs desses jogos e é preciso serem donos dos mesmos, caso contrário podem estar a cometer alguma ilegalidade. Eu poderia dizer que há torrents em barda com a coleção completa de ROMs ou sites com arquivos online mas não seria correcto. Afinal de contas ainda há muitas máquinas das décadas de 80 e 90 a fazerem dinheiro por aí.

Há também uma série de ROMs que foram cedidas sem direitos de autor pelos seus creadores. E são fantásticas (not).

Artwork

Há uma série de icons, screenshots, snapshots e afins que dão suporte ao Advance Menu para ficar tudo bonitinho nos menus de selecção. Aqui está uma boa coleção de artwork para o Mame. Coloquem os Snaps em /servers/mame/config/snap.

O Advance Mame permite ainda, em run-time durante os jogos tirar snapshots ou até excertos de vídeo e som com um simples premir de tecla, erhm, botão, e que podem depois ser incorporados no Advance Menu.

Startup

Os scripts de arranque da máquina também foram um desafio, por um motivo, porque para o teclado (leia-se painel de controles) funcionar com a svgalib esta necessita de apoderar-se de um tty, como se estivéssemos feito login numa consola e corrido o advmenu manualmente. Isto coloca de parte qualquer abordagem pela iniittabdaemontools ou /etc/init.d/ porque sem o login efectivo de um utilizador na consola e de um shell, não há tty para ninguém e o advmenu vai-se queixar (via svgalib) que não consegue ter controlo do teclado. Na realidade, vim a descobrir agora mesmo enquanto escrevo este post, este problema é mencionado na FAQ do Advance Mame aqui (ainda bem que eu perdi horas a bater com a cabeça na parede há uns meses atrás).

A solução que acabei por escolher foi: instalei o mingetty e configurei-o na inittab para fazer autologin (que é uma das suas features). Assim:

1:2345:respawn:/sbin/mingetty –autologin root tty1

Desta forma, quando o PC arranca é feito um login automático de root em cima do tty1. Depois basta meter isto no ~root/.bashrc:

export PATH=$PATH:/servers/mame/bin
export ADVANCE=/servers/mame/config
export TERM=linux
tty | grep tty1 && ( while [ 1 ]; do
cd /servers/mame/logs
/servers/mame/bin/advmenu --log
if [ -f /tmp/quitloop ]
then
sleep 3600
fi
done; )

O ficheiro /tmp/quitloop dá jeito se quisermos parar o advmenu completamente.

Custo total

Entre material, ferramentas que não tinha, televisor, computador, placa, botões e outros, devo ter gasto uns 1500 a 2000 Euros, estimo. Mas tendo as ferramentas, o PC e eventualmente a televisão é possível realizar o projecto por muito menos dinheiro.

Resumo

Este projecto foi um dos mais interessantes que já fiz, deu-me um gozo brutal montar isto, desde a primeira tábua, aos acabamentos, à electrónica e ao software. E a obra ficou impecável, diga-se de passagem. Quase ninguém acredita, quando vem cá a casa, que isto feito de raíz.

Só me falta fazer uma coisa, montar o último circuito do Tim para me ligar a televisão automaticamente sob as ordens do PC.

Depois de escrever isto tive esta ideia. E que tal, no Codebits deste ano 2008, fazer uma maratona a montar uma (ou mais) destas? Já a estou a ver depois junto aos elevadores, no SAPO.

{% include caroussel.html prefix=“fazer-uma-maquina-de-arcade-” suffix=".jpg" min=“3” max=“4” %}

Espero que tenham gostado. Dúvidas, perguntas, etc, coloquem-nas nos comentários, eu tentarei responder.