Ano 1 · Ano 2 · Ano 3 · Ano 4 · Ano 5 · Ano 6 · Ano 7 · Ano 8 · Ano 9
Tópicos › Oitavo ano › Contribuições ao MAME e revisão de PRs
Membros do grupo contribuíram com layouts para sintetizadores e para o arcade Wacky Gator, e Felipe "Juca" Sanches propôs uma estratégia de PRs pequenos e frequentes. Também foram discutidas as limitações do sistema de layouts e do suporte a SVG. A demora na revisão de PRs, a falta de andamento da issue #388 sobre artwork 3D e a duração dos jobs de CI foram criticadas.
Oitavo ano: novembro de 2024 a outubro de 2025
Felipe preparou o layout interno do Roland D-70 para o driver iniciado por um colaborador italiano. Depois desenvolveu o driver e o layout do painel PG-1000, com portas MIDI para conectá-lo ao seu D-550 real, em PR aceito em 28 de setembro.
Felipe "Juca" Sanches preparou um layout interno (representação gráfica e mapa de LEDs, LCD e botões) para o driver do sintetizador Roland D-70, que um colaborador italiano começou como sua primeira contribuição ao MAME. Depois abriu o PR com o layout.
Felipe desenvolve o driver e o layout do PG-1000, painel de sliders para editar timbres do Roland D-50 e D-550, com LEDs, botões, sliders e display funcionando, e inclui as portas MIDI para poder conectá-lo ao seu D-550 real. Ele abre o PR #14127, aceito em 28 de setembro, e publica o vídeo "Emulando o Roland PG-1000 no MAME". O D-50 e o D-550 ainda não são emulados: há um esboço de driver, mas falta o core da CPU.
Durante a revisão do PR #14049, com o layout do ESQ-1, foram discutidos o uso de logotipos e de SVG escrito à mão. Felipe corrigiu bugs do display emulado, e o PR foi aceito após 20 dias. Felipe mostrou depois um PR de cbrunschen que melhora o display da família VFX, cujo autor disse ter se inspirado nesse layout.
Felipe abre o PR #14049 com o layout do Ensoniq ESQ-1; o PR do layout do Yamaha MU50 é aceito após 11 meses. Na revisão discute-se o uso de logotipos registrados em emuladores e a legibilidade de SVG escrito à mão. Felipe explica que o MAME não permite importar SVG externo nem desenhar retângulos de cantos arredondados no schema de layout, e cita a issue #388 como exemplo de plano não executado.
Felipe corrige o display emulado do ESQ-1. O opcode de sublinhado (0xFA) não era tratado por causa de um parâmetro int que precisava ser uint8_t, o sublinhado era limitado pelo número de linhas em vez de colunas e os segmentos nunca eram apagados; resta um piscar da tela a cada tecla, que ele ainda investiga. A pedido de Hugo, ele desenha o logotipo da Ensoniq em SVG: a versão compacta usava a tag use, que o renderizador do MAME não suporta, e a versão final ficou um pouco maior. O PR é aceito depois de 20 dias e uns 19 commits; os próximos alvos são o Yamaha DX7 e o Roland D-550 com o PG-1000.
Felipe mostra o PR #14131, de cbrunschen, que melhora o display da família Ensoniq VFX no MAME. O autor diz ter se inspirado no layout do ESQ-1. Hugo pergunta sobre efeitos de brilho, assunto já discutido no PR.
Felipe fez um novo layout para o Wacky Gator e o layout do Access Virus B, e abriu um PR que altera a paleta do LCD do Yamaha PSR2000. Ele também testou o Yamaha CX5F com o SFG-05 tocado por teclado MIDI e mostrou o Casio WK-1800 emulado. Felipe disse que desenhar esses layouts o tem levado a conhecer sintetizadores dos anos 80 e 90.
Felipe, autor do driver do Wacky Gator no MAME, mostra o layout interno atual, uma foto do arcade real e o esboço de um layout melhor que está desenhando no Inkscape. Ele abre o PR #13843, incluído no release do MAME publicado em 2 de julho. Hugo compartilha uma foto da versão moderna da Namco.
Felipe testa no MAME o driver do MSX1 Yamaha CX5F com o módulo de síntese FM SFG-05, tocado por um teclado MIDI-USB, e confirma que funciona.
Felipe compartilha um vídeo do MAME emulando o teclado Casio WK-1800, incluindo o LCD. Pablo sugere distinguir visualmente os segmentos acesos da serigrafia fixa, e Felipe responde que isso é um ajuste simples de cores no layout. Luciana Marques diz que quer se inteirar mais do trabalho com o MAME.
Felipe abre o PR #14229, que altera a paleta de cores do LCD do teclado Yamaha PSR2000 no MAME.
Felipe desenha no Inkscape e escreve o layout do Access Virus B (1999). Ele abre o PR #14355, aceito em 20 de outubro. Felipe cogita fazer também um layout para a versão rack e aponta o Access Virus A, de layout parecido, como opção para uma próxima contribuição de layout.
Felipe conta que, ao desenhar layouts em SVG de sintetizadores para o MAME, como o Access Virus B e o Roland PG-1000, tem conhecido equipamentos dos anos 80 e 90; ele possui um Yamaha DX7 e um Roland D-550.
Felipe compartilhou uma proposta de melhorias para a autoria de layouts internos. Fez uma prova de conceito de renderização de texto SVG, que a nanosvg não suporta. Também propôs um layout clicável para pinballs, com a arte declarada como ROM.
Felipe "Juca" Sanches compartilhou uma discussão na organização mamedev com uma proposta de melhorias para a criação de layouts internos.
Felipe critica o sistema de layouts do MAME. A biblioteca nanosvg não renderiza texto, e o schema do mamelayout exige definições verbosas para cada texto. Ele faz uma prova de conceito que usa o parser de texto SVG referenciado numa issue da nanosvg e renderiza com a API gráfica interna do MAME, com a meta de manter os dois métodos e migrar aos poucos, levando em conta os mais de mil layouts existentes.
Felipe propõe um layout clicável para máquinas de pinball emuladas no MAME, que hoje só mostram o DMD, usando a arte do manual da Medieval Madness e, depois, simulação física em Lua. Pela complexidade do SVG e por questões de direitos autorais, a arte seria declarada como ROM, como nos portáteis de LCD. Ismael se interessa pela mentoria, e Erin lembra do PinMAME e do Visual Pinball.
RicBit pretendia escrever um driver para a calculadora HP42S. Foi compartilhado o PR de terceiro com o esqueleto de um driver para um computador de brinquedo da VTech. Felipe reencontrou commits de 2015 do driver do Itautec I-7000 e lembrou que falta o driver do Pense Bem original.
RicBit perguntou se o MAME emula calculadoras e disse que escreveria um driver para a HP42S. Não encontrou a ROM, mas achou um tutorial para passá-la a uma HP48 e fazer o dump de lá. L. comentou a dificuldade de obter ROMs de calculadoras HP, e Pedro de Medeiros perguntou pela TI-84 Plus CE.
Felipe "Juca" Sanches compartilhou um PR de terceiro com o esqueleto de um driver do MAME para um computador de brinquedo da VTech. Foi citada a hipótese de a CPU ser um W65C02, e Shideravan observou que o produto ainda é vendido.
Ao limpar o disco, Felipe encontra um checkout do MAME dedicado ao driver do Itautec I-7000, com dois commits seus de 2015. Ele planeja verificar se esses commits entraram no MAME e, se não, extraí-los como patch. L. sugere git worktree ou clones locais com hardlinks. Felipe lembra ainda que falta fazer o driver do Pense Bem original usando a ROM extraída por decapping. Em outubro, Ismael Luceno responde sugerindo o arquivo .git/objects/info/alternates com um repositório de referência e git repack -a -d para desduplicar objetos.
Felipe divulgou o MAME 0.275 e propôs PRs pequenos e frequentes, com Shideravan e Pedro de Medeiros como voluntários. Ofereceu mentoria em software livre e em emuladores e propôs listar as contribuições do grupo a cada release, começando pelo 0.281. Também reencontrou um log de IRC de 2015 sobre os cristais do SNES brasileiro.
Felipe "Juca" Sanches divulgou o lançamento do MAME 0.275.
Felipe encontra, exatamente 10 anos depois, o log de uma conversa no IRC sobre as frequências dos cristais do SNES brasileiro comparadas às declaradas no driver do MESS. Ele compara o tamanho da comunidade na época (69 pessoas no IRC) com o atual Discord do MAME (103 pessoas online e 227 offline).
Felipe anuncia que vai mentorar alunos da UFABC em contribuições a projetos de software livre e convida outros membros a participar. Depois, oferece mentoria gratuita a quem quiser aprender a desenvolver emuladores no MAME.
Felipe abre um PR trivial (#14055) como experimento e procura voluntários para um esforço sistemático: transformar código pendente de emulação em PRs pequenos e frequentes e mapear o que já foi aceito e o que falta. Shideravan e Pedro de Medeiros se oferecem.
Felipe propõe listar a cada release as contribuições do grupo ao MAME. No 0.281 (setembro de 2025) foram aceitos o layout do Ensoniq ESQ-1, o barramento do KN5000 com a HD-AE5000, um dispositivo esqueleto para as ROMs do PG-1000, entradas dos botões do D-50 e D-550 e símbolos de SFR no disassembler do TMP94C241.
O PR de depuração em nível de código-fonte de dave-br passou um mês sem resposta, e os participantes compararam a situação com demoras em outros projetos. Às vésperas dos 10 anos da issue #388, sobre artwork 3D, Felipe mostrou a resposta "stay in your lane" recebida no Discord do MAME. Ele também abriu a issue #14377 sobre jobs de CI que levam horas.
Felipe "Juca" Sanches compartilhou o PR de dave-br que adiciona depuração em nível de código-fonte ao debugger do MAME, junto com o vídeo de demonstração. Disse que gostaria de usar o recurso com os disassemblies que tem feito da ROM de boot do KN5000. Pedro de Medeiros e RicBit compararam com os recursos do openMSX e do BrMSX.
Felipe "Juca" Sanches criticou a falta de atenção ao PR de depuração em nível de código-fonte no MAME. Pablo Vasques Bravo-Villalba observou que fazia um mês sem resposta, e Hugo (Agaelebê) lembrou que havia 169 PRs abertos. Os participantes relataram demoras em outros projetos: Anne Isabelle no Apache Spark e no pip, Pedro de Medeiros no apt e Felipe no Firefox. Ramiro Polla observou que já é possível depurar em nível de código-fonte no MAME via gdbstub, com gdb ou VS Code.
Shideravan pergunta se há alguma limitação que explique o MAME ainda não ter modo de janela sem bordas. A conversa passa pela dificuldade de ter contribuições aceitas, pela opção de manter forks, pelos frontends externos e pelo sistema de artwork 3D da issue #388, que Felipe gostaria de ver implementado. RicBit sugere manter um fork e integrar as mudanças do upstream com ajuda de IA, e L. sugere uma "libmame" que permita frontends independentes.
Shideravan comenta a fila de PRs do MAME sem revisão e diz que gostaria de implementar o fullscreen sem bordas; Felipe recomenda as Discussions do mamedev. Os dois falam sobre netlists para o Magnavox Odyssey e o Telejogo, e Felipe mostra a implementação parcial do Atari Gran Trak 10 que fez em 2018. Shideravan destaca no release publicado em 2 de julho a entrada por microfone e o suporte a WASAPI e PipeWire.
Às vésperas dos 10 anos da issue #388, sobre o sistema de artwork 3D, Felipe mostra a troca de mensagens no Discord do MAME em que recebeu a resposta "stay in your lane". O grupo discute a falta de delegação e de discussão pública da proposta, e Felipe observa que discussões num Discord privado não substituem o issue tracker. No dia seguinte, Felipe mostra outra resposta sua, que ele próprio descreve como menos diplomática.
Felipe abre a issue #14377, que questiona jobs de CI do MAME que levam 5 horas, alguns encerrados por timeout em 6 horas. Pedro compara os tempos dos builds clang-x64 (cerca de 30 min) e gcc-x64 (cerca de 2h30) e sugere usar fail-fast no workflow do Windows. O grupo critica as respostas recebidas, e Felipe pondera se o título da issue soou provocativo.