Ano 1 · Ano 2 · Ano 3 · Ano 4 · Ano 5 · Ano 6 · Ano 7 · Ano 8 · Ano 9
Tópicos › Primeiro ano › Arcades: réplicas funcionais e circuitos sem CPU
O trabalho com arcades teve três frentes principais. A primeira foi a análise da CPU de motores do Galaxy Force 2 Super Deluxe, para uma réplica em miniatura movida por um Raspberry Pi. A segunda foi a réplica funcional do Golly Ghost, controlada pelo MAME. A terceira foi a transcrição dos esquemáticos do Atari Gran Trak 10, um jogo sem CPU, para o sistema de netlist do MAME, que entrou no MAME 0.201 como documentação parcial do circuito.
Primeiro ano: novembro de 2017 a outubro de 2018
Felipe analisou o assembly do Z80 que controla os motores do cockpit (SEGA Y-Board) e citou PRs seus no MAME sobre essa CPU. Para a réplica em miniatura, compilou o MAME num Raspberry Pi 3, o que só foi possível com swap em ZRAM. Sob o X o desempenho foi ruim, e a tentativa com DirectFB terminou em segfault.
Felipe analisa o assembly do Z80 que controla os motores do cockpit giratório do Galaxy Force 2 Super Deluxe (driver segaybd.cpp do MAME). Ele identifica três grupos de endereços de escrita (0x8000, 0x9000 e 0x9400) e levanta a hipótese de que sejam canais de comunicação com o 68000 da placa principal, em que pares de escritas de 8 bits formariam valores de 16 bits; Werner nota que no bloco 0x9400 é carregado $80 em vez de $00. Em seguida orienta Werner a compilar o MAME e rodá-lo em modo debug e explica a estrutura do driver e os callbacks de saída do chip de I/O SEGA 315-5296. Cita dois PRs seus no MAME: um que mapeia os bits de porta usados como retorno do movimento dos motores (sensores de fim de curso) e outro que declara o Z80 da CPU de motores. O objetivo declarado é uma réplica em miniatura movida pelos sinais do emulador num Raspberry Pi.
Felipe compila o MAME (só o driver da SEGA Y-Board) num Raspberry Pi 3 com Debian. A compilação só passou depois de configurar 1 GB de swap comprimido com ZRAM. O MAME rodou sob o X com desempenho ruim. Felipe recompilou a SDL2 com aceleração por hardware e tentou usar o framebuffer sem X via DirectFB, compilado no próprio Pi; a tentativa terminou em segfault. Ismael Luceno observou que a SDL 1.2 suporta fbdev diretamente e a SDL 2 não. Também se discutiram displays LCD pequenos (320x240) para a réplica, o limite de desempenho de displays via SPI e o uso de frameskip.
Num laptop, o MAME emula a placa Namco System 2 e envia o estado de displays, LEDs e solenoides, por um script Python, a um Arduino Mega. O projeto foi apresentado numa palestra.
Affonso compartilhou um vídeo do painel de tempo e pontuação da réplica do Golly Ghost, gravado com Felipe. Depois Felipe mostrou os solenoides sincronizados com o jogo. O MAME, rodando num laptop, emula a placa Namco System 2 e envia à console o estado de displays, LEDs e solenoides. Um script Python repassa esses dados pela serial a um Arduino Mega, que multiplexa os displays e aciona relés. Ronaldo e Felipe discutiram o escopo de preservação do MAME: fidelidade do modelo, documentação elétrica e comportamento não determinístico. Felipe registrou que as armas do jogo, com mecanismo de recuo por solenoide, também foram usadas em Steel Gunner e Gunmen Wars. O projeto foi apresentado numa palestra.
Felipe transcreveu os esquemáticos do Gran Trak 10 (1974), primeiro no KiCad e depois no sistema de netlist do MAME. Foi corrigindo sinais até o sprite do carro aparecer. O trabalho virou o PR #3795, com grande parte dos esquemáticos, e entrou no MAME 0.201 como documentação parcial do circuito.
Werner compartilhou material sobre o Wheels II (1975), da Midway, um jogo de corrida feito quase só com TTL e que usa uma ALU 74181. Felipe comparou com o Gran Trak 10, da Atari, indicou o relato de Ed Fries sobre o conserto de uma placa desse jogo e contou que transcreveu cerca de 40% do esquema do Gran Trak 10 no KiCad.
Felipe encaminha o relato de Augusto Almeida, que recebeu a versão colorida do Taito Speed Race, um jogo sem CPU, e pretende restaurá-lo. Felipe menciona seu projeto de transcrever para o KiCad os esquemas do Gran Trak 10 da Atari, que também não tem CPU e usa ROM só para os gráficos.
Felipe transcreve, num branch do seu fork do MAME, os esquemáticos do Gran Trak 10 (1974) para o sistema de netlist. A correção de um flip-flop que gerava o VSYNC errado elimina uma linha vermelha no topo da tela; depois, a correção do roteamento de um sinal de clear no gerador de sinais de vídeo melhora o resultado visual, e o sprite do carro e seu posicionamento começam a aparecer. Um participante sugere o simulador Qucs, que Felipe considera trabalho dobrado, e compartilha o service manual da Atari.
Junto com o anúncio do MAME 0.200, Felipe diz que espera ter o Gran Trak 10 na versão seguinte. Ele abre o pull request #3795 com grande parte dos esquemáticos do jogo em netlist, e o MAME 0.201 sai com essa documentação parcial do circuito, que ele pretende continuar.
Uma busca no código do MAME encontrou 23 jogos NETLIST_CPU, que rodam com desempenho baixo. Felipe apresentou a libstickbridge, que liga software a hardware numa FPGA iCE40, e compartilhou o projeto Ambush TTL.
Uma busca no código do MAME mostra 23 jogos do tipo NETLIST_CPU, feitos com lógica discreta em vez de CPU e simulados numericamente pelo MAME, com desempenho baixo. Felipe apresenta a libstickbridge, biblioteca em C que liga software (possivelmente o próprio MAME) a hardware instanciado na FPGA do iCE40 ICEStick via SPI sobre USB. Gustavo Romero e Affonso discutem placas PCI ou ISA com FPGA ou CPLD.
Felipe compartilha o projeto Ambush TTL, de Grant Haack.
Felipe indicou seu post no blog do MAMEdev sobre como recuperou uma placa CPS2 de Street Fighter Zero 2 achada numa central de reciclagem. Compartilhou também esquemáticos de monitores de arcade e um vídeo sobre como adicionar entrada RGB a uma TV comum, técnica que sugeriu usar para montar um chicote JAMMA.
A conversa partiu de uma foto sobre a criação de sprites. Felipe indicou seu post no blog do MAMEdev sobre como recuperou uma placa CPS2 brasileira de Street Fighter Zero 2. A placa foi achada no lixo de uma central de reciclagem de eletrônicos em Brasília e dada a ele de presente.
Felipe compartilhou uma coleção de manuais e esquemáticos de monitores de arcade e comentou os avisos de alta tensão e de proteção contra raios X.
Felipe compartilha um vídeo sobre adicionar entrada RGB a uma TV de consumo e sugere usar a técnica para montar um chicote JAMMA.