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.

O que o projeto precisa agora.

  1. 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.
  2. 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.
  3. 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.

WindowsEmulador MesenSua própria ROMArquivos pequenos

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.

Jogar no MesenGravar os botõesEnviar o arquivoComparar com o original

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.
Baixar o pacote de gravação ↓

ZIP · 27 KB · instruções, lista do que gravar, conferidor de ROM e ajustes do Mesen. Sem o emulador e sem ROM.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

Escrever para o David ↗

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+F7 salva um save state no espaço 1 a 7 (pode, mesmo gravando)
  • F1 … F7 carrega um save state (só fora da gravação)
  • Esc pausa e despausa o emulador

O que gravar primeiro no X1

  1. 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.
  2. 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.
  3. Trocar de arma segurando o tiro carregado, parado, andando e no ar.
  4. Inimigos, fase por fase: faça aparecer na tela, encoste, saia da tela e volte, e destrua.
  5. 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.

Ver cada pedido e a situação de cada um →

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.

Kit + promptSem chave de APIRevisão humana

Dentro do projeto, o trabalho com IA funciona assim:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Escrever para o David ↗ Abrir as tarefas com IA →

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.

Antes da primeira missão.

  1. 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.
  2. Confira a tarefa no GitHubLeia as issues e descreva o recorte que quer assumir. Isso evita duas pessoas corrigindo o mesmo problema.
  3. 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.

C++17Testes sem assetsFork + pull request

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.

Terminal MINGW64 do MSYS2
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-json

Faç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:

PowerShell
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-failure

O 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Vídeo já ajudaMesen/Lua para avançar

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.

ObservarMedirCompararDocumentar
  1. 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.

  2. 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.

  3. 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.

  4. 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:

PowerShell
./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.mss

O exemplo abaixo usa o probe existente da Intro Highway. Ele tem alvos específicos descritos no Lua; não serve automaticamente para qualquer inimigo.

PowerShell
$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 120

Use 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.

PNG/GIFEditor de pixel artReferência visual

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

PowerShell
./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 32

O 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.

OGG / WAVEscuta comparativaEditor de áudio

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.

  1. 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.

  2. 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.

  3. 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 loop configurado, 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 campos start_frame, end_frame, sample_rate e a origem da medição.

  4. 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.

PowerShell
ctest --test-dir build -R audio-loop --output-on-failure

Leia 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.

Sem programarReprodução curta

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.

  1. 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.

  2. 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.

  3. Identifique a versão testada

    Inclua o commit ou o pacote recebido. Se tiver acesso ao build, o log é logs/megaman-x.log na pasta do executável. Envie apenas o trecho relevante, depois de conferir o conteúdo.

  4. 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
Relato de bug
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:
Enviar meu relato ↗

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.