Tópicos › Arcades, pinball e videogames em lógica discreta
34 conversas · anos 1 a 8 do grupo

No primeiro ano do grupo (2017-2018), o tema girou em torno de réplicas funcionais de arcades e de jogos feitos sem CPU. Felipe "Juca" Sanches analisou o assembly do Z80 que controla os motores do cockpit do Galaxy Force 2 Super Deluxe (SEGA Y-Board) e citou dois PRs seus no MAME: um mapeia os sensores de fim de curso dos motores e o outro declara essa CPU. O objetivo era uma réplica em miniatura movida pelo emulador num Raspberry Pi 3. O MAME só compilou no Pi com swap em ZRAM, rodou mal sob o X, e a tentativa com DirectFB terminou em segfault. Affonso Amendola e Felipe mostraram em vídeos uma réplica funcional do Golly Ghost: o MAME emula a placa Namco System 2 num laptop e, por um script Python e a serial, repassa a um Arduino Mega o estado de displays, LEDs e solenoides; o Arduino multiplexa os displays e aciona relés. O projeto foi apresentado numa palestra. Felipe também transcreveu os esquemáticos do Atari Gran Trak 10 (1974), primeiro no KiCad e depois no sistema de netlist do MAME. Foi corrigindo sinais até o sprite do carro aparecer, abriu o PR #3795, e o MAME 0.201 saiu com essa documentação parcial do circuito. No mesmo período, uma busca no código do MAME encontrou 23 jogos NETLIST_CPU, e Felipe apresentou a libstickbridge, que liga software a uma FPGA iCE40. Ele também indicou seu post no blog do MAMEdev sobre a recuperação de uma placa CPS2 de Street Fighter Zero 2 achada numa central de reciclagem.
No segundo ano (2018-2019), Felipe desmembrou um exemplar do livro "How to Design and Build Your Own Custom TV Games" (1978) e escaneou as cerca de 550 páginas, que publicou no repositório ArqueologiaDigital no GitHub. Leonardo Roman publicou no Datassette uma versão com OCR. Felipe começou a converter o texto para LaTeX e a desenhar no KiCad a placa SourceBox do livro, e anunciou para 2019 um grupo de estudos no Garoa. Sua tentativa de montar em protoboard um gerador de vídeo a partir de EPROM não funcionou; o assunto voltou depois com os vídeos de Ben Eater, em conversas sobre geradores de caracteres e o Motorola 6845. Felipe também indicou os esquemáticos do Magnavox Odyssey que publicara no Fórum Fiozera. No mesmo ano ele trabalhou numa máquina de pinball baseada em Pinball Fantasies: vetorizou a arte do playfield e, no Garoa, instalou mais luzes controladas por um único MAX7219. Também consertou uma placa JAMMA de Ms. Pac-Man trocando cinco capacitores ressecados do áudio e cortando duas trilhas para corrigir as cores.
No quarto ano (2020-2021), o Pinball Fantasies voltou à conversa. L. compartilhou o código-fonte do port para MS-DOS, e Felipe perguntou como o DOS carrega um .EXE, com explicações de Ismael Luceno. A ideia era carregar uma mesa do jogo sem o MS-DOS, como firmware de uma placa controladora de pinball, e validá-la num fork do MAME. Felipe também cogitou projetar no KiCad uma placa FPGA com conector JAMMA baseada num chip com toolchain livre, como o iCE40, e mostrou seus primeiros experimentos de desenvolvimento para a SEGA Model 3. No oitavo ano (2024-2025), ele compartilhou o pfr, reimplementação em Rust do Pinball Fantasies. Pela documentação do pfr, descobriu que o formato de imagem que decodificara em 2003 num esboço em QBasic se chama Amiga PBM. Compilou o pfr no próprio Raspberry Pi e removeu o código de janelas, reduzindo as dependências de 212 para 89 crates, enquanto RicBit reduziu o binário x86 de 24 MB para 1,2 MB. Felipe revelou então o plano de usar o código num controlador de máquina de pinball.
Ano a ano: Ano 1 · Ano 2 · Ano 4 · Ano 8
Felipe analisou a CPU de motores do Galaxy Force 2 Super Deluxe e citou seus PRs no MAME, e ele e Affonso Amendola mostraram a réplica do Golly Ghost com MAME, Arduino e solenoides. Transcreveu o Gran Trak 10 para netlist (PR #3795), que entrou no MAME 0.201 como documentação parcial; uma busca no código do MAME encontrou os jogos NETLIST_CPU, e Felipe apresentou a libstickbridge para FPGA iCE40.
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.
O livro Custom TV Games foi digitalizado e publicado no GitHub, ganhou uma versão com OCR de Leonardo Roman no Datassette, e Felipe anunciou para 2019 um grupo de estudos no Garoa e começou a desenhar a placa SourceBox no KiCad. Felipe trabalhou no playfield de sua máquina de pinball baseada em Pinball Fantasies e consertou uma placa JAMMA de Ms. Pac-Man.
As cerca de 550 páginas foram digitalizadas e publicadas no GitHub, e Leonardo Roman publicou uma versão com OCR no Datassette. Felipe começou a converter o OCR para LaTeX e a desenhar a placa SourceBox no KiCad, e anunciou para 2019 um grupo de estudos no Garoa.
Felipe recebeu com meses de atraso um exemplar extraviado do livro de 1978, ficando com dois, e desmembrou um deles para escanear as cerca de 550 páginas. Publicou os capítulos em PDF no grupo e pôs as imagens TIFF e o PDF completo no repositório ArqueologiaDigital no GitHub. Erin o ajudou a tratar as imagens com curvas de níveis no GIMP, e Felipe cogitou aplicar o tratamento a todas as páginas para reduzir o tamanho do PDF. Leonardo Roman processou as páginas no Scantailor e publicou no Datassette uma versão de 28 MB com OCR.
Felipe começou a converter o OCR do livro para LaTeX enquanto revisava o texto e apontou a placa-padrão da Radio Shack sugerida pelo autor para as montagens. Ele anunciou para 2019 um grupo de estudos de projeto eletrônico digital de videogames retrô no Garoa, com inscrição pelo wiki. Também começou a desenhar no KiCad a placa SourceBox do livro e criou um grupo de Telegram para o estudo.
Felipe montou em protoboard um gerador de vídeo a partir de EPROM, que não funcionou, e capturas de vídeo composto foram comparadas com as figuras do livro. A partir dos vídeos de Ben Eater, discutiram-se registradores na saída da EPROM, geradores de caracteres e o Motorola 6845.
Felipe mostrou uma montagem em protoboard, feita só com lógica e sem microcontrolador, para gerar sinal de vídeo a partir de uma imagem gravada em EPROM. A montagem não funcionou; a ideia era chegar pelo menos a um shield VGA para Arduino. Ronaldo recomendou dividir o circuito em blocos (sincronismo horizontal e vertical, contador de endereços) e testar cada um separadamente.
Nano Gennari comparou capturas de sinal de vídeo composto feitas no osciloscópio com as figuras do livro de TV games. Ronaldo mostrou uma linha de vídeo de um TK3000 em osciloscópio analógico e digital, onde se vê o burst de cor, e Aylons Hazzud identificou ali um padrão de barras de cor.
A partir dos vídeos de Ben Eater sobre uma placa de vídeo em protoboard, Felipe "Juca" Sanches contou sua tentativa anterior de um circuito parecido baseado no livro "How to Design and Build Your Own Custom TV Games", com o objetivo de rodar a VM do Another World. Discutiram-se o uso de um registrador na saída da EPROM, ROMs por cor e o projeto de um gerador de caracteres. Emerson Moura citou o Motorola 6845, usado em placas CGA e de 80 colunas do Apple II.
A notícia da recriação do Odyssey por estudantes da Universidade de Pittsburgh levou Felipe a indicar os esquemáticos que publicara no Fórum Fiozera.
VictorEmm compartilhou a notícia de que estudantes da Universidade de Pittsburgh recriaram o Magnavox Odyssey. Felipe disse que não estava claro se fizeram a captura do esquemático, uma PCB ou um simulador. Ele indicou o tópico no Fórum Fiozera onde tinha publicado seus esquemáticos do Odyssey dois anos antes.
A vetorização da pixel art do playfield e as luzes controladas por um único MAX7219.
Felipe mostrou o antes e o depois da vetorização da arte do playfield da sua máquina de pinball baseada em Pinball Fantasies. Ele observou que vetorizar pixel art às vezes pede vetores em zigue-zague de 90 graus para manter o aspecto quadriculado.
No Garoa, Felipe instalou mais luzes no playfield da máquina de pinball usando um único controlador de matriz de LEDs 8x8 MAX7219, o que evita multiplexar por software ou usar vários shift registers. Ele publicou um vídeo do resultado.
Felipe comprou a placa e a consertou. A instabilidade do sincronismo vertical foi resolvida com a troca de cinco capacitores ressecados do áudio, e as cores foram corrigidas cortando duas trilhas.
Felipe comentou o formato de arcade de parede, que fica mais compacto por usar LCD em vez de CRT; Erin disse preferir bartops. Felipe mencionou que comprou uma placa JAMMA de Ms. Pac-Man.
Felipe "Juca" Sanches relatou o conserto de uma placa JAMMA de Ms. Pac-Man (Midway, 1981): a instabilidade do sincronismo vertical, que piorava com o som, foi resolvida trocando os cinco capacitores ressecados do circuito de áudio. As cores foram corrigidas cortando duas trilhas e trocando os sinais com pedaços de terminais de componentes. FTMaciel e ele comentaram placas de Mortal Kombat com defeito que têm guardadas.
Máquinas resgatadas em Wisconsin, um fliperama abandonado em Fukushima, o fliperama da SEGA em Akihabara e indicações de lojas e fliperamas retrô em Tóquio.
Foram compartilhadas reportagens sobre o resgate de máquinas de arcade em um galpão rural em Wisconsin e sobre um fliperama da Sega abandonado na zona radioativa de Fukushima. Erin mostrou uma pista de boliche que parecia não ter sido modernizada desde a década de 1990.
Durante uma viagem a Tóquio, Felipe "Juca" Sanches mostrou uma mesa de mahjong eletrônico e o fliperama da SEGA em Akihabara. L. indicou a loja Super Potato, Felipe compartilhou guias do fliperama Mikado e de outros arcades, e Hugo (Agaelebê) sugeriu a Bic Camera. Comentou-se o preço alto do X68000, e Ricardo Bánffy mencionou as workstations Unix NWS da Sony.
Com o código-fonte do port de Pinball Fantasies para MS-DOS compartilhado por L., Felipe propôs rodar uma mesa sem o DOS, como firmware de uma placa controladora de pinball, e validá-la num fork do MAME. Também comentou a ideia de uma placa FPGA com conector JAMMA e mostrou seus primeiros experimentos de desenvolvimento para a SEGA Model 3.
Felipe notou que o Pinball Fantasies força o volume da Sound Blaster 16 no seu 386, e L. compartilhou o código do port para MS-DOS. Juca propôs carregar uma mesa do jogo sem o MS-DOS, como firmware de uma placa controladora de pinball, ideia que seria validada num fork do MAME.
Felipe "Juca" Sanches arranjou um 386 com DOS 5 e Windows 3.1. Depois de abrir e cancelar por engano o configurador do Windows, o Windows passou a acusar configuração incompleta; ele o recuperou trocando o SYSTEM.INI pelo backup SYSTEM.000. Também notou que o Pinball Fantasies força o mixer da Sound Blaster 16 ao volume máximo, o que levou a uma conversa sobre a qualidade de ports.
L. compartilhou o repositório com o código-fonte do port de Pinball Fantasies para MS-DOS e perguntou se Felipe "Juca" Sanches o tinha enviado ao archive.org, o que ele negou. L. também compartilhou o acervo digitalizado da revista BYTE no vintageapple.org, que Shideravan sugeriu como material para o Datassette.
Juca perguntou como o MS-DOS carrega e executa um .EXE e como se roda um programa maior que o espaço de endereçamento de um segmento. Kretcheu indicou o pev. Ismael Luceno explicou o cabeçalho do .EXE, a carga de segmentos e os loaders do DJGPP e do FreeDOS. Juca descreveu a ideia de carregar uma mesa do Pinball Fantasies sem o MS-DOS, substituindo as chamadas do DOS e da VGA BIOS, para fazer do jogo o firmware de uma placa controladora de pinball. A ideia seria validada com um emulador da placa num fork do MAME. RicBit sugeriu um emulador num Raspberry Pi, e Ismael lembrou a questão do copyright.
Felipe comentou a ideia de uma placa FPGA com conector JAMMA e seus primeiros experimentos de desenvolvimento para a SEGA Model 3. Também se falou do scroll por coluna no Mega Drive, do documentário sobre a M2 e do reparo da placa do Pole Position.
Felipe "Juca" Sanches disse querer uma placa FPGA com conector JAMMA, baseada em um chip com toolchain livre como o Lattice ICE40, para carregar cores de arcades em um gabinete. Como acha que ela ainda não existe, cogitou projetá-la no KiCad.
Felipe "Juca" Sanches compartilhou um vídeo dos seus primeiros experimentos de desenvolvimento para a placa SEGA Model 3. FTMaciel comentou que tem placas do adaptador usado e que a sua não funcionou de primeira por causa de um transistor defeituoso.
Felipe "Juca" Sanches compartilhou um vídeo sobre técnicas de um jogo de Mega Drive, e RicBit comentou que registradores de scroll vertical separados por coluna são exclusivos do Mega Drive.
Augusto Almeida recomendou o documentário "M2: Complete Works", do My Life in Gaming. Pablo Vasques Bravo-Villalba avisou que o VGMRips foi atualizado, mas alguns links de pacotes estão quebrados na página e corretos no fórum; Augusto notou que os de MSX estão entre eles.
Pablo Vasques Bravo-Villalba compartilhou um vídeo de reparo da placa do arcade Pole Position, da Atari, que usa um Z8000 e um Z80, com análise dos esquemáticos.
Felipe compartilhou o pfr, reimplementação em Rust do Pinball Fantasies, e descobriu que o formato de imagem que decodificara em 2003 se chama Amiga PBM. Compilou o pfr no Raspberry Pi, reduziu as dependências de 212 para 89 crates e revelou o plano de usá-lo num controlador de máquina de pinball.
Lendo a documentação do pfr, Felipe descobriu que o formato de imagem que decodificara em 2003 se chama Amiga PBM. Depois compilou o pfr no Raspberry Pi, reduziu as dependências e revelou o plano de usá-lo num controlador de pinball.
Felipe "Juca" Sanches compartilhou o pfr, reimplementação em Rust do Pinball Fantasies. Ao ler a documentação técnica, descobriu que o formato de imagem que havia decodificado por conta própria em 2003, num esboço em QBasic impresso em papel, se chama Amiga PBM. Ele também compartilhou a transcrição desse código, reencontrado impresso em 2016.
Felipe "Juca" Sanches tentou fazer cross-build do pfr para Raspberry Pi. Esbarrou em diferenças de versão da glibc e em problemas com o target musl, e acabou compilando no próprio RPi. RicBit reduziu o binário x86 de 24 MB para 1,2 MB. Felipe removeu o código de janelas, baixando as dependências de 212 para 89 crates, e revelou o plano de usar o código num controlador de máquina de pinball. Também contou que tem quatro módulos de LED HUB75.
Índice escrito por agentes Claude que leram o log completo de cada período. Um segundo agente conferiu cada conversa contra as mensagens, e um terceiro conferiu os resumos do ano e dos temas contra as conversas. Pode conter imprecisões: cada item leva às mensagens originais. Para procurar palavras específicas, use a busca.