Tópicos › Desenvolvimento e comunidade do MAME
33 conversas · anos 1 a 9 do grupo

No primeiro ano do grupo (2017-2018), o tema apareceu de duas formas: compilação e acompanhamento de lançamentos. Werner tentou um build parcial do MAME com o driver trs80, para o CP-500, numa VM Kali Linux. Um dos erros, a falta de GL/gl.h, foi resolvido instalando mesa-common-dev, mas a VM travou durante uma atualização do gcc e foi perdida. Mais tarde Werner conseguiu compilar o MAME no Windows depois de reinstalar o MinGW do zero. Felipe "Juca" Sanches indicou o comando make com SUBTARGET, SOURCES e REGENIE para o build parcial e explicou os critérios para aceitar dumps de ROM: o MAME guarda cada chip como um arquivo separado, e o ideal é ler a EPROM fora da placa, porque um dump feito por software no próprio aparelho pode sair alterado. O grupo acompanhou as versões 0.192 a 0.202. O 0.192 trouxe o Gran Trak 10 em TTL, marcado como não funcional, enquanto os drivers do Sagitta e do Zezinho continuavam em PRs pendentes. O 0.193 incluiu uma contribuição de Felipe, e o 0.194 uma contribuição do grupo marcada como NOT_WORKING, com vídeo e serial funcionando mas sem teclado. Felipe também citou contribuições recentes do brasileiro Wellington Uemura, e o 0.202 trouxe trabalho do brasileiro Leonard Oliveira. No ano 2, Ismael Luceno perguntou sobre a velocidade de emulação do MAME, e Felipe compartilhou o anúncio do 0.204 (HP-UX 9 num HP9000/370 emulado, avanços em workstations SGI).
No ano 4 (2020-2021), a conversa passou à cultura do projeto e ao ensino. A partir de uma Retro Gamer de julho de 2021, Juca e Shideravan criticaram o comportamento entre desenvolvedores no MAMEDEV e a saída de colaboradores por esse motivo. Shideravan disse preferir contribuir com o ares. Ele também propôs tutoriais em português sobre desenvolvimento de emuladores. Juca defendeu focar em emulação, sem ensinar C e git, e fez um bate-papo com Shideravan publicado no YouTube. Em seguida o grupo debateu se é preciso ensinar git e como abrir boas issues e PRs. Felipe convidou Shideravan a aprender desenvolvimento no MAME e, a partir do driver ti85.cpp, que também emula a TI-83 Plus como "not working", explicou a divisão entre src/mame/drivers (aparelhos inteiros) e src/devices (chips individuais). Sobre chips com várias funções, citou o seu port da VM do Another World, dividido em CPU, som e vídeo. No ano 5 (2021-2022), o MAME eliminou src/mame/drivers e passou a agrupar os drivers por fabricante. O Patinho Feio foi para src/mame/usp/, e Felipe e Shideravan discutiram os critérios da nova organização.
Nos anos 7 e 8 (2023-2025), a revisão de PRs virou o assunto central. A partir de uma reclamação de David Haywood (Haze) sobre as revisões de Cuavas, o grupo discutiu o efeito de revisões demoradas e rigorosas. Felipe contou que tirou um trecho pequeno de um PR de três anos, que foi aceito como PR novo, enquanto o restante, reenviado como outro PR, voltou a receber críticas. Ele também compartilhou os PRs #12729 e #12735. Houve um encontro informal de desenvolvimento do MAME no Garoa Hacker Clube, e Felipe propôs uma sessão de hacking no Calango Hacker Clube, em Brasília. No ano 8, o PR de dave-br que adiciona depuração em nível de código-fonte passou um mês sem resposta, com 169 PRs abertos. Ramiro Polla observou que já era possível depurar em nível de código-fonte pelo gdbstub. Às vésperas dos 10 anos da issue #388, sobre artwork 3D, Felipe mostrou a resposta "stay in your lane" que recebeu no Discord do MAME. Ele também abriu a issue #14377 sobre jobs de CI que levam 5 horas, alguns encerrados por timeout em 6 horas. Do lado propositivo, Felipe abriu o PR trivial #14055 como experimento e chamou voluntários para transformar código pendente em PRs pequenos e frequentes; Shideravan e Pedro de Medeiros se ofereceram. Felipe ainda anunciou que vai mentorar alunos da UFABC em contribuições a software livre, ofereceu mentoria gratuita a quem quisesse aprender a desenvolver emuladores no MAME e propôs listar as contribuições do grupo a cada release. 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.
No ano 9 (2025-2026), a discussão tratou do papel da IA no projeto. O grupo discutiu o atraso do MAME 0.290: segundo Felipe, cuavas disse que precisava de mais um mês antes do release, e o KN7000, por trazer um core de CPU novo, dificilmente entraria nessa versão. Shideravan apontou quase 300 PRs parados e a revisão como gargalo. Ramiro Polla contou que o FFmpeg usa IA na revisão de código, com o merge feito por um humano. Shideravan observou que o MAME passou a exigir a declaração do uso de IA apenas no cabeçalho do PR. Felipe relatou que seus PRs vinham sendo aceitos rapidamente, quase todos com merge de rb6502 (R. Belmont), e compartilhou seu prompt de revisão iterativa com o /mame-review.
Ano a ano: Ano 1 · Ano 2 · Ano 4 · Ano 5 · Ano 7 · Ano 8 · Ano 9
Werner perdeu numa VM Kali Linux a tentativa de compilar o MAME para o CP-500 e depois conseguiu compilar no Windows. Felipe "Juca" Sanches explicou o build parcial e os critérios para dumps de ROM. O grupo acompanhou as versões 0.192 a 0.202, que incluíram contribuições de Felipe, do grupo (no 0.194, como NOT_WORKING) e, no 0.202, do brasileiro Leonard Oliveira; Felipe também citou contribuições recentes do brasileiro Wellington Uemura.
Werner tentou compilar o MAME numa VM Kali Linux, que acabou perdida, e depois conseguiu no Windows reinstalando o MinGW. Felipe explicou o build parcial com SUBTARGET e SOURCES e os critérios para aceitar dumps de ROM.
Werner tentou um build parcial do MAME com o driver trs80, para o CP-500. Apareceram vários erros: GL/gl.h ausente (resolvido instalando mesa-common-dev), um conflito de dependências entre SDL2 e systemd, e emu.h não encontrado. Felipe indicou o comando make com SUBTARGET, SOURCES, REGENIE e clean. A VM travou durante uma atualização do gcc e foi perdida. Seguiu-se uma discussão sobre dual boot, Linux versus Windows e distribuições mais estáveis.
Werner conseguiu compilar o MAME no Windows depois de reinstalar o MinGW do zero. Sobre as ROMs do CP-500 de um site, Felipe explicou que as ROMs do MAME foram extraídas por ele da própria placa e que as outras precisam ser verificadas antes de entrar no catálogo. O MAME registra cada chip como um arquivo separado. Dumps feitos por software no próprio aparelho podem sair alterados por hardware mapeado nos mesmos endereços, por isso o melhor é ler a EPROM fora da placa.
O grupo acompanhou as versões 0.192 a 0.202. O 0.192 trouxe o Gran Trak 10 em TTL, marcado como não funcional, e o 0.194, uma contribuição do grupo marcada como NOT_WORKING. Felipe citou contribuições recentes do brasileiro Wellington Uemura, e o 0.202 trouxe trabalho do brasileiro Leonard Oliveira.
Felipe compartilhou o lançamento do MAME 0.192. A lista de novidades inclui o Codimex e o Gran Trak 10 em TTL, este marcado como não funcional. Felipe explicou que os drivers do Sagitta e do Zezinho ainda estão em pull requests pendentes, que o Lepus 200 tem só um rascunho de driver e que o Patinho Feio não teve mudanças no mês.
Alexandre Villares compartilha uma análise de arqueologia de software do Spacewar!. Felipe anuncia o MAME 0.193, que inclui uma contribuição sua, e menciona contribuições recentes de outro brasileiro, Wellington Uemura.
Felipe anuncia o MAME 0.194, que inclui uma contribuição do grupo marcada como NOT_WORKING. O vídeo e a interface serial já funcionam, mas falta emular o teclado.
Felipe compartilhou os anúncios do MAME 0.196, 0.197 e 0.198 e depois o texto do 0.199. Essa versão adiciona El Fin Del Tiempo, o hack Titan e bootlegs como Come-Cocos e Gran Rally, e melhora a emulação de drives de disquete, entre outras mudanças.
Felipe anuncia o MAME 0.202 e destaca que a versão traz trabalho do brasileiro Leonard Oliveira, de Brasília.
Ismael Luceno perguntou sobre a velocidade de emulação do MAME, e Felipe compartilhou o anúncio do 0.204, que permite rodar HP-UX 9 num HP9000/370 emulado e avança na emulação de workstations SGI.
A pergunta sobre a velocidade de emulação e o MAME 0.204, com HP-UX 9 num HP9000/370 emulado e progresso em workstations SGI.
Ismael Luceno perguntou se alguém está trabalhando na velocidade de emulação do MAME, porque alguns cores que ele usa são lentos demais. Felipe lembrou de recompilação dinâmica para algumas CPUs, mas não sabia quem está envolvido.
Felipe compartilhou o anúncio do MAME 0.204, que permite rodar HP-UX 9 com X11 em um HP9000/370 emulado e traz progresso na emulação de workstations SGI e de terminais X. Ronaldo perguntou pela emulação da Indy, e Ricardo Bánffy citou o projeto UniBone.
Juca e Shideravan criticaram o comportamento entre desenvolvedores no MAMEDEV a partir de uma matéria da Retro Gamer. Shideravan propôs tutoriais em português, Juca fez um bate-papo com ele publicado no YouTube e o grupo debateu ensinar git, issues e PRs. Felipe também convidou Shideravan a aprender desenvolvimento no MAME e explicou a divisão entre src/mame/drivers e src/devices.
A partir de uma matéria da Retro Gamer, Juca e Shideravan criticaram o comportamento entre desenvolvedores no MAMEDEV. Shideravan propôs tutoriais em português; Juca fez um bate-papo ao vivo com ele, e o grupo debateu se é preciso ensinar git e como abrir boas issues e pull requests.
Felipe "Juca" Sanches compartilhou uma edição de julho de 2021 da Retro Gamer. Shideravan perguntou se o tema da matéria era apenas quem colaborou com os Game & Watch. A conversa passou às críticas de Juca e Shideravan ao comportamento entre desenvolvedores no MAMEDEV e à saída de colaboradores do projeto por esse motivo. Shideravan disse preferir contribuir com o ares, e Juca indicou o blog do Haze. Deleted Account e Ismael Luceno comentaram que esse tipo de comportamento também ocorre em equipes de trabalho e afasta mulheres desenvolvedoras.
Shideravan observou que há pouco material em português sobre desenvolvimento de emuladores e propôs um canal com tutoriais: noções de programação e de C, CHIP-8, NES, Game Boy e Master System, além de como contribuir com projetos como o MAME. Juca defendeu focar em emulação, sem ensinar C e git. Juca propôs uma live aberta ao grupo no Happy Hacking Video Blog sobre educação para o desenvolvimento de emuladores. Naquele dia, fez apenas um bate-papo com Shideravan, publicado no YouTube, e ficou de marcar outra conversa com o grupo.
Pedro de Medeiros e Ismael Luceno discutiram se é preciso ensinar git, compararam o git com o SVN e o CVS e debateram se pesa mais o processo ou a ferramenta. Juca considerou que já existe muito material sobre git e que o foco deveria ser a emulação. Shideravan propôs ensinar a abrir boas issues (com o MD5 da ROM e a descrição do ambiente) e a fazer pull requests. Deleted Account sugeriu um estudo aprofundado da estrutura do código-fonte e do makefile do MAME.
Felipe convidou Shideravan a aprender desenvolvimento no MAME e contou como ganhou experiência. Também explicou a divisão entre src/mame/drivers e src/devices a partir do driver da TI-83.
Felipe "Juca" Sanches convidou Shideravan a aprender desenvolvimento no MAME e contou que começou emulando uma impressora de cheques e emulou pela metade vários aparelhos para ganhar experiência, antes de chegar a um que quer emular por completo. Um participante relatou um emulador de CHIP-8 em C parado na geração de som. Felipe comparou o CHIP-8 a uma máquina virtual, como a VM do Another World que implementou no MAME.
Ao receber uma TI-83, um participante soube que o driver ti85.cpp do MAME também emula a TI-83 Plus, marcada como "not working", e Felipe "Juca" Sanches sugeriu melhorá-lo. Felipe explicou que src/mame/drivers emula aparelhos inteiros e src/devices emula chips individuais. Sobre chips com várias funções, Pablo Vasques Bravo-Villalba observou que eles aparecem em mais de um lugar, e Felipe citou seu port da VM do Another World, que divide CPU, som e vídeo.
O MAME eliminou src/mame/drivers e passou a organizar os drivers por fabricante. O Patinho Feio foi para src/mame/usp/, e Felipe e Shideravan discutiram os critérios da nova estrutura.
O MAME eliminou src/mame/drivers e passou a agrupar drivers por fabricante. O emulador do Patinho Feio foi para src/mame/usp/, e o grupo discutiu os critérios da nova organização.
Felipe notou que o MAME eliminou o diretório src/mame/drivers e passou a organizar os drivers em subdiretórios por fabricante, com src/mame/misc para os demais e src/mame/skeleton para drivers iniciais. Shideravan questionou a organização e depois viu que a justificativa aparentemente era facilitar a escrita de scripts Lua.
Com a nova estrutura de diretórios do MAME, o emulador do Patinho Feio passou para src/mame/usp/. Felipe e Shideravan discutem o critério da nova organização (fabricante ou projetista, sega e segacons separados) e o caso do Interton VC 4000 e do 1292 APVS, cuja relação de pai e clone no MAME não segue a cronologia. Depois Felipe compartilha o PR #10035 do MAME, que Shideravan relaciona à discussão.
O grupo discutiu o rigor e a demora dos code reviews no MAME. Felipe contou que dividiu um PR de três anos e compartilhou os PRs #12729 e #12735. Houve um encontro informal de desenvolvimento no Garoa Hacker Clube, e Felipe propôs uma sessão de hacking no Calango Hacker Clube.
O grupo discutiu o efeito das revisões demoradas e rigorosas sobre quem contribui, e Felipe compartilhou outros PRs seus.
A partir de um PR em que David Haywood (Haze) reclama das revisões de Cuavas, o grupo discutiu o efeito de code reviews demorados e rigorosos sobre quem contribui com o MAME. Felipe "Juca" Sanches contou que tirou um pedaço pequeno de um PR de três anos e o enviou como PR novo, que foi aceito. Depois reenviou o restante como outro PR, que voltou a receber críticas. Ele também questionou uma crítica a um estilo de código que já é usado nos outros cores TLCS-900 do MAME e disse que não recebeu resposta.
Felipe "Juca" Sanches corrigiu um driver do MAME para que ele interprete os bits das portas de I/O que controlam os LEDs e o contraste do LCD. Ele também compartilhou outro PR.
Houve um encontro informal de desenvolvimento do MAME no Garoa e uma sessão de hacking proposta para o Calango Hacker Clube.
Participantes se reuniram no Garoa Hacker Clube no que Shideravan chamou de primeiro encontro brasileiro extraoficial de desenvolvimento do MAME. Felipe "Juca" Sanches disse que já houve encontros assim no Calango Hacker Clube, em Brasília. Perguntado sobre a combinação de um possível easter egg do Pense Bem, ele indicou as teclas "5" + "operação" logo após o boot, com a ressalva de que poderia ter interpretado errado o código ou levantado errado o pinout do Z8. Ele também ofereceu um Pense Bem a quem desenhar o esquemático da placa no KiCad.
Felipe "Juca" Sanches avisou que estaria em Brasília de 22 a 29 de outubro e propôs uma sessão de hacking no Calango Hacker Clube, aberta a outros membros da cidade.
Os assuntos foram a fila de PRs sem revisão (como o de depuração em nível de código-fonte de dave-br), a resposta "stay in your lane" sobre a issue #388 e a issue #14377 sobre CI lento. Felipe propôs PRs pequenos e frequentes, com Shideravan e Pedro de Medeiros como voluntários, ofereceu mentoria e propôs listar as contribuições do grupo por release, a começar pelo 0.281.
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.
O grupo discutiu o atraso do MAME 0.290, os quase 300 PRs parados e o gargalo de revisão, que Felipe supôs agravado por PRs feitos com IA. Tratou também da nova exigência de declarar o uso de IA no cabeçalho do PR. Felipe relatou merges rápidos de rb6502 e compartilhou seu fluxo de revisão com o /mame-review.
Com quase 300 PRs parados, discutiu-se o atraso do MAME 0.290 e o gargalo de revisão. Também se tratou da exigência de declarar o uso de IA no cabeçalho dos PRs.
Shideravan pergunta se o KN7000 entra a tempo do MAME 0.290. Felipe responde que o cuavas disse que precisa de mais um mês antes do release e supõe que ele esteja sobrecarregado por PRs feitos com IA. Acrescenta que o KN7000, por incluir um core de CPU novo, dificilmente entraria. Shideravan aponta que há quase 300 PRs parados e que o gargalo é a revisão. Ramiro Polla conta que o FFmpeg usa IA de revisão de código, com um humano fazendo o merge. Pablo questiona como projetos tão exigentes passaram a lidar com regressões em código estável. Shideravan observa que até os desenvolvedores antigos adotaram IA. Felipe diz que sempre foi cauteloso com PRs feitos com ajuda de IA e chega a gastar um mês num único PR.
Shideravan disse que gostaria de desenvolver drivers para o MAME com IA, mas temia passar mais tempo discutindo PRs. Felipe "Juca" Sanches respondeu que seus PRs têm sido aceitos rapidamente, quase todos com merge de rb6502 (R. Belmont), e compartilhou seu prompt de revisão iterativa com o /mame-review. Shideravan observou que o MAME passou a exigir a declaração de uso de IA só no cabeçalho do PR, e Felipe indicou um comentário de rb sobre isso.
Í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.