DUAS FORMAS DE AJUDAR
Jogue e grave, ou trabalhe com uma IA.
O projeto refaz o Mega Man X e compara cada quadro do nosso jogo com o original. Para conferir uma situação, o jogo original precisa mostrá-la pelo menos uma vez. Você pode ajudar sem programar.
Sem IA: jogue e grave
Jogue o original no emulador com a gravação ligada. Não precisa programar nem jogar bem.
Para quem gosta de jogar →Com um agente de IA
Dê uma tarefa pronta à sua IA, revise a resposta e envie para conferência.
Para quem usa Codex, Claude ou um chat →Código, arte, áudio e testes
Guias para o código público, pesquisa, sprites, áudio e relatos de defeitos.
Outras formas de ajudar →O que o projeto precisa agora.
- Gravações de situações raras no X1Cada arma em cada chefe com a barra de vida descendo, mortes em momentos específicos, subchefes e bugs que você conhece. É exatamente o que falta: a busca automática do projeto não conseguiu chegar a essas situações.
- Partidas completas de X2 e X3Jogar normalmente, do começo aos créditos, com uma gravação por fase. Elas são o material de comparação para os próximos jogos.
- Tarefas pequenas com IAHá tarefas prontas para a sua IA, com kit, prompt e modelo de entrega.
CAMINHO A · SEM IA
Jogue e grave.
Para quem gosta de jogar Mega Man X. Não precisa programar nem jogar bem.
LISTA ATUAL
O que gravar, pedido por pedido
Veja no site cada gravação que ainda falta no X1, no X2 e no X3, o que já chegou e o que já foi concluído. Você pode marcar o que já gravou.
Abrir a lista de gravações →Quer só o que está aberto agora, com o que fazer em cada pedido? Veja os pedidos abertos →
A gravação não é um vídeo. O emulador Mesen guarda só os botões que você aperta, quadro a quadro, num arquivo pequeno (.mmo). Depois o projeto reproduz esse arquivo e o jogo acontece de novo, idêntico. Assim dá para comparar o nosso jogo com o original nas mesmas jogadas.
Do que você precisa
- Um computador com Windows.
- A sua própria ROM, na versão exata: Mega Man X na versão USA 1.1 (também chamada Rev 1); X2 e X3 na versão USA. O projeto não fornece ROMs.
- O emulador Mesen 2.1.1 para Windows, que não vem no pacote: baixe o Mesen 2.1.1 para Windows na página dessa versão ↗ O site atual do emulador oferece uma versão mais nova, que o projeto ainda não testou: use a 2.1.1.
- Um controle (recomendado) ou o teclado.
ZIP · 27 KB · instruções, lista do que gravar, conferidor de ROM e ajustes do Mesen. Sem o emulador e sem ROM.
Escolha o que gravar
Comece pela lista de gravações pedidas, aqui no site, na ordem: ela vai do que mais ajuda para o que menos ajuda. O pacote traz os mesmos pedidos em texto. Se quiser, escreva antes para o David para combinar o que mais falta e não repetir o que já existe.
Prepare o pacote
Descompacte o pacote numa pasta. Descompacte o Mesen 2.1.1 de modo que o Mesen.exe fique dentro da pasta Mesen do pacote, sem apagar o settings.json. Coloque a sua ROM em 1-COLOQUE-A-ROM-AQUI e rode 2-CONFERIR-A-ROM.bat: tem que aparecer OK em verde. Abra o Mesen com 3-JOGAR-E-GRAVAR.bat, configure o controle em Settings > Input e abra a ROM em File > Open.
Chegue ao ponto de partida sem gravar
Vá até a porta do chefe, ou até antes do inimigo, e salve um save state ali. Antes de começar a gravar, carregar save state pode, quantas vezes quiser.
Grave a tentativa
Menu Tools > Movies > Record. Salve o arquivo na pasta gravacoes do pacote, com o nome que a lista indica. Em Record from, escolha Current state. Power on só quando a lista pedir.
Pare e confira
Menu Tools > Movies > Stop. Confira se o arquivo .mmo apareceu na pasta. Não saiu como queria? Carregue o save state e grave de novo com o mesmo nome e -b no final (depois -c, -d). Não apague as anteriores: tentativa errada também serve.
Envie as gravações
Compacte a pasta gravacoes num arquivo zip e envie por e-mail para davidluky@davidluky.com, o contato do site. Pode enviar aos poucos, a cada sessão. Não envie a ROM.
As regras de ouro
Durante a gravação, pode: morrer, perder vidas, dar Game Over e continuar; pausar pelo tempo que quiser; digitar a senha na tela de senha do jogo; salvar um save state.
Durante a gravação, nunca: carregar um save state (isso quebra a gravação); resetar o jogo, abrir outra ROM ou mexer nas configurações; fechar o Mesen sem antes fazer Stop.
Errou uma dessas? Sem problema: faça Stop, carregue o save state e grave de novo com -b no nome.
Atalhos do Mesen usados aqui:
Shift+F1 … Shift+F7salva um save state no espaço 1 a 7 (pode, mesmo gravando)F1 … F7carrega um save state (só fora da gravação)Escpausa e despausa o emulador
O que gravar primeiro no X1
- Chefes e subchefes com cada arma, em tiro normal e carregado. Só vale o acerto em que a barra de vida do chefe desce. Quase tudo pede o X completo, com as 8 armas e a parte do braço: use senha à vontade.
- Morrer de propósito: para um subchefe, voltando pelo checkpoint para lutar de novo; no instante em que o jogo tira o controle do X (pegando um item, entrando na porta do chefe, numa cena); esmagado por algo que empurra.
- Trocar de arma segurando o tiro carregado, parado, andando e no ar.
- Inimigos, fase por fase: faça aparecer na tela, encoste, saia da tela e volte, e destrua.
- Bugs e truques que você conhece. O nosso jogo precisa repetir até os bugs do original. Mande junto uma frase explicando o que acontece.
No X2 e no X3: jogue normalmente, do console ligando até os créditos, com uma gravação por fase. Use cada arma nova nas fases seguintes, em tiro normal e carregado.
Não precisa gravar: tiro que não tira vida do chefe, nem uma partida bonita. Errar e morrer também servem.
Detalhes técnicos
Para conferir a versão da sua ROM: o SHA-256 do arquivo, sem o cabeçalho de 512 bytes quando houver, deve ser um destes.
- Mega Man X (USA) 1.1
b8f70a6e7fb93819f79693578887e2c11e196bdf1ac6ddc7cb924b1ad0be2d32 - Mega Man X2 (USA)
f3246755f608a1e1dc9c848b61da3b824c7853b29b3be40df6fc7f2793a887ed - Mega Man X3 (USA)
65b03268afac296330e8ff8d60dd0825879e13ed658b37713c034a3bd074f1d7
A versão USA 1.0 do X1 tem outro valor e não serve.
Perguntas sobre as gravações.
É um vídeo?
Não. O Mesen grava só os botões que você aperta, quadro a quadro. O projeto reproduz o arquivo e o jogo acontece de novo, igual.
Preciso jogar bem?
Não. Morrer também é útil; às vezes é exatamente o pedido. Muitas gravações curtas valem mais do que uma longa e perfeita.
Qual versão da ROM?
Mega Man X: versão USA 1.1, também chamada Rev 1; a USA 1.0 não serve. X2 e X3: versão USA. Versões japonesa, europeia ou modificadas não servem, porque a gravação não reproduz do nosso lado. Use a sua própria ROM e não a envie: mande só as gravações.
Qual o tamanho dos arquivos?
Pequeno. O arquivo guarda só os botões, sem imagem nem som: as gravações que o projeto tem hoje ficam abaixo de 400 KB cada.
Posso usar save states e senhas?
Sim. Antes de gravar, carregar save state pode à vontade. Durante a gravação, salvar pode e carregar nunca. A senha pode ser digitada na tela de senha mesmo gravando: use para já ter armas, armadura, Heart Tanks e Sub Tanks.
CAMINHO B · COM IA
Trabalhe com um agente de IA.
Para quem usa Codex, Claude Code ou um chat de IA e quer entregar uma tarefa pequena que pode ser conferida.
Dentro do projeto, o trabalho com IA funciona assim:
Um cartão por sessão
Cada sessão de IA recebe um cartão: um pedido completo, com os arquivos, os comandos e o número que prova que deu certo, definido antes do trabalho.
Coordenador e executor
Um coordenador escreve e ordena os cartões e confere cada entrega no repositório. Um executor faz um cartão por vez, exatamente como está escrito.
A prova é o jogo original
Um comportamento é aceito quando o estado do nosso jogo fica igual ao do original nas mesmas gravações. O checklist só sobe com partes verificadas. As gravações dos jogadores são o material dessa comparação.
Parar também é resultado
Um cartão que não termina é estacionado com os números vistos e o comando para retomar. Isso conta como um bom resultado.
Como você participa
O código traduzido do cartucho fica num repositório privado. O acesso é decidido caso a caso, depois de uma conversa: escreva para o David contando o que gostaria de fazer.
Sem esse acesso, você já pode ajudar pela página Com IA: baixe o kit público, escolha uma tarefa, cole o prompt na sua IA, revise a resposta e envie o relatório.
Escolher uma tarefa não a reserva, e a IA ainda pode errar: leia a resposta antes de enviar.
OUTRAS FORMAS
Outras formas de ajudar.
Os guias abaixo cobrem o código público, pesquisa, sprites, áudio e testes.
O código público no GitHub é a versão anterior do motor e não inclui o código traduzido do cartucho.
Programação
Movimento, ataques, colisões e regressões.
C++ e Python →Pesquisa
Transforme observações em referências reproduzíveis.
Vídeo e medições →Sprites
Quadros corretos, paletas e alinhamento de personagens.
Pixel art →Áudio
Loops suaves, efeitos e momento certo de tocar.
Música e SFX →Testes
Encontre o primeiro erro e ajude a reproduzi-lo.
Sem programar →Antes da primeira missão.
- Escolha uma lacuna concretaAbra uma ficha no catálogo de inimigos e veja a próxima tarefa. Você também pode relatar um defeito de controle, fase ou áudio.
- Confira a tarefa no GitHubLeia as issues e descreva o recorte que quer assumir. Isso evita duas pessoas corrigindo o mesmo problema.
- Entregue com uma forma de conferirUma mudança pequena, a referência utilizada e os passos para verificar o resultado são um ótimo começo.
GUIA 01
Programação
Para quem quer melhorar o código e os contratos públicos.
O primeiro pacote público oferece código C++17, um núcleo compilável e 15 contratos independentes de assets. Use uma tarefa pequena de lógica, teste, documentação ou portabilidade para começar.
Passo a passo: preparar o ambiente no Windows
Instale Git e MSYS2. Use a família MINGW64 dos pacotes abaixo.
pacman -S --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-raylib mingw-w64-x86_64-nlohmann-jsonFaça um fork no GitHub para enviar mudanças. Para começar a ler e testar, qualquer pessoa pode clonar o código público:
git clone https://github.com/davidluky/megaman-x-engine.git
cd megaman-x-engine
$env:PATH = "C:\msys64\mingw64\bin;C:\msys64\usr\bin;" + $env:PATH
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build -j 8
ctest --test-dir build --output-on-failureO exemplo de PowerShell considera o MSYS2 instalado em C:\msys64. O build padrão compila o núcleo e executa contratos sem ROM, janela ou assets. O executável completo exige dados separados e não é o caminho inicial.
Encontre o módulo da sua mudança
Comece pelo README.md ↗, siga CONTRIBUTING.md ↗ e consulte o mapa de arquitetura ↗. Os guias mostram os responsáveis por entrada, estado e atualização de cada quadro. Confira os contratos existentes antes de adicionar outro.
Encontre quem executa a regra
enemy.cpp ↗ contém o comportamento dos inimigos; kb_fsm.cpp ↗ é o interpretador de máquinas de estados. As definições e capturas de referência não acompanham o código público. Identifique o dado necessário antes de propor valores novos.
Reproduza com uma entrada pequena
Use dados criados em memória ou arquivos temporários. Contrato de controles ↗ é um exemplo; PublicTests.cmake ↗ registra a seleção pública. O teste deve mostrar uma falha real ou uma regra ainda sem cobertura.
Envie um pull request revisável
Crie uma branch no seu fork, confira o diff e envie a mudança com o comando de teste e o resultado. A revisão humana decide a integração. Se o caso precisar de material ausente, entregue a investigação e o requisito exato.
Entrega esperada
Uma alteração pequena ou investigação verificável, os arquivos consultados, os testes realmente executados e os limites. Um contrato verde não comprova uma fase completa nem fidelidade ao original.
GUIA 02
Pesquisa e referências
Ajude a transformar uma observação em uma regra que pode ser conferida.
Uma medição útil responde uma pergunta pequena: de que lado o projétil nasce, qual evento inicia um ataque ou em que quadro o inimigo muda de estado.
Defina a pergunta e o controle
Escolha a ficha, a fase e uma situação reproduzível. Para direção do tiro, por exemplo, compare X à esquerda e à direita, mantendo a mesma situação de ataque. Um vídeo já ajuda a localizar o problema.
Identifique a referência
Anote a versão do jogo, o estado inicial e os comandos usados. Para pesquisa avançada, o projeto usa Mesen e Lua com uma referência local compatível. Peça orientação sobre a fixture: ela é um estado de referência do emulador, não um arquivo intercambiável entre qualquer configuração.
Registre o primeiro desvio
Conte os quadros, descreva a posição e registre o estado do inimigo quando possível. Diferencie coordenadas do mundo, da câmera e da imagem: o mesmo número em bases diferentes pode parecer uma correção e introduzir um erro.
Entregue os dados reduzidos
Uma tabela curta com quadro, ação, posição, velocidade, HP e evento costuma ser mais útil que um pacote enorme. Inclua a receita de captura e exemplos que confirmam ou rejeitam sua hipótese.
Tutorial avançado: validar uma fixture e iniciar um trace
Estes comandos pertencem ao ambiente de pesquisa privado e não acompanham o código público. Exigem Mesen configurado e materiais locais compatíveis. Valide o estado de referência antes de medir:
./build/venv/Scripts/python.exe tools/oracle/check_recordings.py --brief
./build/venv/Scripts/python.exe tools/oracle/validate_fixture.py tools/oracle/fixtures/stage_select_thispc.mssO exemplo abaixo usa o probe existente da Intro Highway. Ele tem alvos específicos descritos no Lua; não serve automaticamente para qualquer inimigo.
$traceDir = Join-Path 'build/contributor' ('intro-enemy-trace-' + [guid]::NewGuid().ToString('N'))
./build/venv/Scripts/python.exe tools/oracle/run_mesen.py --game mmx1 --script tools/oracle/lua/enemy_behavior_trace.lua --savestate tools/oracle/fixtures/stage_select_thispc.mss --out $traceDir --timeout 120Use uma pasta de saída nova para cada tentativa e confira os campos realmente emitidos. Antes de ampliar a captura, revise o probe acervo privado e o guia de fixtures acervo privado.
Entrega esperada
Pergunta investigada, referência identificada, passos reproduzíveis, tabela curta e conclusão com limites. Não é necessário anexar a ROM ou dumps brutos ao relato.
GUIA 03
Sprites e pixel art
Ajustes pequenos de pose, cor e alinhamento podem resolver defeitos muito visíveis.
Você pode ajudar a recuperar um quadro incorreto, identificar uma paleta ou descobrir por que o personagem parece “pular” de posição entre poses. A ficha indica quando a arte já está verificada e o problema está em outra parte.
Escolha um quadro, não a folha inteira
Informe o personagem, a animação, o índice do quadro e a referência visual. Separe desenho errado de quadro correto usado no momento errado.
Preserve o ponto de apoio
Compare os pés, o centro do corpo e a origem do projétil na mesma posição. Mantenha dimensões da célula, transparência, ordem dos quadros e alinhamento. Alterar o recorte pode mexer na aparência mesmo que o desenho seja igual.
Confira a paleta e as duas direções
Use as cores da referência e confira também os quadros de dano ou tiro. Algumas folhas possuem uma versão de flash separada. Não espelhe um personagem só por convenção: o Axe Max, por exemplo, tem orientação própria documentada.
Entregue uma comparação clara
Inclua antes/depois na mesma escala, a célula alterada, o arquivo editável e a origem do material. Se a arte estiver correta e a sequência errada, o ajuste pode ser na definição da animação.
Exemplo: preparar uma folha candidata do Met
O empacotador alinha frames pela base. Com a pasta build criada na preparação do ambiente, a saída abaixo pode ser revisada antes de substituir uma folha do jogo.
./build/venv/Scripts/python.exe tools/pack_enemy_sprite.py --src content/x1/sprites/enemies/mmm-mmxmetoll.gif --dst build/met-candidate.png --cell-width 32 --cell-height 32O comando fornece as dimensões e um exemplo de configuração. Confira o empacotador acervo privado e a convenção de sprites acervo privado. Esse fluxo não deve regenerar folhas com contrato próprio, como axemax_sheet.png.
Entrega esperada
Quadro identificado, origem da arte, arquivo editável e comparação com alinhamento e paleta preservados. Para arte original ou uma variante visual, apresente a proposta antes de substituir material do projeto.
GUIA 04
Música e efeitos
Precisão no loop, no arquivo e no momento em que o evento toca.
Há trabalho tanto na escuta quanto na implementação: localizar um reinício audível, medir o loop, identificar um efeito ausente ou conferir quando o som deve tocar.
Identifique a faixa ou o evento
Informe a fase e a situação. Para um efeito, registre a ação que deveria produzi-lo. Para música, separe introdução, repetição e eventual pausa causada por outro evento do jogo.
Marque a fronteira do loop
Registre a taxa de amostragem e as posições inicial/final em frames de áudio. Elas são amostras PCM por canal, não quadros do jogo. A introdução deve tocar uma vez e o trecho escolhido deve repetir sem corte perceptível.
Use o formato e o mapa do motor
Música sem região de loop configurada pode usar OGG; efeitos usam WAV. Quando a faixa tem
loopconfigurado, como Flame Mammoth, o caminho atual exige WAV PCM de 16 bits, com canais e taxa de amostragem compatíveis. Um OGG sozinho não prepara esse caso. bgm.json acervo privado conecta as fases às faixas. A referência de loop do Flame Mammoth acervo privado mostra os camposstart_frame,end_frame,sample_ratee a origem da medição.Ouça a transição, depois confira no jogo
Reproduza várias voltas e compare a emenda. Para SFX, confira também o momento do ataque ou da apresentação. Trocar uma amostra não corrige um evento disparado no quadro errado.
Exemplo: validar a região de loop
Depois de preparar o build, o contrato abaixo verifica limites, taxa de amostragem e dados inválidos. Ele complementa a escuta e o teste da fase.
ctest --test-dir build -R audio-loop --output-on-failureLeia o teste de loop acervo privado e o gerenciador de áudio ↗. O importador comum produz BGM em OGG; a faixa com loop precisa também do WAV PCM compatível preparado para esse caminho. Os scripts usam materiais locais específicos; combine a origem com o mantenedor antes de executá-los ou substituir as faixas.
Entrega esperada
Faixa/evento identificado, origem autorizada, taxa de amostragem, região de loop ou timing do efeito e uma comparação auditiva. Se você compõe, envie uma proposta de música original ou variante com autoria e condições de uso claras.
GUIA 05
Teste e relate
Você não precisa saber programar para ajudar o projeto a melhorar.
Você pode contribuir sem escrever código. Um relato que permite repetir o problema economiza tempo e ajuda a conferir se a correção realmente resolveu o caso.
Reduza o caminho até o erro
Anote a fase, o trecho, os comandos e se chegou pelo menu, por respawn ou pelo mapa de teste. Diga se houve dash, tiro carregado, parede ou mudança de direção.
Mostre o primeiro instante estranho
Um vídeo curto é ótimo para animação e áudio. Para colisão, explique onde o tiro ou o corpo deveria tocar. Se só acontece às vezes, informe as tentativas que funcionaram e as que falharam.
Identifique a versão testada
Inclua o commit ou o pacote recebido. Se tiver acesso ao build, o log é
logs/megaman-x.logna pasta do executável. Envie apenas o trecho relevante, depois de conferir o conteúdo.Confira novamente depois da correção
Repita os mesmos passos e também um caso vizinho: outro lado do inimigo, um tiro em outra altura ou retorno após morrer. Isso separa uma correção robusta de um ajuste que só funciona em uma situação.
Modelo de relato para copiar
Personagem / problema:
Fase e trecho:
Versão ou commit do projeto:
Sistema / versão do Windows:
Comando, perfil de teste ou caminho pelo menu:
Fixture, posição inicial e seed (se houver):
Compilador / toolchain (se você compilou):
Passos para reproduzir:
1.
2.
3.
O que eu esperava:
O que aconteceu:
Ocorre sempre ou às vezes?
Primeiro instante incorreto no vídeo:
Link para vídeo curto / captura / log:Entrega esperada
Passos claros, versão identificada, esperado versus observado e um exemplo pequeno. O mantenedor deve conseguir repetir o problema sem adivinhar o caminho que você fez.
Dúvidas de quem está chegando.
Posso ajudar sem acesso ao código?
Sim. Você pode escolher uma tarefa pública, oferecer pesquisa, revisar arte/áudio ou relatar um teste com um pacote que tenha recebido. O código agora é público: faça um fork e proponha uma alteração por pull request.
Um inimigo com sprite já está concluído?
Não necessariamente. A ficha separa o que existe, as correções verificadas e o que ainda falta medir ou integrar. Uma miniatura só mostra a identidade visual, não comprova movimento, ataques ou fidelidade completa.
Como evito duplicar o trabalho de outra pessoa?
Antes de começar, envie o link da ficha e descreva o recorte que pretende assumir. O catálogo é uma fotografia revisada do projeto; a disponibilidade da tarefa precisa ser combinada com o mantenedor.
Posso enviar a ROM ou um pacote de arquivos do jogo?
Não é necessário. Compartilhe a referência identificada, a receita, tabelas reduzidas e os arquivos de contribuição combinados. ROMs e materiais locais de emulação não fazem parte da entrega pública.
Como uma tarefa passa a ser considerada verificada?
Quando a referência está identificada, a mudança foi integrada e a verificação adequada passou. Vídeo, teste automático e comparação com o original respondem perguntas diferentes; a ficha precisa dizer qual parte cada um comprovou.