WIKI · CURIOSIDADES

O que existe no cartucho e não aparece jogando.

Coisas que estão no cartucho original do Mega Man X, mas que uma partida normal não mostra. Cada item tem um selo que diz o quanto está provado:

Tiros fantasmas

provado-inalcançável

Quatro tiros estão na lista de tiros do jogo e têm dano de verdade na tabela de dano, mas nenhuma partida os dispara. As imagens vêm de um teste no jogo original, em que criamos cada tiro direto na memória do jogo.

O buster em espiral

Um tiro do buster com movimento próprio. Ele avança 6 pixels por quadro e dá uma volta completa a cada 8 quadros, subindo e descendo numa faixa de 39 pixels de altura. Tem o mesmo desenho do tiro do buster, mas a área que acerta os inimigos é maior. Tira 8 de vida dos inimigos comuns; o tiro normal tira 2.

Prova: o jogo decide qual tiro criar a partir de um número, e o número que levaria a este tiro nunca aparece.

Seis quadros do jogo original: o X dispara o tiro em espiral, uma bola de energia que avança para a direita subindo e descendo.
Imagem do jogo original. O tiro em espiral, que criamos direto na memória do jogo num teste. Numa partida normal, ele nunca aparece. Abrir em tamanho real
Seis quadros do jogo original: o X dispara o tiro normal do buster, que segue reto para a direita.
Imagem do jogo original. Para comparar: o tiro normal do buster, no mesmo lugar. Abrir em tamanho real
  • O buster em espiral em movimento— abrir: ampliar, sem som

    O buster em espiral em movimento

    Situação forçada no emulador: não acontece jogando normalmente

    Na caverna da fase do Chill Penguin, o X dá um tiro normal e depois um segundo tiro, que trocamos pelo buster em espiral: uma bola grande que sobe e desce enquanto avança para a direita e acerta o inimigo de roda com espinhos que vem rolando.

    Baixar GIF

A nona arma, normal e carregada

São dois tiros, um normal e um carregado, de uma arma que não está no jogo: ela fica na posição 18 da lista de armas. Eles não têm código próprio e usam o do Storm Tornado. Só o dano muda: tiram 4 de vida dos inimigos comuns, enquanto o Storm Tornado tira 1. No teste, o tiro existe na memória, mas não aparece na tela, porque o desenho do Storm Tornado não fica carregado enquanto o X usa o buster.

Prova: o jogo só escolheria a arma 18 se o número da fase fosse 9, e nesse ponto do código o número da fase vai só de 1 a 8.

Seis quadros do jogo original: o X de pé, sem nenhum tiro visível na tela.
Imagem do jogo original. A nona arma, criada direto na memória do jogo num teste: o tiro existe, mas nada aparece na tela. Abrir em tamanho real
Seis quadros do jogo original: o X de pé, sem nenhum tiro carregado visível na tela.
Imagem do jogo original. A nona arma carregada, no mesmo teste: também não aparece nada. Abrir em tamanho real

O soco forte da Ride Armor

O soco da Ride Armor, a armadura-robô, é uma área de acerto invisível que acompanha a armadura. Existe uma versão forte do soco, que tira 10 de vida, o dobro do soco normal (5). Sem a armadura, essa versão forte some no primeiro quadro, e nada aparece na tela.

Prova: a arma que criaria esse soco nunca é escolhida, e a armadura só cria o soco normal.

Também forçamos esse soco no emulador, com a armadura. Como o soco é uma área de acerto invisível, o vídeo fica igual ao do soco normal; por isso ele não está aqui.

Seis quadros do jogo original: o X de pé, sem a Ride Armor, e nada mais na tela.
Imagem do jogo original. O soco forte criado sem a Ride Armor: ele some no primeiro quadro, e nada aparece na tela. Abrir em tamanho real
Detalhes técnicos

Os números dos tiros (OID) são 5 (buster em espiral), 15 e 24 (nona arma, slot 18, normal e carregada) e 26 (soco forte); em hexadecimal, 05, 0F, 18 e 1A.

O OID 5 tem rotina própria em 81:A412, usa o gráfico do buster (sprite $08, animação 5) e tem caixa de colisão 11, contra 4 do tiro normal. Prova: o índice que o escolheria (forceShot>>1 = 7) nunca existe (81:98AC, tabela 86:BA71).

Os OIDs 15 e 24 apontam para o Storm Tornado (83:9550). Prova: curWeapon 18 só viria de 80:AFF0 com fase 9, e lá a fase vai de 1 a 8.

O OID 26 usa a mesma rotina do soco normal (OID 25, 81:A70A). Prova: curWeapon 22 (fase 11) nunca ocorre, e a armadura só cria o soco normal (83:8247).

O dano vem da tabela 86:EF37, somando a classe do alvo e o OID, em linhas de 30 bytes; por isso os quatro valores são reais. As fontes são knowledge_base/mmx1/rom/x1_shot_oids_unported_2026-10-03.json (provas), x1_ghost_shots_2026-10-03.json (medidas) e x1_unused_content_2026-10-03.json; os bytes são fixados por tools/tests/test_x1_unused_content.py.

As imagens vêm de build/ghost-shots/ (oid00_buster_controle, oid05_buster_espiral, oid15_slot18_tornado, oid24_slot18_tornado_carregado, oid26_soco_ride_armor_forte), com seis quadros por imagem, e são publicadas como estão: já vêm ampliadas 2× sem suavização.

No vídeo do buster em espiral (build/W2, w2_spiral_buster_oid05), na saída do escolhedor de tiro (81:9539, depois de 81:94AF-81:9536), o byte do OID do tiro em 7E:1272 (slot $1268 + $0A) passou de 0 para 5 no quadro 30, a partir do savestate tools/oracle/fixtures/cp_long_f1350_thispc.mss. O vídeo cobre os quadros 14 a 103 (90). O primeiro tiro (quadro 20) não foi tocado.

O soco forte foi gravado, mas não publicado (w2_ride_punch_oid26 contra w2_ride_punch_oid25_control): em 83:8945 (depois de 83:8942 STA $000A,X; chamador 83:824D LDA #$19), 7E:1232 (slot $1228 + $0A) passou de 25 para 26 nos quadros 6431, 6471, 6503 e 6535. Com a armadura presente ($0E3F = 16), o slot não se apaga. Dos 142 quadros, 15 diferem da comparação, todos no tempo da pose da armadura. Nenhum inimigo é acertado, então o dano (10 contra 5) não aparece.

A chegada virada para a esquerda

só-não-visto

No começo de cada fase, o X desce num raio de luz e se forma sempre virado para a direita, porque, logo antes da chegada, o jogo define a direção dele como “direita”.

No final do jogo, o mesmo trecho do código vira o X para a esquerda e manda começar a chegada. Mas, três comandos depois, ele troca essa ordem pela caminhada da cena final. A ordem de chegar virado para a esquerda fica na memória por cerca de 15 ciclos do processador, uns 5 milionésimos de segundo, e nunca chega a ser desenhada na tela.

Ainda falta descartar outros caminhos do jogo que poderiam levar a essa chegada; por isso o selo é só-não-visto.

Nove quadros do jogo original no começo da fase do Armored Armadillo: um raio de luz desce, vira uma gota e forma o X virado para a direita.
Imagem do jogo original. Quadros 1276 a 1300 de uma gravação conferida da fase do Armored Armadillo: o raio desce, vira uma gota e forma o X virado para a direita. Abrir em tamanho real
Detalhes técnicos

A ação do jogador $22 é o teletransporte do começo da fase, e 81:81AB grava a direção direita logo antes dela. No final, a rotina vira o X para a esquerda (81:81B4) e escreve $22 (81:81CE), mas três instruções depois a troca por $44 (81:81D7), a caminhada da cena final. Isso dura cerca de 15 ciclos da CPU, cerca de 5 microssegundos. O selo só-não-visto vale para o caso geral, porque outros caminhos ainda não foram fechados.

A imagem é build/coord/pose22-teleporte-armadillo.png, com os quadros 1276 a 1300 de uma gravação conferida da fase do Armored Armadillo, ampliada 2× sem suavização para o site.

Nos vídeos (build/W2, w2_teleport_facing_left e w2_teleport_control), em 81:81B6 (depois de 81:81AB LDA #$40 / 81:81AD STA $0C11), 7E:0C11 (w_blaster_direction) passou de 64 para 0 no quadro 1021 da gravação knowledge_base/_movies/chill-penguin. Os vídeos cobrem os quadros 1011 a 1190 (180). A comparação é a mesma gravação, sem escrita.

Uma ferramenta escondida para ver e editar o mapa

sem-referência-estática

O cartucho guarda uma ferramenta de teste deixada pelos programadores. Quando ela roda, a partida para e só a ferramenta funciona, com comandos próprios. Nenhuma parte do jogo leva até ela.

No controle 1, o botão A liga e desliga as camadas do cenário, o Y liga e desliga uma grade sobre o mapa, e segurar X, L e R ao mesmo tempo fecha a ferramenta.

No controle 2, o direcional move um cursor (2 pixels por vez, ou 8 com o B). L e R escolhem o número de um bloco do mapa, o A copia um valor guardado, e o Y coloca esse bloco no mapa, debaixo do cursor.

Na tela aparecem os textos POS X., POS Y., CH CELL NO., CELL NO. e HIT NO..

Os nomes dos botões foram deduzidos da ordem em que o Super Nintendo lê o controle.

  • A ferramenta de mapa funcionando— abrir: ampliar, sem som

    A ferramenta de mapa funcionando

    Situação encenada no emulador: colocamos isso direto na memória; o que acontece depois é o código do jogo, mas o começo foi feito por nós

    Na caverna da fase do Chill Penguin, a ferramenta assume o jogo: os textos POS X., POS Y., CELL NO., HIT NO. e CH CELL NO. aparecem no alto com valores, um pequeno quadrado de cursor fica sobre o mapa, e o controle 2 move o cursor para a direita enquanto a vista acompanha.

    Baixar GIF
Detalhes técnicos

A ferramenta é lunchDebugSuite, em 84:833D (termina em RTL, 84:83C4), com 19 rótulos internos até 84:893D. Nenhuma instrução do export chama esses rótulos de fora do bloco, e os bytes 3D 83 84 (ponteiro longo) e 3C 83 84 não aparecem em lugar nenhum do ROM. Um salto indireto via RAM não foi excluído.

Ela tem uma tabela de 9 estados em 84:83C5. No controle 1, as camadas ficam em 84:880F, a grade em BG3 em 84:849F e 84:8500, e a saída com X+L+R em 84:83A3. No controle 2, o número de célula vai até $1FFF (84:88AC), e a célula é escrita no mapa por JSL 84:9111 em 84:88D3. Os textos são lidos de 86:A568. Os botões foram inferidos da ordem dos bits do SNES (o direcional está nos bits 0-3 do byte que o export chama de Lo).

No vídeo encenado (build/W2, w2_debug_suite), no RTL 84:909F de shuffleGetRNG (84:9086), com a flag de índice ligada, o endereço de retorno na pilha (7E:0138..013A, SP $0137) passou de 99 9A 80 para 3C 83 84, e o RTL caiu em 84:833D (lunchDebugSuite) no quadro 20, a partir de cp_long_f1350_thispc.mss. O vídeo cobre os quadros 18 a 95 (78).

Uma verificação de teste que nunca roda

sem-referência-estática

A cada quadro, o jogo repete o mesmo trecho de código que comanda a partida. No meio desse trecho ficou uma verificação deixada pelos programadores: com uma chave de teste ligada, o jogo deixaria de desenhar os personagens e os objetos na tela. Só que, logo antes dessa verificação, o código sempre pula para outro ponto, então ela nunca é feita. E a chave é ligada sempre que o jogo entra nesse trecho: se a verificação rodasse, a tela ficaria sem personagens e sem objetos.

Detalhes técnicos

O laço principal do jogo começa em 80:9102. Depois do BRA em 80:911F vem o teste LDA w_debugModSlot / BNE em 80:9121, que nenhum desvio alcança. Com a flag ligada, ele pularia mainOAM (80:D56F), o desenho dos sprites. A flag vale 1 sempre que o jogo entra no laço (80:9104).

Pedaços de mapa que a câmera não mostra

só-não-visto

Abaixo da câmera

Em duas fases, sobra uma faixa de 16 pixels de altura abaixo do ponto mais baixo que a câmera alcança: na fase do Armored Armadillo, com 83 blocos sólidos, e na do Boomer Kuwanger, com 16. A câmera do jogo funciona de três jeitos, e nenhum deles passa desse limite. Ainda falta conferir mais um trecho do código que muda a posição da câmera, e como a posição da câmera se liga à rolagem do cenário.

Faixa de cenário do Armored Armadillo: rocha marrom dos dois lados e, no meio, um trecho vermelho escuro.
Mapa feito com os dados do cartucho original. Armored Armadillo: o cenário da faixa abaixo da câmera, com rocha marrom e um trecho vermelho escuro. É um desenho feito com os dados do cartucho, não uma captura do jogo rodando. Role para o lado para ver a faixa inteira. Abrir em tamanho real
Faixa de cenário do Boomer Kuwanger: painéis verdes e azuis.
Mapa feito com os dados do cartucho original. Boomer Kuwanger: o cenário da faixa abaixo da câmera, com painéis verdes e azuis. É um desenho feito com os dados do cartucho, não uma captura do jogo rodando. Abrir em tamanho real

Um vazio fechado na fase do Sting Chameleon

São três blocos do mapa num espaço fechado. A prova de que não dá para chegar lá ainda não está completa.

Peças do checklist

Uma ferramenta que percorre o mapa automaticamente examinou 57 peças do checklist do X1 e não provou que nenhuma delas seja inalcançável.

Detalhes técnicos

O limite vertical do modo 2 (camera_borders_2026-10-02.json) deixa sobrar as faixas: no Armored Armadillo em y 2800 (x 3584-5375, 83 células sólidas) e no Boomer Kuwanger em y 6128 (x 0-255, 16 células). A tabela de modos 80:DE13 tem 3 entradas: 80:DE19 (inicia), 80:DE40 (segue e limita) e 80:DE3F (só RTS, a câmera fica parada). O limite horizontal não esconde as faixas; quem esconde é o vertical. Falta conferir o escritor 80:C51D e a relação entre camY e a rolagem do BG1. As imagens do BG1 estão em build/WK1/.

No Sting Chameleon, as células $38 ficam em (304,64), (304,74) e (304,90), e a prova está com complete=false (terrain_unreachable_proofs_2026-10-03.json). Nas peças do ledger, o flood-fill provou 0 de 57 peças inalcançáveis (unreachable_parts_2026-10-02.json).

As duas faixas vêm de build/WK1 (armored-armadillo_bg1_strip_y2800.png, 1792x48, e boomer-kuwanger_bg1_strip_y6128.png, 256x48), ampliadas 2×: são desenhos dos blocos do BG1 a partir dos dados do ROM, não capturas do emulador (conferidos a olho em 2026-10-09, manifesto W3).

Áreas do mapa sem acesso

só-não-visto

Uma ferramenta percorre o mapa a partir do começo da fase e de cada checkpoint, com e sem dash e pulo na parede. Nenhuma área de 3 blocos ou mais fica abaixo da câmera.

Ela achou 14 bolsões fechados no mapa, sem nenhum objeto do cartucho, por onde o X nunca passou nas gravações: 6 na fase do Flame Mammoth, 2 na do Launch Octopus, 3 na do Spark Mandrill, 2 na do Storm Eagle e 1 na do Boomer Kuwanger. Ainda falta descartar portas, blocos quebráveis e variações do mapa.

O X passou, nas gravações, por outras 184 áreas que a ferramenta não alcança. E 16 salas fechadas têm objetos do cartucho, como portas e os teletransportes da fase Sigma 3. Essas áreas e salas não contam como inalcançáveis. A ferramenta ainda não sabe lidar com escadas, plataformas que se movem, água, Ride Armor, rampas e dash saindo da borda.

Detalhes técnicos

tools/maps/unreachable.py roda o reach.py a partir do spawn e dos checkpoints, sem e com dash/wall kick. Os bolsões (coluna,linha:células) são: FM 178,40:4 363,46:9 389,46:7 412,46:3 439,46:6 0,59:16; LO 449,28:14 396,64:4; SM 0,42:16 0,50:16 62,58:10; SE 241,31:14 57,72:5; BK 80,0:30. Ficaram fora da conta o topo do mapa (3) e o teto externo do SM (4). As imagens estão em build/WK2/, uma por fase.

Inimigos que pareciam não estar em fase nenhuma

Uma contagem de 108 tipos de objeto só considerava colocados nas fases os 93 que tinham aparecido nas nossas capturas das fases. Mas o próprio cartucho guarda listas do que cada fase coloca, e essas listas mudam a conta.

Seis são criados por outro objeto

Três objetos do Utuboros, um ovo, o Storm Eagle e um gerador. Eles aparecem quando outro objeto do jogo os cria.

Seis estão nas listas do cartucho

Eles aparecem nas listas de várias fases: a rodovia da abertura, as fases do Chill Penguin, do Armored Armadillo, do Sting Chameleon e do Storm Eagle, e as fases Sigma 1 e Sigma 2. Esse dado foi corrigido numa segunda rodada de conferência.

Três sem criador achado

só-não-visto

Eles não estão nas listas das fases, e nenhum trecho conhecido do código os cria. Ainda falta conferir um trecho que sorteia entre dois tipos de objeto, e os trechos que escrevem na memória num lugar calculado na hora.

Detalhes técnicos

O censo tinha 108 OIDs e contava como colocados os 93 vistos nas capturas (*_full.json). As listas do ROM ficam em 85:82C2 e são lidas por 80:DB71 (tools/rom/extract_events.py).

Os criados por outro objeto são: Utuboros 0x23, 0x24 e 0x25 (82:FE5A, 82:C2C2, 82:C2EB); o ovo 0x55 e o Storm Eagle 0x56 (87:DD9D, 87:E283); e o gerador 0x45 (87:FD23).

Estão nas listas do ROM (correção da rodada 2): 0x0F crusher (IH 15), 0x15 spiky (IH 2, AA 4, CP 8, Sigma 1 3, Sigma 2 3), 0x19 bombBeen (IH 6, CP 4), 0x0B axeMax (SC 3, CP 2), 0x46 airPortGasTank (SE 5) e 0x51 rayBit_bunny (CP 5). São registros com localizador 3 (slots de inimigo, 82:8321).

Sem criador achado: 0x00 (stub vazio em 80:F9B5), 0x09 RT55J (81:CC13) e 0x3E tomBotGen. Todo LDA #$09 ou #$3E seguido de escrita em +$0A grava um slot da página $1928 ou de tiro inimigo (por exemplo, 88:C454 depois de 88:C44B). Ainda não foram checados 80:A31F (OID 0 ou 6 por sorteio, página não traçada) e as escritas por ponteiro indireto.

Inimigos que nunca nascem

declarado-impossível

Em 647 gravações conferidas, três inimigos colocados nas fases nunca nasceram, ou seja, o jogo nunca os criou: um na fase do Spark Mandrill (o de nº 84 da lista da fase) e dois na fase do Armored Armadillo (os de nº 0 e 62). Nenhuma das 647 gravações mostra o nascimento deles, e todas as buscas automáticas terminaram sem que eles nascessem.

Os três ficam em espaço vazio do mapa: o do Spark Mandrill, acima do teto; no Armored Armadillo, um abaixo da área do começo da fase e outro embaixo do chão. Nessas gravações, a câmera nunca chegou à área onde eles nasceriam.

No corredor do Armored Armadillo, as travas de câmera do próprio jogo voltam o limite para a mesma altura antes de a câmera chegar lá. Pelo código, o X anda no máximo 4 pixels por quadro para o lado e sobe no máximo 7, e a câmera o segue 128 pixels atrás. Quatro buscas automáticas chegaram a 4 a 12 pixels do objetivo e pararam.

O David decidiu tratar os três como impossíveis no jogo normal. A prova completa pelo código ainda não terminou; por isso o selo é declarado-impossível, e não provado-inalcançável. Só forçando a câmera eles nascem, como mostram os vídeos abaixo.

Mapa da fase do Spark Mandrill com legenda em português: o sinal vermelho do inimigo nº 84 da lista fica no espaço vazio acima do teto, dentro de um quadro amarelo; as áreas azuis, onde a câmera chegou, ficam abaixo, junto ao teto.
Mapa feito com os dados do cartucho original. Spark Mandrill, inimigo nº 84 da lista da fase: fica acima do teto, num espaço vazio do mapa. Cores: vermelho, onde o cartucho coloca o inimigo; amarelo, a área que a câmera precisa alcançar para ele nascer; azul, onde a câmera chegou nas gravações conferidas; tracejado branco, a tela gravada que chegou mais perto; verde, os pontos em que o jogo trava a câmera. Abrir em tamanho real
Mapa do começo da fase do Armored Armadillo com legenda em português: o sinal vermelho do inimigo nº 0 da lista fica bem abaixo da área do começo, num espaço vazio, dentro de um quadro amarelo; as áreas azuis, onde a câmera chegou, ficam lá em cima.
Mapa feito com os dados do cartucho original. Armored Armadillo, inimigo nº 0 da lista da fase: fica abaixo da área do começo da fase, num espaço vazio do mapa. Cores: vermelho, onde o cartucho coloca o inimigo; amarelo, a área que a câmera precisa alcançar para ele nascer; azul, onde a câmera chegou nas gravações conferidas; tracejado branco, a tela gravada que chegou mais perto; verde, os pontos em que o jogo trava a câmera. Abrir em tamanho real
Mapa da mina do Armored Armadillo com legenda em português: o sinal vermelho do inimigo nº 62 da lista fica embaixo do chão, num espaço vazio, dentro de um quadro amarelo; as áreas azuis, onde a câmera chegou, ficam acima do chão.
Mapa feito com os dados do cartucho original. Armored Armadillo, inimigo nº 62 da lista da fase: fica embaixo do chão, num espaço vazio do mapa. Cores: vermelho, onde o cartucho coloca o inimigo; amarelo, a área que a câmera precisa alcançar para ele nascer; azul, onde a câmera chegou nas gravações conferidas; tracejado branco, a tela gravada que chegou mais perto; verde, os pontos em que o jogo trava a câmera. Abrir em tamanho real

Nos vídeos, levamos a câmera do jogo até esse ponto no emulador. Aí o próprio jogo cria o inimigo que está na lista da fase.

  • Spark Mandrill, inimigo nº 84 da lista— abrir: ampliar, sem som

    Spark Mandrill, inimigo nº 84 da lista

    Situação forçada no emulador: não acontece jogando normalmente

    Na parte escura da fase, com o X em cima de um pilar, a câmera sobe 248 pixels no escuro e o jogo cria o inimigo. Ele voa para a esquerda, com seu cone de luz iluminando o fundo, e sai da tela. Depois a câmera volta para o X.

    Baixar GIF
  • Armored Armadillo, inimigo nº 62 da lista— abrir: ampliar, sem som

    Armored Armadillo, inimigo nº 62 da lista

    Situação forçada no emulador: não acontece jogando normalmente

    Na mina, a ação da fase continua, com explosões em volta de uma máquina escavadeira com espinhos. A câmera vai para a esquerda e desce até debaixo do chão, onde o jogo cria um morcego, que fica pendurado na faixa escura debaixo da rocha. Depois a câmera volta.

    Baixar GIF
  • Armored Armadillo, inimigo nº 0 da lista— abrir: ampliar, sem som

    Armored Armadillo, inimigo nº 0 da lista

    Situação forçada no emulador: não acontece jogando normalmente

    No começo da fase, a câmera sai do X e vai 629 pixels para a esquerda e 738 para baixo, passando pelas paredes marrons até uma tela só com a cor de fundo. Ali o jogo cria um morcego, que fica pendurado sozinho. Nada mais é desenhado nesse ponto do mapa.

    Baixar GIF
Detalhes técnicos

No Spark Mandrill é a colocação 84; no Armored Armadillo, as colocações 0 e 62. Nenhum nasceu em 647 gravações conferidas (R104), e todas as buscas automáticas pararam. A câmera nunca chegou à área de nascimento deles nessas gravações.

Nos vídeos (build/W2), em 80:E152, o RTS da trava 80:E0DE..80:E152, a cada quadro do movimento, os alvos da câmera 7E:1E4D/1E4E (x) e 7E:1E50/1E51 (y) receberam o valor forçado. O criador 80:DC36/80:DCDB roda depois, no mesmo quadro, e cria o inimigo da própria lista do ROM; nada mais é escrito.

Spark Mandrill 84: y de 768 para 520 (6 px por quadro), espera de 60, volta a 768, nos quadros 22050 a 22194 da gravação spark-mandrill-death-hunt; o OID 0x37 nasce em (6513, 590) no quadro 22076. Armored Armadillo 62: x de 3081 para 2960 e depois y de 768 para 900 (6 px por quadro), espera de 60 e volta, nos quadros 2940 a 3067 da gravação armored-armadillo; o OID 0x2D nasce em (3080, 1053) no quadro 2965. Armored Armadillo 0: x de 629 para 0 e depois y de 412 para 1150 (8 px por quadro), espera de 60, sem volta, nos quadros 1345 a 1577; o OID 0x2D nasce em (26, 1305) no quadro 1503.

Os mapas vêm de build/R106 (render.py), desenhados a partir dos mapas decodificados do ROM (content/x1/stages/tiles/<fase>_full.json) e ampliados 2×. Azul são os alvos de câmera alcançados nas gravações com WRAM igual da R104; amarelo, a janela de câmera em que 80:DC36 -> 80:DCDB testa o registro; verde, os eventos de trava 81:F6AB.

Colocação 62 do Armored Armadillo: objeto 0x2D em (3080, 1053); para ele nascer, a câmera precisaria estar em x 2784..3135 e y 782..1085. A trava de câmera é escrita em 81:F718 (registros 86:E4E2 e 86:ECD0), com $1E52 := 2 em 81:F6FA. Rota B (limite de baixo 1024 vindo de i91 e levado para o oeste por i90, 86:E76C, y 800..943): o cruzamento grava bottom_t 768 e camY cai pelo menos 2 px por quadro (80:E282..80:E2B9). Rota T (limite de cima 1024 vindo de i103, 86:E78A): ao passar de x 4575 para o oeste, o X entra em i101 (86:E780, y 1040..1167) e top_t volta a 768.

Resultado de cada rota no R110: B aberta (fechada só para o movimento do próprio X) e T aberta; a rota do monstro cavador (Mole Borer, OID 0x2C, 83:BF44) e a do vazio abaixo do corredor (o X morre no poço, 80:E12D..80:E146) fechadas; a faixa inferior oeste e o respawn do checkpoint 1 (86:A934) recaem na rota T; a rota de 83:F82A/83:F82D ($0318 = 792) fica aberta.

Limites do X pelo ROM (R110): integração em 82:820A..82:823D (x += xSpd $0BC2, y -= ySpd $0BC4); tabela de velocidades x em 86:B9B1. O maior passo resolvido para o lado é a investida, 885/256 = 3,457 px por quadro (então no máximo 4); o maior passo para cima é o chute na parede com $0621 = 1569/256 = 6,13 px por quadro (então no máximo 7). Câmera: camX = X x - 128 (80:DE9D..80:DEBB), y entre X y - 128 e X y - 96 (80:DEBC..80:DEDA), variação por quadro limitada a SpdMax $1E54 = 8 (80:DE36..80:DE39); deslocamento 128.

As quatro buscas automáticas do R108 (XEON), todas com o orçamento de quadros de entrada esgotado e sem o evento: r108-aa62-bottom-west com melhor distância 4, r108-aa62-top-west com 12, r108-aa62-birth-i91 com 8 e r108-aa62-birth-i103 com 8.

O selo vem de stage_population_declared_impossible_2026-10-09.json: decisão do David em 2026-10-09, no chat, com a evidência R104 (647 gravações com WRAM igual e as buscas), R106 (travas e limites da câmera), R108 (sete rotas e quatro buscas), R110 (velocidade do X e deslocamento e velocidade da câmera pelo ROM) e W2 (cada colocação nasce só com a câmera forçada). Não é uma prova completa pelo ROM: o R110 deixa em aberto 29 escritores externos da posição do X, a sondagem do teto do terreno e 267 pontos de escrita sem resolução (54 indexados por X em $0001/$0002, 1 em 82:D9CA, 43 indiretos e 169 de página direta sem anotação); a contagem é pela decisão do dono.

Animações de chefes que o jogo tem mas nunca usa

provado-inalcançável

O cartucho guarda, para cada chefe, as animações que ele mostra na luta. Algumas estão lá, completas, mas o jogo nunca as usa: o código do chefe nunca pede por elas, então nenhuma partida as mostra. Para cada uma existe uma prova por escrito, conferida no código do cartucho.

Para ver como elas seriam, forçamos cada uma no emulador: escrevemos na memória do jogo o começo da animação, do mesmo jeito que o próprio jogo faria, e deixamos o jogo tocá-la sozinho. Por isso todo GIF desta parte tem o aviso “forçado”: nada disso acontece jogando normalmente.

Antes, conferimos o método numa animação que o jogo usa de verdade: a versão forçada saiu igual, ponto por ponto, à gravação do jogo normal.

Boomer Kuwanger

O jogo tem esta animação do Boomer Kuwanger, mas nunca a usa. O código dele escolhe essa animação por um número, e a prova mostra que esse número nunca vale 22, o número desta animação. Por isso ela também saiu da lista de pedidos de gravação.

GIF forçado: Boomer Kuwanger, a animação que o jogo nunca usa.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Boomer Kuwanger: a animação que o jogo nunca usa. Abrir o GIF · Imagem parada
Detalhes técnicos

Prova (knowledge_base/mmx1/rom/boss_unrequested_cells_2026-10-11_h29.json, prova bk-dynamic-a-22, linha boss.boomer-kuwanger.presentation; como está no KB, em inglês): 87:8C32 passes A = +0F & 7F (87:8C2E-87:8C30). In the OID 05 closure, +0F is stored by 84:8F44 (8-bit, SEP 84:8F3A): the current record's flags, sprite 117 (87:8AB3 via 82:827D) flags & 7F = 0..19, sprite 133 (82:802D) 0..2; and by 82:839E (16-bit, REP 82:8398) = 0000 inside the despawn routine 82:8398. 82:80D6 (STZ, SEP 82:80D4), 82:80DD (STA #81, SEP 82:80D9) and 84:90F2 (SEP 84:90B6) are 8-bit and write +0E only. Intro sub-state 0 (87:8AE7) sets +0F at 87:8B15 (A = 24) before 87:8C02 stores the fight state. So 84:8F07 never starts animation 22 of sprite 117.

w7_forced_boomer-kuwanger_05_75_22.gif (com w7_forced_boomer-kuwanger_05_75_22.png): OID 05, sprite 75, animação 22; 118 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 7ba23b76b6772f47f673c6136e2f7df337c2b0d02805a30805d61fd219accb3e. Gravação boomer-kuwanger, savestate no quadro 18338; escrita no quadro 18346 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 0D D4, +13 = 02, +0F = 00, +17 = 8F, 7E:000E = 16 (a rotina tinha gravado +13 16 +14 D447 +0F 00 +17 80). Fontes: H29; prova: bk-dynamic-a-22. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 0D D4, +13 = 02, +0F = 00, +17 = 8F, 7E:000E = 16 (o início da animação 22 do sprite 75, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 22 do sprite 75 sozinho até o próprio código do chefe pedir outra animação no quadro 18562. Não acontece jogando normalmente.

Launch Octopus

O jogo tem estas 22 animações do Launch Octopus, mas nunca as usa: o código dele troca de animação em 18 pontos, e nenhum deles pede uma destas.

GIF forçado: Launch Octopus, animação 1 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 1 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
Ver as outras 21 animações
GIF forçado: Launch Octopus, animação 2 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 2 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 3 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 3 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 4 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 4 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 5 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 5 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 6 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 6 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 7 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 7 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 8 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 8 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 9 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 9 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 10 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 10 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 11 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 11 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 12 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 12 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 13 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 13 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 14 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 14 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 15 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 15 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 16 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 16 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 17 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 17 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 18 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 18 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 19 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 19 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 20 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 20 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 21 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 21 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Launch Octopus, animação 22 de 22.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Launch Octopus: animação 22 de 22 que o jogo nunca usa. Abrir o GIF · Imagem parada
Detalhes técnicos

Prova (knowledge_base/mmx1/rom/boss_unrequested_animation_cells_2026-10-11_r125.json, prova never-requested-07, linha boss.launch-octopus.presentation; como está no KB, em inglês): H26 'never requested' (build/H26/result-notes.md, Proofs): the OID 07 closure from main 81:C433 (3052 instructions, complete, no unresolved dispatch) has 18 resolved 84:8F07 (setSpriteAnim) callers; the A each one passes is listed below; none passes the k of an animation listed here, so 84:8F07 never starts it and no frame record of it becomes current (84:8EEA steps only the current animation). +16 = 118 is set by the sprite stores listed. Main 81:C433. H26, first animation: never requested: the OID 07 closure (3052 instructions, complete) has 18 resolved 84:8F07 callers, none with A = 0: 81:C4E8=[2], 81:C709=[7], 81:C771=[8], 81:C7A7=[9], 81:C859=[8], 81:C8D7=[3], 81:C4AF=[15, 19], 81:C581=[5, 14], 81:C5D4=[5, 14], 81:C625=[10, 11], 81:C66A=[15, 19], 81:C686=[1, 13], 81:C6B9=[15, 19], 81:C897=[15, 19], 81:C953=[4, 12], 81:C972=[1, 13], 81:C9AD=[15, 19], 81:CAC3=[5, 14].

w7_forced_launch-octopus_07_76_0.gif (com w7_forced_launch-octopus_07_76_0.png): OID 07, sprite 76, animação 0; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF d53af51e31cf5806784057bfde9331bdd22157e66b50a75c93f4242af347b332. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = EC D4, +13 = 08, +0F = 80, +17 = 80, 7E:000E = 00 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/34 (R125); prova: build/H26/callers.json#/records/34. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = EC D4, +13 = 08, +0F = 80, +17 = 80, 7E:000E = 00 (o início da animação 0 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 0 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_6.gif (com w7_forced_launch-octopus_07_76_6.png): OID 07, sprite 76, animação 6; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF a5683e1cb254c84bb8d0f111e3528af98f4a4325db2559f430569b0cd4ef2f8e. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 9A D5, +13 = 09, +0F = 00, +17 = A0, 7E:000E = 06 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/37 (R125); prova: build/H26/callers.json#/records/37. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 9A D5, +13 = 09, +0F = 00, +17 = A0, 7E:000E = 06 (o início da animação 6 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 6 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_16.gif (com w7_forced_launch-octopus_07_76_16.png): OID 07, sprite 76, animação 16; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 0d0f16f1515b0814f28fad42b7b379c12cf128005f4447d9d55591b99e6a6234. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 7D D6, +13 = 08, +0F = 80, +17 = CA, 7E:000E = 10 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/42 (R125); prova: build/H26/callers.json#/records/42. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 7D D6, +13 = 08, +0F = 80, +17 = CA, 7E:000E = 10 (o início da animação 16 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 16 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_17.gif (com w7_forced_launch-octopus_07_76_17.png): OID 07, sprite 76, animação 17; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 9091061efbc3fda305af48b836e5e63cafbd6d1984e57e8128ab8cdd8b48e9c4. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 82 D6, +13 = 06, +0F = 00, +17 = CB, 7E:000E = 11 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/43 (R125); prova: build/H26/callers.json#/records/43. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 82 D6, +13 = 06, +0F = 00, +17 = CB, 7E:000E = 11 (o início da animação 17 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 17 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_18.gif (com w7_forced_launch-octopus_07_76_18.png): OID 07, sprite 76, animação 18; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF d55c1ba25bc9eae0d0660494863be9ccce82343d3d43b6eb97205755b579c54c. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 90 D6, +13 = 06, +0F = 00, +17 = CE, 7E:000E = 12 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/44 (R125); prova: build/H26/callers.json#/records/44. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 90 D6, +13 = 06, +0F = 00, +17 = CE, 7E:000E = 12 (o início da animação 18 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 18 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_20.gif (com w7_forced_launch-octopus_07_76_20.png): OID 07, sprite 76, animação 20; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF dfd9ac9ca1df128e657f6f21077d73870bbb0ecb915d5d60033155148284ceeb. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = A9 D6, +13 = 04, +0F = 00, +17 = D1, 7E:000E = 14 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/46 (R125); prova: build/H26/callers.json#/records/46. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = A9 D6, +13 = 04, +0F = 00, +17 = D1, 7E:000E = 14 (o início da animação 20 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 20 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_21.gif (com w7_forced_launch-octopus_07_76_21.png): OID 07, sprite 76, animação 21; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 124b110597a061c2d8b8ccdf021dc85360d2278460e5366aa3c49951d5da6bb2. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = B4 D6, +13 = 08, +0F = 80, +17 = D3, 7E:000E = 15 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/47 (R125); prova: build/H26/callers.json#/records/47. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = B4 D6, +13 = 08, +0F = 80, +17 = D3, 7E:000E = 15 (o início da animação 21 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 21 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_22.gif (com w7_forced_launch-octopus_07_76_22.png): OID 07, sprite 76, animação 22; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF bde5cd8bd5ee994f114d6b8cc9184f2c944172bc4d79c21033ea90f1096941ed. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = B9 D6, +13 = 08, +0F = 80, +17 = D4, 7E:000E = 16 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/48 (R125); prova: build/H26/callers.json#/records/48. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = B9 D6, +13 = 08, +0F = 80, +17 = D4, 7E:000E = 16 (o início da animação 22 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 22 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_23.gif (com w7_forced_launch-octopus_07_76_23.png): OID 07, sprite 76, animação 23; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF dbf145e7801d33ddeec94549653c3541fa4dfd5528b949a4b22157bb9e753d8d. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = BE D6, +13 = 08, +0F = 80, +17 = D5, 7E:000E = 17 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/49 (R125); prova: build/H26/callers.json#/records/49. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = BE D6, +13 = 08, +0F = 80, +17 = D5, 7E:000E = 17 (o início da animação 23 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 23 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_24.gif (com w7_forced_launch-octopus_07_76_24.png): OID 07, sprite 76, animação 24; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF da2b25e310d1a25ff20cb472e286e2d7493498285ffcbb55113feeaf41ee8bdf. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = C3 D6, +13 = 08, +0F = 80, +17 = D6, 7E:000E = 18 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/50 (R125); prova: build/H26/callers.json#/records/50. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = C3 D6, +13 = 08, +0F = 80, +17 = D6, 7E:000E = 18 (o início da animação 24 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 24 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_25.gif (com w7_forced_launch-octopus_07_76_25.png): OID 07, sprite 76, animação 25; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 7184f461d1cd527fff1c6ff09d10727766836a66ec882745a83f93305d0b21c1. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = C8 D6, +13 = 08, +0F = 80, +17 = D7, 7E:000E = 19 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/51 (R125); prova: build/H26/callers.json#/records/51. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = C8 D6, +13 = 08, +0F = 80, +17 = D7, 7E:000E = 19 (o início da animação 25 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 25 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_26.gif (com w7_forced_launch-octopus_07_76_26.png): OID 07, sprite 76, animação 26; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 6fec74addf533e7be54f6d276257e7a1b753ce12c9abf52137a4fca21714cf25. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = CD D6, +13 = 08, +0F = 80, +17 = D8, 7E:000E = 1A (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/52 (R125); prova: build/H26/callers.json#/records/52. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = CD D6, +13 = 08, +0F = 80, +17 = D8, 7E:000E = 1A (o início da animação 26 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 26 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_27.gif (com w7_forced_launch-octopus_07_76_27.png): OID 07, sprite 76, animação 27; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF e936a1b205c01eb2102a1767bc06d35dc2da37a0b04054510c1c74151aeeaf24. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = D2 D6, +13 = 08, +0F = 80, +17 = D9, 7E:000E = 1B (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/53 (R125); prova: build/H26/callers.json#/records/53. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = D2 D6, +13 = 08, +0F = 80, +17 = D9, 7E:000E = 1B (o início da animação 27 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 27 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_28.gif (com w7_forced_launch-octopus_07_76_28.png): OID 07, sprite 76, animação 28; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 82ebc889b5ea1e9f8fdd8446c282a073ec59640506e3b67bb360d6d10abffd9a. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = D7 D6, +13 = 08, +0F = 80, +17 = DA, 7E:000E = 1C (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/54 (R125); prova: build/H26/callers.json#/records/54. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = D7 D6, +13 = 08, +0F = 80, +17 = DA, 7E:000E = 1C (o início da animação 28 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 28 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_29.gif (com w7_forced_launch-octopus_07_76_29.png): OID 07, sprite 76, animação 29; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 870f9acb27637e4331dd80ab67b54696cb1f9815ef43fc4c2e43a7adada3da9b. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = DC D6, +13 = 08, +0F = 80, +17 = DB, 7E:000E = 1D (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/55 (R125); prova: build/H26/callers.json#/records/55. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = DC D6, +13 = 08, +0F = 80, +17 = DB, 7E:000E = 1D (o início da animação 29 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 29 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_30.gif (com w7_forced_launch-octopus_07_76_30.png): OID 07, sprite 76, animação 30; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 68a902aa40212b9b108e618f7bd5e2a3e1568720d1695b722dec65735c906996. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = E1 D6, +13 = 08, +0F = 80, +17 = DC, 7E:000E = 1E (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/56 (R125); prova: build/H26/callers.json#/records/56. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = E1 D6, +13 = 08, +0F = 80, +17 = DC, 7E:000E = 1E (o início da animação 30 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 30 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_31.gif (com w7_forced_launch-octopus_07_76_31.png): OID 07, sprite 76, animação 31; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF ca747b042d3b6915b9265c9112d10a26576807a72a2a9786bd19f1b836aba018. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = E6 D6, +13 = 08, +0F = 80, +17 = 86, 7E:000E = 1F (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/57 (R125); prova: build/H26/callers.json#/records/57. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = E6 D6, +13 = 08, +0F = 80, +17 = 86, 7E:000E = 1F (o início da animação 31 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 31 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_32.gif (com w7_forced_launch-octopus_07_76_32.png): OID 07, sprite 76, animação 32; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF f821e5529528375234fcaeec7ce547d93c529731b7a0c94743b70f87f72d6c0d. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = EB D6, +13 = 08, +0F = 80, +17 = 87, 7E:000E = 20 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/58 (R125); prova: build/H26/callers.json#/records/58. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = EB D6, +13 = 08, +0F = 80, +17 = 87, 7E:000E = 20 (o início da animação 32 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 32 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_33.gif (com w7_forced_launch-octopus_07_76_33.png): OID 07, sprite 76, animação 33; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 53c441a2533bf6dcb1a5c3dc852bb8b47e7ebd2cb98858ac6ce8c74e5503834a. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = F0 D6, +13 = 08, +0F = 80, +17 = 88, 7E:000E = 21 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/59 (R125); prova: build/H26/callers.json#/records/59. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = F0 D6, +13 = 08, +0F = 80, +17 = 88, 7E:000E = 21 (o início da animação 33 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 33 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_34.gif (com w7_forced_launch-octopus_07_76_34.png): OID 07, sprite 76, animação 34; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 68d81531468328c6aec422565bc69750f4e3cce27286067652067a5cdb186dc5. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = F5 D6, +13 = 08, +0F = 80, +17 = D1, 7E:000E = 22 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/60 (R125); prova: build/H26/callers.json#/records/60. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = F5 D6, +13 = 08, +0F = 80, +17 = D1, 7E:000E = 22 (o início da animação 34 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 34 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_35.gif (com w7_forced_launch-octopus_07_76_35.png): OID 07, sprite 76, animação 35; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 1e43971dcd6ee13b62a03bbeced563f0aefaa59634685a6109abd9d0fb2c01e3. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = FA D6, +13 = 08, +0F = 80, +17 = 8F, 7E:000E = 23 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/61 (R125); prova: build/H26/callers.json#/records/61. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = FA D6, +13 = 08, +0F = 80, +17 = 8F, 7E:000E = 23 (o início da animação 35 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 35 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

w7_forced_launch-octopus_07_76_36.gif (com w7_forced_launch-octopus_07_76_36.png): OID 07, sprite 76, animação 36; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 530b08722096cc584cd30b8be6a4e003234da85f960bdab5caa92b343b872cf0. Gravação b15-d-rex-61-1-normal-hunt, savestate no quadro 14274; escrita no quadro 14282 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = FF D6, +13 = 08, +0F = 80, +17 = D2, 7E:000E = 24 (a rotina tinha gravado +13 06 +14 D589 +0F 00 +17 80). Fontes: H26 records/62 (R125); prova: build/H26/callers.json#/records/62. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = FF D6, +13 = 08, +0F = 80, +17 = D2, 7E:000E = 24 (o início da animação 36 do sprite 76, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 36 do sprite 76 sozinho por 240 quadros. Não acontece jogando normalmente.

Sting Chameleon

O jogo tem estas 6 animações do Sting Chameleon, mas nunca as usa: o código dele troca de animação em 20 pontos, e nenhum deles pede uma destas.

GIF forçado: Sting Chameleon, animação 1 de 6.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Sting Chameleon: animação 1 de 6 que o jogo nunca usa. Abrir o GIF · Imagem parada
Ver as outras 5 animações
GIF forçado: Sting Chameleon, animação 2 de 6.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Sting Chameleon: animação 2 de 6 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Sting Chameleon, animação 3 de 6.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Sting Chameleon: animação 3 de 6 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Sting Chameleon, animação 4 de 6.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Sting Chameleon: animação 4 de 6 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Sting Chameleon, animação 5 de 6.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Sting Chameleon: animação 5 de 6 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Sting Chameleon, animação 6 de 6.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Sting Chameleon: animação 6 de 6 que o jogo nunca usa. Abrir o GIF · Imagem parada
Detalhes técnicos

Prova (knowledge_base/mmx1/rom/boss_unrequested_animation_cells_2026-10-11_r125.json, prova never-requested-0A, linha boss.sting-chameleon.presentation; como está no KB, em inglês): H26 'never requested' (build/H26/result-notes.md, Proofs): the OID 0A closure from main 88:853E (3496 instructions, complete, no unresolved dispatch) has 20 resolved 84:8F07 (setSpriteAnim) callers; the A each one passes is listed below; none passes the k of an animation listed here, so 84:8F07 never starts it and no frame record of it becomes current (84:8EEA steps only the current animation). +16 = 35 is set by the sprite stores listed. Main 88:853E. H26, first animation: never requested: the OID 0A closure (3496 instructions, complete) has 20 resolved 84:8F07 callers, none with A = 9: 88:85C6=[3], 88:8664=[17], 88:8681=[6], 88:86A2=[5], 88:8705=[0], 88:8756=[21], 88:87E6=[1], 88:87F9=[1], 88:8894=[6], 88:88EB=[18], 88:8954=[3], 88:8976=[3], 88:8AFA=[4], 88:8B72=[8], 88:8BB3=[8], 88:8BE2=[7], 88:8BFA=[12, 13, 14, 15], 88:8C24=[12, 13, 14, 15], 88:8C71=[7], 88:8CBF=[2].

w7_forced_sting-chameleon_0A_23_9.gif (com w7_forced_sting-chameleon_0A_23_9.png): OID 0A, sprite 23, animação 9; 43 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF e975e2baa1e36bfd5afc16ab56f5df506590db6672ef4209e673e2b27f533015. Gravação sting-chameleon, savestate no quadro 20034; escrita no quadro 20042 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 67 B5, +13 = 08, +0F = 80, +17 = 9E, 7E:000E = 09 (a rotina tinha gravado +13 10 +14 B4C9 +0F 00 +17 80). Fontes: H26 records/106 (R125); prova: build/H26/callers.json#/records/106. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 67 B5, +13 = 08, +0F = 80, +17 = 9E, 7E:000E = 09 (o início da animação 9 do sprite 23, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 9 do sprite 23 sozinho até o próprio código do chefe pedir outra animação no quadro 20107. Não acontece jogando normalmente.

w7_forced_sting-chameleon_0A_23_10.gif (com w7_forced_sting-chameleon_0A_23_10.png): OID 0A, sprite 23, animação 10; 43 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF f4b379327c5addf9cb85f908beaa2fb1942becf4040cec5f5041747ad24874fa. Gravação sting-chameleon, savestate no quadro 20034; escrita no quadro 20042 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 6C B5, +13 = 08, +0F = 80, +17 = 9F, 7E:000E = 0A (a rotina tinha gravado +13 10 +14 B4C9 +0F 00 +17 80). Fontes: H26 records/107 (R125); prova: build/H26/callers.json#/records/107. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 6C B5, +13 = 08, +0F = 80, +17 = 9F, 7E:000E = 0A (o início da animação 10 do sprite 23, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 10 do sprite 23 sozinho até o próprio código do chefe pedir outra animação no quadro 20107. Não acontece jogando normalmente.

w7_forced_sting-chameleon_0A_23_11.gif (com w7_forced_sting-chameleon_0A_23_11.png): OID 0A, sprite 23, animação 11; 43 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF a0ceefb2b6dd69bd1d1649d30aef7e733f22d66e79c4e570b4848f9aa6edef15. Gravação sting-chameleon, savestate no quadro 20034; escrita no quadro 20042 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 71 B5, +13 = 08, +0F = 80, +17 = A0, 7E:000E = 0B (a rotina tinha gravado +13 10 +14 B4C9 +0F 00 +17 80). Fontes: H26 records/108 (R125); prova: build/H26/callers.json#/records/108. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 71 B5, +13 = 08, +0F = 80, +17 = A0, 7E:000E = 0B (o início da animação 11 do sprite 23, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 11 do sprite 23 sozinho até o próprio código do chefe pedir outra animação no quadro 20107. Não acontece jogando normalmente.

w7_forced_sting-chameleon_0A_23_16.gif (com w7_forced_sting-chameleon_0A_23_16.png): OID 0A, sprite 23, animação 16; 43 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 607437312fb847441bf03af86b610d80cc3a4361c22888c4fb3c979d51b4f1b7. Gravação sting-chameleon, savestate no quadro 20034; escrita no quadro 20042 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 02 B6, +13 = 08, +0F = 80, +17 = AE, 7E:000E = 10 (a rotina tinha gravado +13 10 +14 B4C9 +0F 00 +17 80). Fontes: H26 records/110 (R125); prova: build/H26/callers.json#/records/110. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 02 B6, +13 = 08, +0F = 80, +17 = AE, 7E:000E = 10 (o início da animação 16 do sprite 23, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 16 do sprite 23 sozinho até o próprio código do chefe pedir outra animação no quadro 20107. Não acontece jogando normalmente.

w7_forced_sting-chameleon_0A_23_19.gif (com w7_forced_sting-chameleon_0A_23_19.png): OID 0A, sprite 23, animação 19; 43 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF d28f5ea67dfb0c31c5903710510ea73c63207905411e9ec4f4352496b16cbef5. Gravação sting-chameleon, savestate no quadro 20034; escrita no quadro 20042 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 23 B6, +13 = 7F, +0F = 80, +17 = B0, 7E:000E = 13 (a rotina tinha gravado +13 10 +14 B4C9 +0F 00 +17 80). Fontes: H26 records/111 (R125); prova: build/H26/callers.json#/records/111. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 23 B6, +13 = 7F, +0F = 80, +17 = B0, 7E:000E = 13 (o início da animação 19 do sprite 23, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 19 do sprite 23 sozinho até o próprio código do chefe pedir outra animação no quadro 20107. Não acontece jogando normalmente.

w7_forced_sting-chameleon_0A_23_20.gif (com w7_forced_sting-chameleon_0A_23_20.png): OID 0A, sprite 23, animação 20; 43 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF df249d4fbecbd1730bf798871c2e46529bc35435398863072671db4e59bf15e6. Gravação sting-chameleon, savestate no quadro 20034; escrita no quadro 20042 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 28 B6, +13 = 7F, +0F = 80, +17 = B1, 7E:000E = 14 (a rotina tinha gravado +13 10 +14 B4C9 +0F 00 +17 80). Fontes: H26 records/112 (R125); prova: build/H26/callers.json#/records/112. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 28 B6, +13 = 7F, +0F = 80, +17 = B1, 7E:000E = 14 (o início da animação 20 do sprite 23, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 20 do sprite 23 sozinho até o próprio código do chefe pedir outra animação no quadro 20107. Não acontece jogando normalmente.

Armored Armadillo

O jogo tem estas 5 animações do Armored Armadillo, mas nunca as usa: o trecho do código que pede animações com estes números sempre as tira de outro conjunto de desenhos do chefe, nunca deste.

GIF forçado: Armored Armadillo, animação 1 de 5.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Armored Armadillo: animação 1 de 5 que o jogo nunca usa. Abrir o GIF · Imagem parada
Ver as outras 4 animações
GIF forçado: Armored Armadillo, animação 2 de 5.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Armored Armadillo: animação 2 de 5 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Armored Armadillo, animação 3 de 5.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Armored Armadillo: animação 3 de 5 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Armored Armadillo, animação 4 de 5.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Armored Armadillo: animação 4 de 5 que o jogo nunca usa. Abrir o GIF · Imagem parada
GIF forçado: Armored Armadillo, animação 5 de 5.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho até o próprio código do chefe pedir outra. Não acontece jogando normalmente. Armored Armadillo: animação 5 de 5 que o jogo nunca usa. Abrir o GIF · Imagem parada
Detalhes técnicos

Prova (knowledge_base/mmx1/rom/boss_unrequested_child_cells_2026-10-11_h28.json, prova aa-helper-pairing, linha boss.armored-armadillo.presentation; como está no KB, em inglês): Armored Armadillo (OID 14): every caller of A = 2..6 (H26 records 99:2-99:6) enters helper 83:B9C8; A != 0B goes 83:B9D7 LDA table, 83:B9DA LDX #62, 83:B9DC STX $16, 83:B9DE JSL 84:8F07 (sprite 98); A = 0B goes 83:B9EA LDX #63, 83:B9EC STX $16, 83:B9EE LDA #00, 83:B9F0 JSL 84:8F07 (99:0). The OID's other +16 stores: 82:802D (85), 83:B17F via 82:827D (62), 84:825C (7E); its only other 84:8F07 call is 83:B28F (A = 21). So 84:8F07 never starts animations 2..6 under sprite 99.

w7_forced_armored-armadillo_14_63_2.gif (com w7_forced_armored-armadillo_14_63_2.png): OID 14, sprite 63, animação 2; 59 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 2d79c30ee3f567d544beafc51738bdcb6cdc3ab7d53f742c71775e5145c521ae. Gravação armored-armadillo, savestate no quadro 10144; escrita no quadro 10152 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 3D CE, +13 = 02, +0F = 00, +17 = 88, 7E:000E = 02 (a rotina tinha gravado +13 01 +14 CE21 +0F 00 +17 80). Fontes: H28; prova: aa-helper-pairing. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 3D CE, +13 = 02, +0F = 00, +17 = 88, 7E:000E = 02 (o início da animação 2 do sprite 63, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 2 do sprite 63 sozinho até o próprio código do chefe pedir outra animação no quadro 10249. Não acontece jogando normalmente.

w7_forced_armored-armadillo_14_63_3.gif (com w7_forced_armored-armadillo_14_63_3.png): OID 14, sprite 63, animação 3; 59 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF b0a63508522dae630186a8558bcb82e2cad56302a28d5fe381cc4d60535ed835. Gravação armored-armadillo, savestate no quadro 10144; escrita no quadro 10152 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 48 CE, +13 = 02, +0F = 00, +17 = 8B, 7E:000E = 03 (a rotina tinha gravado +13 01 +14 CE21 +0F 00 +17 80). Fontes: H28; prova: aa-helper-pairing. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 48 CE, +13 = 02, +0F = 00, +17 = 8B, 7E:000E = 03 (o início da animação 3 do sprite 63, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 3 do sprite 63 sozinho até o próprio código do chefe pedir outra animação no quadro 10249. Não acontece jogando normalmente.

w7_forced_armored-armadillo_14_63_4.gif (com w7_forced_armored-armadillo_14_63_4.png): OID 14, sprite 63, animação 4; 59 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF f246cb749570ba15f8e4d19781bb4434032d03e6c5a977f14e32782c0e2081d3. Gravação armored-armadillo, savestate no quadro 10144; escrita no quadro 10152 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 56 CE, +13 = 02, +0F = 80, +17 = 8E, 7E:000E = 04 (a rotina tinha gravado +13 01 +14 CE21 +0F 00 +17 80). Fontes: H28; prova: aa-helper-pairing. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 56 CE, +13 = 02, +0F = 80, +17 = 8E, 7E:000E = 04 (o início da animação 4 do sprite 63, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 4 do sprite 63 sozinho até o próprio código do chefe pedir outra animação no quadro 10249. Não acontece jogando normalmente.

w7_forced_armored-armadillo_14_63_5.gif (com w7_forced_armored-armadillo_14_63_5.png): OID 14, sprite 63, animação 5; 59 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 5a794c1b761c5c995638fee75d54fd63857b8a945dfb1a942024e338a83bcf2e. Gravação armored-armadillo, savestate no quadro 10144; escrita no quadro 10152 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 5B CE, +13 = 02, +0F = 80, +17 = 8F, 7E:000E = 05 (a rotina tinha gravado +13 01 +14 CE21 +0F 00 +17 80). Fontes: H28; prova: aa-helper-pairing. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 5B CE, +13 = 02, +0F = 80, +17 = 8F, 7E:000E = 05 (o início da animação 5 do sprite 63, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 5 do sprite 63 sozinho até o próprio código do chefe pedir outra animação no quadro 10249. Não acontece jogando normalmente.

w7_forced_armored-armadillo_14_63_6.gif (com w7_forced_armored-armadillo_14_63_6.png): OID 14, sprite 63, animação 6; 59 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF c1ca9772a14a2708b5e4e5b0ffc774f2b6ba1a59b966ca4ed4a965dee798a930. Gravação armored-armadillo, savestate no quadro 10144; escrita no quadro 10152 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 60 CE, +13 = 02, +0F = 80, +17 = 90, 7E:000E = 06 (a rotina tinha gravado +13 01 +14 CE21 +0F 00 +17 80). Fontes: H28; prova: aa-helper-pairing. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 60 CE, +13 = 02, +0F = 80, +17 = 90, 7E:000E = 06 (o início da animação 6 do sprite 63, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 6 do sprite 63 sozinho até o próprio código do chefe pedir outra animação no quadro 10249. Não acontece jogando normalmente.

Storm Eagle

O jogo tem esta animação do Storm Eagle, mas nunca a usa: o único trecho do código que pede uma animação com este número troca antes o conjunto de desenhos do chefe, então mostra outra, nunca esta.

GIF forçado: Storm Eagle, a animação que o jogo nunca usa.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Storm Eagle: a animação que o jogo nunca usa. Este GIF passa do tamanho máximo do site; no lugar dele fica uma imagem parada do mesmo trecho forçado. Imagem parada
Detalhes técnicos

Prova (knowledge_base/mmx1/rom/boss_unrequested_animation_cells_2026-10-11_r125.json, prova caller-sprite-differs-52, linha boss.storm-eagle.presentation; como está no KB, em inglês): H26 'every caller has +16 proven != 137' (build/H26/result-notes.md, Proofs): every caller has +16 proven != 137: 87:DB7D +16 [138] (87:DBCD). The only 84:8F07 caller with A = 2 in the OID 52 closure (main 87:D85C) runs, on every path, after the +16 store listed, so it starts animation 2 of another sprite, never of sprite 137. Main 87:D85C. H26, first animation: every caller has +16 proven != 137: 87:DB7D +16 [138] (87:DBCD).

w7_forced_storm-eagle_52_89_2.gif (com w7_forced_storm-eagle_52_89_2.png): OID 52, sprite 89, animação 2; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 3214150f2dbdb3e232c9a67b8f21d56f96e529a544187584642ae81638253c08. Gravação storm-eagle, savestate no quadro 15210; escrita no quadro 15218 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0EA8: 7E:0EBC/0EBD = 49 DB, +13 = 05, +0F = 00, +17 = 80, 7E:000E = 02 (a rotina tinha gravado +13 06 +14 DB38 +0F 00 +17 81). Fontes: H26 records/113 (R125); prova: build/H26/callers.json#/records/113. O GIF (1456619 bytes) não vai para o site: passa do limite de 1 MB por GIF de tools/validate_site.py; no lugar dele fica a imagem parada. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0EBC/0EBD = 49 DB, +13 = 05, +0F = 00, +17 = 80, 7E:000E = 02 (o início da animação 2 do sprite 89, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 2 do sprite 89 sozinho por 240 quadros. Não acontece jogando normalmente.

Sigma

O jogo tem esta animação do Sigma, mas nunca a usa: o único trecho do código que pede uma animação com este número troca antes o conjunto de desenhos dele, então mostra outra, nunca esta.

GIF forçado: Sigma, a animação que o jogo nunca usa.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Sigma: a animação que o jogo nunca usa. Abrir o GIF · Imagem parada
Detalhes técnicos

Prova (knowledge_base/mmx1/rom/boss_unrequested_animation_cells_2026-10-11_r125.json, prova caller-sprite-differs-65, linha boss.sigma-humanoid.presentation; como está no KB, em inglês): H26 'every caller has +16 proven != 62' (build/H26/result-notes.md, Proofs): every caller has +16 proven != 62: 88:C447 +16 [161] (88:C46D 82:827D). The only 84:8F07 caller with A = 0 in the OID 65 closure (main 88:C3B2) runs, on every path, after the +16 store listed, so it starts animation 0 of another sprite, never of sprite 62. Main 88:C3B2. H26, first animation: every caller has +16 proven != 62: 88:C447 +16 [161] (88:C46D 82:827D).

w7_forced_sigma-humanoid_65_3E_0.gif (com w7_forced_sigma-humanoid_65_3E_0.png): OID 65, sprite 3E, animação 0; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF d8ac918aafdb8423bdc52574d9f6d6f9b7a903ef707a45a7e5fdc1d3c49ab9ce. Gravação b15-sigma-final-65-0-normal-hunt, savestate no quadro 9326; escrita no quadro 9334 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 24 BF, +13 = 10, +0F = 80, +17 = 80, 7E:000E = 00 (a rotina tinha gravado +13 10 +14 BF3A +0F 80 +17 85). Fontes: H26 records/90 (R125); prova: build/H26/callers.json#/records/90. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 24 BF, +13 = 10, +0F = 80, +17 = 80, 7E:000E = 00 (o início da animação 0 do sprite 3E, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 0 do sprite 3E sozinho por 240 quadros. Não acontece jogando normalmente.

Flame Mammoth: um objeto da luta

Um objeto que o Flame Mammoth cria na luta tem esta animação, mas o jogo nunca a usa: o código desse objeto só pede outras quatro animações, nunca esta.

GIF forçado: Objeto da luta do Flame Mammoth, a animação que o jogo nunca usa.
Situação forçada no emulador: escrevemos na memória o começo desta animação, do jeito que o próprio jogo faria; o jogo a tocou sozinho por 240 quadros. Não acontece jogando normalmente. Objeto da luta do Flame Mammoth: a animação que o jogo nunca usa. Abrir o GIF · Imagem parada
Detalhes técnicos

Prova (knowledge_base/mmx1/rom/boss_unrequested_cells_2026-10-11_h29.json, prova fm-1428-21-calls, linha boss.flame-mammoth.presentation; como está no KB, em inglês): animation [17]: child 1428:21 (main 87:86E2) calls 84:8F07 only at 87:874F (A = 14), 87:8777 (A = 15), 87:87FE (A = 2, after 87:87FC LDA #02) and 87:884E (A = 0, after 87:884C), the last two in its data-marked states decoded from bytes (87:87D3, 87:8817; 87:885A has none); the routines they call (84:8EEA, 84:91BE, 84:9B03, 82:83A3, 82:80B4, 87:8881) call 84:8F07 at no site

w7_forced_flame-mammoth_1428-21_06_17.gif (com w7_forced_flame-mammoth_1428-21_06_17.png): objeto 1428:21 (OID 21), sprite 06, animação 17; 124 quadros no GIF de 256 × 224, mostrado em 2x sem suavização; SHA-256 do GIF 934f663f893b92133eb8e2976d00a7b33e698cd2de566ffc714e88a12c0f9180. Gravação flame-mammoth, savestate no quadro 25611; escrita no quadro 25619 em 84:8F51 (RTL of the owner's own 84:8F07 call), slot 1428: 7E:143C/143D = 46 A7, +13 = 01, +0F = 00, +17 = BC, 7E:000E = 11 (a rotina tinha gravado +13 06 +14 A72F +0F 00 +17 B6). Fontes: H29; prova: fm-1428-21-calls. Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:143C/143D = 46 A7, +13 = 01, +0F = 00, +17 = BC, 7E:000E = 11 (o início da animação 17 do sprite 06, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 17 do sprite 06 sozinho por 240 quadros. Não acontece jogando normalmente.

Detalhes técnicos

Provas: H26 (build/H26/callers.json, result-notes.md) para Launch Octopus, Sting Chameleon, Storm Eagle e Sigma, contadas pela R125 no KB knowledge_base/mmx1/rom/boss_unrequested_animation_cells_2026-10-11_r125.json; H28 para o Armored Armadillo (KB knowledge_base/mmx1/rom/boss_unrequested_child_cells_2026-10-11_h28.json); H29 para o Boomer Kuwanger 117:22 e o objeto 1428:21 do Flame Mammoth (KB knowledge_base/mmx1/rom/boss_unrequested_cells_2026-10-11_h29.json). Os cartões H26 a H29 escrevem o sprite em decimal e os arquivos da W7 em hexadecimal: 117 = $75, 118 = $76, 35 = $23, 99 = $63, 137 = $89, 62 = $3E.

O rótulo visível de cada GIF diz que é forçado e o que o jogo fez sozinho; os bytes que escrevemos, com os endereços, estão abaixo, em cada parte, no rótulo exato da W7.

Fonte: build/W7/manifest.json do jogo (cartão W7-forced-gifs-impossible-animations, 2026-10-11), importado do commit a57a6ea1b por tools/render_wiki.py --import-forced (data/wiki-forced-animations.json): 37 GIFs de animações de chefe em 7 partes, 73 arquivos nesta parte, cada um conferido pelo SHA-256 e pelo tamanho do manifesto e copiado byte a byte; 1 GIF acima de 1 MB ficou fora (w7_forced_storm-eagle_52_89_2.gif). Formato, como está no manifesto: GIF 256x224 (rows 7..230), nearest, 30 fps, palettegen diff / paletteuse no dither; PNG still 256x224. Emulador: headless Mesen (--testrunner via tools/oracle/run_mesen.py, --disable-frame-skipping), one at a time, below normal; raw frames on S:/mmx-captures/W7, deleted after each GIF. Contagem do manifesto: {"items": 116, "done": 38, "not_done": 79}; 79 itens sem GIF, listados abaixo.

Conferência do método (check_seen_animation): numa animação que o jogo usa (OID 05, sprite 75, animação 24, gravação boomer-kuwanger), a versão forçada e a gravação sem nada forçado deram 248 de 248 quadros iguais pixel a pixel (quadros 18339 a 18586). Como está no manifesto (em inglês): seen animation: BK (OID 05) sprite 75, its own call with A = 18 (k 24) at f18346; run B set A's low byte to 00 at 84:8F07, then wrote k 24's bytes at 84:8F51; compared with the unforced run Rótulo da W7, exato: Situação forçada no emulador: escrevemos 7E:0E7C/0E7D = 47 D4, +13 = 16, +0F = 00, +17 = 80, 7E:000E = 18 (o início da animação 24 do sprite 75, como 84:8F07 grava), logo depois de uma chamada do próprio chefe; o jogo tocou a animação 24 do sprite 75 sozinho por 240 quadros. Não acontece jogando normalmente.

GIF forçado de conferência: Boomer Kuwanger numa animação que o jogo usa.
Situação forçada no emulador, para conferir o método: a animação forçada saiu igual à do jogo normal. Boomer Kuwanger: uma animação que o jogo usa, forçada para conferir o método. Abrir o GIF · Imagem parada

Sem GIF: thunder-slimer, 36 (03_01_0, 03_01_1, 03_01_2, 03_01_3, 03_02_0, 03_02_1, 03_02_10, 03_02_11, 03_02_12, 03_02_13, 03_02_2, 03_02_3, 03_02_4, 03_02_5, 03_02_6, 03_02_7, 03_02_8, 03_02_9, 03_04_0, 03_04_1, 03_1E_0, 03_1E_1, 03_20_0, 03_20_1, 03_20_10, 03_20_11, 03_20_12, 03_20_2, 03_20_3, 03_20_4, 03_20_5, 03_20_6, 03_20_7, 03_20_8, 03_20_9, 03_3C_0). Motivo da W7, como está no manifesto (em inglês): no call of 84:8F07 by this owner with this sprite in the take (b15-thunder-slimer-03-0-normal-hunt), so nothing to replace

Sem GIF: lo-midboss-0x21, 25 (21_10_0, 21_10_1, 21_10_10, 21_10_11, 21_10_12, 21_10_13, 21_10_14, 21_10_15, 21_10_2, 21_10_3, 21_10_4, 21_10_5, 21_10_6, 21_10_7, 21_10_8, 21_10_9, 21_14_0, 21_14_1, 21_14_2, 21_14_3, 21_14_4, 21_78_0, 21_78_1, 21_78_2, 21_78_3). Motivo da W7, como está no manifesto (em inglês): no call of 84:8F07 by this owner with this sprite in the take (b15-lo-midboss-0x21-21-1-normal-hunt), so nothing to replace

Sem GIF: armored-armadillo, 1 (1928-02_08_5). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: armored-armadillo, 1 (1928-22_17_0). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:22); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: sting-chameleon, 1 (1928-02_08_5). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: storm-eagle, 1 (1928-02_08_5). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: storm-eagle, 1 (1928-29_17_0). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:29); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: vile-intro, 3 (0E68-3C_7A_2, 0E68-3C_7A_6, 0E68-3C_7A_7). Motivo da W7, como está no manifesto (em inglês): no run in this session's budget (no take with the owner live was chosen)

Sem GIF: boomer-kuwanger, 1 (1928-02_08_5). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: flame-mammoth, 1 (1928-02_08_5). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: highway-giant-bee, 2 (1928-22_17_3, 1928-22_17_4). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:22); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: rangda-bangda, 2 (1928-3B_9B_7, 1928-3B_9B_8). Motivo da W7, como está no manifesto (em inglês): its first record has timer 1 and the spawn frame steps past it (H28 proof init-step-1928:3B, despawn-1928:3B); a start written the way 84:8F07 writes it is stepped past the same way

Sem GIF: armadillo-digging-machines, 1 (1928-02_08_5). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: chill-penguin, 1 (1928-02_08_5). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: spark-mandrill, 1 (1928-02_08_5). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Sem GIF: submarine, 1 (1928-0C_1A_0). Motivo da W7, como está no manifesto (em inglês): its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:0C); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Código esquecido no X1

O cartucho guarda dois geradores de inimigos que nenhuma fase usa. Um gerador é uma peça da fase que cria inimigos sozinha, de tempos em tempos.

O primeiro, enquanto o X estivesse perto dele, faria nascer de tempos em tempos um inimigo um pouco à esquerda ou à direita do X. O segundo faria entrar um inimigo pela borda esquerda ou pela borda direita da tela.

Nenhuma das 13 fases do jogo coloca esses geradores, e os quatro pontos do código que criam peças desse tipo durante a partida nunca criam um deles. Por isso eles nunca aparecem jogando.

Também procuramos nas 3412 cópias da memória do jogo que o projeto já guardou, e nenhuma mostra um deles funcionando. Essas cópias não foram feitas para cobrir todas as fases, então elas só reforçam o que as listas das fases já mostram.

Detalhes técnicos

Fonte: knowledge_base/mmx1/rom/finder2_emitters_06_07_2026-10-10_u2.json do repositório do jogo (card U2, 2026-10-10), lido direto da ROM. Os dois geradores são as entradas 6 e 7 da tabela PTR16_80F59A, chamadas pela fila de objetos $1D08..$1DF8 (passo $10) em 80:D39B: a entrada 6 vai para 80:F5FE, que chama 81:FCED, e a entrada 7 vai para 80:F603, que chama 81:FD7C.

81:FCED cria o objeto 0x07 e 81:FD7C cria o objeto 0x02. 0x07 e 0x02 são os números internos de objeto do jogo, não nomes; no censo do projeto (docs/rom/census.md) essas linhas se chamam planty e chillPingu.

81:FCED: enquanto a distância entre o gerador e o X é menor que $80 na horizontal e na vertical, um contador desce a cada chamada; em zero, nasce um inimigo em x = ((x do X ± r) & $FFF0) + 8, com r = sorteio & $7F, na altura do gerador, e o contador volta a $78 (120 chamadas). 81:FD7C usa o mesmo teste de distância (81:FDD0) e faz nascer em x = alvo x da câmera + (sorteio & $0100), isto é, na borda esquerda ou 256 pixels à direita dela, e y = alvo y da câmera + $20, com parâmetro $40 à esquerda e $00 à direita; o contador volta a $5A (90 chamadas). Os dois somem quando saem da área da câmera (82:806E). As contas são em chamadas da rotina; quantas vezes ela roda por quadro não foi medido.

Verificação: 0 dos 417 registros desse tipo nas 13 listas de fase usam o índice 6 ou 7; as 4 chamadas de 82:8307 na ROM escrevem 0x12, 0x10, 0x11 e 0x1B; nenhuma das 3412 capturas de WRAM em disco tem um gerador 6 ou 7 ativo. Limite: as capturas são as que cards anteriores salvaram, não uma varredura de todas as fases.

Músicas e efeitos sonoros

Músicas da escolha de chefes e do final

As três tocam no jogo normal, então não são mais curiosidade: duas na tela de escolha dos chefes e uma no final.

  • Música da tela de escolha dos chefes

    Toca na tela em que você escolhe qual chefe enfrentar.

  • Música da tela de escolha dos chefes quando só resta o Sigma

    Quando os oito chefes já foram vencidos e só resta a fortaleza do Sigma, a mesma tela toca esta outra música.

  • Música do final

    Toca no final do jogo, depois que o Sigma é derrotado.

Efeitos sonoros

só-não-visto

O jogo tem uma lista de 162 efeitos sonoros, e o teste de som toca todos. Durante a partida, nenhum ponto do código chama 44 deles por um número fixo. A contagem examinou 391 pontos do código que tocam um efeito; em 18 deles, o número do efeito vem de um valor guardado na memória, e não de um número fixo. O jogo também pede dois números de efeito que ficam fora da lista.

Cada efeito abaixo foi gravado no teste de som do jogo. São 15 sons diferentes e, no fim, um único botão para os outros 29, que soam iguais ou quase iguais; os números desses 29 estão em Detalhes técnicos.

  • Efeito sonoro $04

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $16

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $24

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $32

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $3A

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $54

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $5C

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $71

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $7A

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $7B

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $81

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $82

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $83

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $84

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Efeito sonoro $A0

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som.

  • Os outros 29 efeitos (um único som)

    Gravado no teste de som do próprio jogo (menu Opções). Durante a partida, nenhum código toca esse som. Este único botão vale para os 29 efeitos que soam iguais ou quase iguais.

Dois efeitos fora da lista do teste

só-não-visto

O teste de som só vai até o efeito $A2, mas o jogo usa mais dois: o $AE toca quando o X conversa com o Dr. Light dentro da cápsula, e o $AF toca quando o X solta o Hadouken. Como o teste nunca os toca, escrevemos o número direto na memória do jogo para poder gravá-los.

  • Efeito sonoro $AE: conversa com o Dr. Light na cápsula

    É o som que toca quando o X está dentro de uma cápsula e conversa com o Dr. Light, antes de receber a peça nova (pernas, capacete, armadura ou braço) ou o Hadouken.

    Situação forçada no emulador: não acontece jogando normalmente

  • Efeito sonoro $AF: Hadouken

    É o som do Hadouken: toca no instante em que o X solta a bola de fogo.

    Situação forçada no emulador: não acontece jogando normalmente

Detalhes técnicos

$20 e $29: a tela de escolha dos chefes é montada pela rotina 80:BCE1. Em 80:BD47 ela carrega $20; se w_1e66 (7E:1E66) não for zero, troca para $29 (80:BD4E) e pede a música com JSL 80:87A2 em 80:BD50.

Testemunha de $20: gravação chill-penguin-new-game, quadro 20226, A = $20, w_1e66 = 0, chamada de 80:BD50 dentro de 80:BCE1. Núcleo gerado, sem emulador; a WRAM é igual à captura do Mesen em todos os quadros de 10383 a 20239.

Testemunha de $29: gravação armored-armadillo, quadro 14454, A = $29, w_1e66 = 1, mesma chamada de 80:BD50. WRAM igual à do Mesen de 13729 a 14462 (antes disso, só o byte de pilha 7E:02FD difere em 8 quadros).

$2D: ao carregar a fase, 80:9A0D lê w_endingRoll (7E:1F7F); se não for zero, 80:9A25 carrega $2D e 80:9A2D salta para 80:87B0, a mesma rotina que 80:87A2 chama. Na gravação sigma-final-win, w_endingRoll vira 1 no quadro 23001 e o byte de música 7E:FFFD vira $2D no quadro 23104 (captura do Mesen). O núcleo gerado ainda não tem ponto de partida nessa gravação.

Os efeitos ficam numa lista de 162 ponteiros, e o teste de S.E. (80:EC65) toca $01-$A2. Na jogabilidade, 44 não têm referência estática: 04 0B 12 14-16 24 32 3A 54 5C 69-6F 71 7A 7B 7F 81-84 8B-92 97-A0 (391 chamadas, 18 com id vindo da RAM). O jogo também envia $AE e $AF.

Os arquivos vêm de build/W3 (manifest.json, cartão W3-wiki-sounds-and-images): WAV de 44100 Hz, 16 bits, estéreo, sem ajuste de ganho, gravados pelo host WaveRecord do Mesen, e convertidos em OGG Vorbis q5; só os OGG foram copiados para o site. O teste de som foi acionado com os botões do próprio menu de opções: a música com o índice em 7E:FFC8 (id = índice + $10, 80:EC51) e o efeito com o índice em 7E:FFC9 (80:ECA5). O manifesto diz que o programa não ouviu os sons e os descreve só por medidas (pico, RMS, duração, frequência dominante).

Os 15 efeitos diferentes, cada um com o seu arquivo sfx_XX.ogg: $04 $16 $24 $32 $3A $54 $5C $71 $7A $7B $81 $82 $83 $84 $A0.

O botão único dos 29 efeitos toca sfx_12.ogg. Pelo campo same_audio_as do manifesto (correlação normalizada dos primeiros 0,3 s de pelo menos 0,999 e duração com diferença de até 10 ms), os 29 formam dois grupos de áudio igual: $12 $14 $69 $6A $6B $6C $6D $6E $6F $7F $8B $8C $8D $8E $8F $90 $91 $97 $98 $99 $9A $9B $9C $9E $9F (25) e $0B $15 $92 $9D (4). Os dois grupos têm a mesma duração, 0,488 s, e picos de -16,5 e -16,4 dBFS, mas o manifesto não os junta em um grupo só.

Chamador dos 44 efeitos, como escrito no manifesto: Nenhum chamador achado na jogabilidade. Só o teste de S.E. do modo de opções (80:EC65..80:ECB1), que toca qualquer id de $01 a $A2, envia este som; foi por ele que gravamos.

Chamador do $AE, como escrito no manifesto: O jogo envia $AE em 88:A875/88:A877 (LDA #$AE; JSL lunchWeaponSFX), num objeto, quando w_1f3c não é zero; a situação em jogo não foi traçada. O teste de S.E. só vai até $A2. O manifesto marca a gravação do $AE (6,995 s) como cortada pelo som seguinte (cut_by_next). Quem identificou o som foi o David (10/10/2026), e as gravações verificadas confirmam: o $AE é pedido 5 vezes, sempre durante a conversa numa cápsula, uma em cada gravação de cápsula, e não toca em outro momento das 22 gravações lidas. Fontes: sound_ids_david_2026-10-10.json e sfx_ae_af_witness_2026-10-10_r112.json.

Chamador do $AF, como escrito no manifesto: O jogo envia $AF em 81:9041/81:9043 (LDA #$AF; JSL lunchWeaponSFX), na rotina 81:902F, depois de setSpriteAnim $50, quando $33 é zero; a situação em jogo não foi traçada. O teste de S.E. só vai até $A2. Quem identificou o som foi o David (10/10/2026), e as gravações verificadas confirmam: o $AF é pedido 23 vezes, sempre 17 quadros depois que o X começa o Hadouken, e não toca em outro momento das 22 gravações lidas. Fontes: sound_ids_david_2026-10-10.json e sfx_ae_af_witness_2026-10-10_r112.json.

Chamador do $20, do $29 e do $2D, como escrito no manifesto: 80:BD47 escolhe $20 (ou $29 se w_1e66 não é zero) e a toca por 80:87A2, chamada em 80:BD50; a tela de 80:BCE1 não foi traçada. / 80:BD47 escolhe $29 quando w_1e66 não é zero (senão $20) e a toca por 80:87A2, chamada em 80:BD50; a tela de 80:BCE1 não foi traçada. / Música do final: levelLoadStuff 80:9A25 a toca com w_endingRoll ligado.

Textos

O cartucho guarda os textos em letras comuns, que podem ser lidas direto, sem uma tabela para converter códigos em letras.

Diálogos

São 35 diálogos, e todos são usados. Falas que pareciam não ter uso, como “X, do what I tell you” e “I'm a Reploid!”, são chamadas em dois pontos do código do jogo.

Menus

só-não-visto

A tabela de menus do cartucho tem 117 itens. Nenhum ponto do código chama diretamente estes itens: START DEMO, 01234567, CONGRATULATIONS!, os textos de teste dos programadores SET CODE, SEQ NO., CHR COUNT, CHR TYPE, CHR CODE, OBJCOLOR, DX DY e LX LY, uma segunda cópia de cada texto da tela de opções (provavelmente para um cursor cuja posição é calculada na hora; isso ainda não foi conferido) e caixas feitas de blocos gráficos. Já COMING SOON e PAL WARNING são chamados pelo código.

Para ver como ficam, fizemos o jogo desenhar cinco desses textos na tela de opções (OPTION MODE). No emulador, trocamos o texto do destaque da linha seguinte pelo texto sem uso; a partir daí é o código do jogo que o desenha, com a posição e as cores que o próprio texto guarda. Por isso nenhuma linha aparece destacada.

A tela de opções do jogo (OPTION MODE) com o texto sem uso “START DEMO” desenhado sobre ela.
Situação forçada no emulador: não acontece jogando normalmente O texto sem uso “START DEMO”, desenhado pelo próprio jogo sobre a tela de opções. Abrir em tamanho real
A tela de opções do jogo (OPTION MODE) com o texto sem uso “01234567” desenhado sobre ela.
Situação forçada no emulador: não acontece jogando normalmente O texto sem uso “01234567”, desenhado pelo próprio jogo sobre a tela de opções. Abrir em tamanho real
A tela de opções do jogo (OPTION MODE) com o texto sem uso “CONGRATULATIONS!” desenhado sobre ela.
Situação forçada no emulador: não acontece jogando normalmente O texto sem uso “CONGRATULATIONS!”, desenhado pelo próprio jogo sobre a tela de opções. Abrir em tamanho real
A tela de opções do jogo (OPTION MODE) com os quatro textos de teste dos programadores “SET CODE”, “SEQ NO.”, “CHR COUNT” e “CHR TYPE” desenhados sobre ela.
Situação forçada no emulador: não acontece jogando normalmente Os quatro textos de teste dos programadores “SET CODE”, “SEQ NO.”, “CHR COUNT” e “CHR TYPE”, desenhados juntos pelo jogo sobre a tela de opções. Abrir em tamanho real
A tela de opções do jogo (OPTION MODE) com os quatro textos de teste dos programadores “CHR CODE”, “OBJCOLOR”, “DX DY” e “LX LY” desenhados sobre ela.
Situação forçada no emulador: não acontece jogando normalmente Os quatro textos de teste dos programadores “CHR CODE”, “OBJCOLOR”, “DX DY” e “LX LY”, desenhados juntos pelo jogo sobre a tela de opções. Abrir em tamanho real

A ficha dos chefes

Na tela de escolha de fase, a ficha de cada chefe mostra nome, altura, peso e ataques. O cartucho escreve HORMING TORPEDO, com um R a mais.

Textos da ferramenta de mapa

Os textos que a ferramenta escondida de mapa mostra na tela só são lidos por ela.

Detalhes técnicos

O texto está em ASCII no ROM (por exemplo, LAUNCH em 86:9C27); os bytes de $80 para cima são controles e não foram decodificados. Os diálogos ficam na tabela 84:C890 (35, todos referenciados) e são lidos por 80:E6C6. Os ids chegam por imediato nas chamadas de 80:E9D8, pelo valor em $0008 nas 13 chamadas do criador da caixa de diálogo 83:F74A (objeto $2A) ou pela tabela das cápsulas 86:D4E3. As falas $11 e $1E vêm de 83:E919 e 88:CE58.

Os menus ficam na tabela 86:910B (117 entradas) e são desenhados por 80:89E1. Não têm referência estática: $02, $08, $09, $13-$14, $1E $22 $24 $26 $28 $2A $2C $2E e $2F-$34. COMING SOON ($03) e PAL WARNING ($15-$16) têm chamadas. A ficha dos chefes fica em 86:9C17 e é lida em 80:C273. Os rótulos de debug ficam em 86:A568.

As cinco imagens vêm de build/W3/img (menu_text_02, 08, 09, 13 e 14, do quadro 1791; os arquivos _before ficam de fora), de 256x224, ampliadas 2×. Em cada uma, no quadro 1779, em 80:89F3 (a rotina de texto 80:89E1), o ponteiro 7E:0010-0011 trocou 958F (a chamada que desenharia o texto $1E) pelo da entrada pedida, lida da tabela 86:910B: $02 = 921A, $08 = 92CE, $09 = 92DB, $13 = 93CD, $14 = 9416. Nenhuma dessas entradas tem chamada estática de 80:89E1.

O que ainda falta no X1

O checklist do X1 ainda não está completo. Aqui estão as partes que faltam e que já tiveram pelo menos uma tentativa registrada de encontrar, cada uma com o que já se sabe e, quando dá, uma imagem ou um vídeo. No fim ficam os casos que agora contam como impossíveis, cada um com o que seria preciso para ele acontecer e, quando dá, como ele ficaria.

Cada imagem diz de onde veio. “Gravação” é uma partida normal gravada, sem mexer em nada. “Mapa feito com os dados do cartucho” é um desenho da fase montado com os dados do próprio jogo. “Situação forçada no emulador” é um vídeo em que mudamos um valor do jogo, como o lugar da câmera, coisa que não acontece jogando normalmente; o rótulo diz o que mudamos.

Ainda dá para caçar

Estas 22 partes também já tiveram uma tentativa, mas ainda têm um caminho para tentar: uma gravação nova, uma busca diferente ou uma leitura do código do jogo.

O som de cancelar a carga das 8 armas especiais

Quando o X perde uma carga, o jogo toca um som próprio. Para as armas especiais esse som já foi visto em 9 situações. Falta um caso: segurar a carga de uma arma especial e entrar numa armadura, ou esperar a contagem do fim de uma luta de chefe. Ainda não há gravação assim.

Sem imagem. É um som, e uma imagem não mostra um som. A situação que falta ainda não existe em nenhuma gravação.

Detalhes técnicos

Som $17. A29, E44 (18 caçadas paradas), R62 (9 pares vistos; caso C). Fora do Sigma.

Lista R115 (build/R115/candidates.md), item 13 de “ainda dá para caçar”; vale 10 bp no checklist do X1.

Vile da introdução: perder para ele e voltar

Na estrada da introdução, a luta contra o Vile termina sempre do mesmo jeito. Faltam duas coisas: a passagem depois da derrota e o X morrer nessa luta e voltar. Uma busca de 12000 quadros não conseguiu fazer o X morrer ali. O próximo passo é ler no código do jogo se o X pode morrer nessa luta.

O Vile na armadura roxa, na estrada da introdução, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. O Vile na armadura roxa, na estrada da introdução, numa gravação. Abrir em tamanho real
Detalhes técnicos

B22 (sem morte em 12000 quadros), R68.

Lista R115 (build/R115/candidates.md), item 5 de “ainda dá para caçar”; vale 9 bp no checklist do X1.

wk15_rec_intro_vile.png: gravação intro-highway, quadro 10800 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Guardião e Mole Borer: o que vem depois da derrota

Quando um chefe é destruído, o jogo passa o controle para outra parte do código. Para o Guardião da cápsula e para a máquina de escavar Mole Borer, essa passagem ainda não foi vista. Também falta um caminho próprio do Mole Borer. Duas buscas pararam sem resultado; ainda não há argumento de que seja impossível.

A máquina de escavar Mole Borer, cheia de espinhos, na fase do Armored Armadillo, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. A máquina de escavar Mole Borer, cheia de espinhos, na fase do Armored Armadillo, numa gravação. Abrir em tamanho real
Detalhes técnicos

B33 (2 caçadas paradas), B22. Regra do próximo dono não citada; estado 08 do Mole Borer.

Lista R115 (build/R115/candidates.md), item 6 de “ainda dá para caçar”; vale 7 bp no checklist do X1.

wk15_rec_guardian_mole_borer_handover.png: gravação armored-armadillo, quadro 3000 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Mid-chefe do Launch Octopus: morrer e voltar

Esse item é o X morrer na luta contra o mid-chefe da fase do Launch Octopus e voltar ao ponto de retorno. Já existe uma gravação montada com a morte, a volta e o chefe restaurado. A conferência dela falhou num trecho que veio da gravação de origem. Um problema parecido já foi corrigido antes, então vale conferir de novo.

O mid-chefe da fase do Launch Octopus, debaixo d'água, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. O mid-chefe da fase do Launch Octopus, debaixo d'água, numa gravação. Abrir em tamanho real
Detalhes técnicos

B26 (filme b26-lo21-loss-retry; falha no quadro 3487; mesma origem da R82, quadro 3493; H23). Chefe lo-midboss-0x21.

Lista R115 (build/R115/candidates.md), item 1 de “ainda dá para caçar”; vale 5 bp no checklist do X1.

wk15_rec_lo_midboss_retry.png: gravação launch-octopus-and-sting-flooded, quadro 3635 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Jogador: todos os tipos de chão

Esse item é fechar a lista de como o X reage a cada tipo de chão: água, lava, esteira e o resto. Não falta um evento raro; falta terminar uma lista grande.

Sem imagem. Não é uma cena só: é terminar uma lista grande de tipos de chão, e nenhuma imagem mostra isso.

Detalhes técnicos

s38-probe-scope. P53, P54, P56.

Lista R115 (build/R115/candidates.md), item 18 de “ainda dá para caçar”; vale 5 bp no checklist do X1.

Guardião da cápsula: escolhas que faltam

O Guardião da cápsula tem algumas escolhas de movimento que ainda não apareceram em gravações. Não há argumento no código do jogo contra elas. Uma delas nunca foi procurada. O próximo passo é ler os dados de animação e de toque e procurar em mais gravações.

O Guardião da cápsula, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. O Guardião da cápsula, numa gravação. Abrir em tamanho real
Detalhes técnicos

Escolhas 81CCF3:1, 81CD44:5, 81CED1:17 e estado 16. B23, R105 (3 gravações).

Lista R115 (build/R115/candidates.md), item 11 de “ainda dá para caçar”; vale 4 bp no checklist do X1.

wk15_rec_guardian_choices.png: gravação sting-chameleon, quadro 10200 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Jogador: catálogo de animações e cores

Esse item é fechar o catálogo de todas as animações e cores do X. Não falta um evento raro; falta terminar um catálogo.

Sem imagem. Não é uma cena só: é terminar um catálogo de animações e cores, e nenhuma imagem mostra isso.

Detalhes técnicos

P53 (busca parada), P57A.

Lista R115 (build/R115/candidates.md), item 19 de “ainda dá para caçar”; vale 4 bp no checklist do X1.

Vile da fortaleza: escolhas e um ataque

Na fortaleza do Sigma, o Vile ainda tem algumas escolhas e um ataque que não apareceram do jeito certo. Vários foram alcançados, mas por outro caminho do código. Já existe uma lista do que uma gravação nova precisaria mostrar.

O Vile na fortaleza do Sigma, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. O Vile na fortaleza do Sigma, numa gravação. Abrir em tamanho real
Detalhes técnicos

Ataque 1. R26, R27, R105, R107.

Lista R115 (build/R115/candidates.md), item 12 de “ainda dá para caçar”; vale 3 bp no checklist do X1.

wk15_rec_fortress_vile_choices.png: gravação b8-vile-fortress-0x67-weapon-c-sting-normal-shots-08-hunt, quadro 8019 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Chill Penguin: um tipo de chão que ninguém pisou

Na fase do Chill Penguin existe um tipo de chão que nenhuma gravação tocou. Uma análise achou um caminho possível: andar no trenó de gelo do Shotgun Ice carregado e pular dele. A margem desse caminho é de 0 pixel até o pilar. A busca com essa rota ainda não foi rodada.

Em amarelo, os blocos desse tipo de chão nesta parte da fase.
Mapa feito com os dados do cartucho. Em amarelo, os blocos desse tipo de chão nesta parte da fase. Abrir em tamanho real
Detalhes técnicos

Terreno $36: 106 células (attrs[tile] da camada main; a KB stage_terrain_transitions_2026-09-26 também dá 106 e o alvo (7512, 296)). S53, S61, S65.

Lista R115 (build/R115/candidates.md), item 15 de “ainda dá para caçar”; vale 3 bp no checklist do X1.

wk15_map_cp_terrain36.png: janela x 7096, y 0, 768 × 448 pixels, desenhada da camada main de content/x1/stages/tiles em escala 1, ampliado 2x no site.

Sigma 3: o morcego da posição 20

Este morcego aparece sim: ele fica 53 quadros na tela numa gravação verificada da Sigma 3 (e em 19 gravações verificadas ao todo). Uma contagem antiga tinha juntado ele com o morcego anterior da mesma vaga, por isso parecia que ninguém tinha visto. Mesmo contando ele, a etapa do morcego ainda não fecha: faltam os dois do Armored Armadillo, que o jogo nunca faz nascer.

Onde fica o morcego da posição 20, bem perto de onde o X passa.
Mapa feito com os dados do cartucho. Onde fica o morcego da posição 20, bem perto de onde o X passa. Círculo vermelho: onde o inimigo nasceria. Quadrado azul: o ponto mais perto a que o X chegou numa gravação. Abrir em tamanho real
Detalhes técnicos

Posição 20, OID 0x2D, (710, 343), registro $FA66 ($FA02 + 5 i). E41, T1B (parou a 40 px). Caso E40: take sigma3, X mais perto no quadro 4126 em (682, 366), 28 px. Conferido em 2026-10-10 (cards R116 e R117): placement 20 (OID 2D, registro FA66), quadros 3705-3757 de sigma3_2_26312; a contagem E40 encerrava a sequência só quando a vaga esvaziava.

Lista R115 (build/R115/candidates.md), item 20 de “ainda dá para caçar”; vale 3 bp no checklist do X1.

wk15_map_s3_20.png: janela x 518, y 199, 384 × 288 pixels, desenhada da camada main de content/x1/stages/tiles em escala 2; inimigo em [710, 343], X mais perto em [682, 366].

Submarino: morrer e voltar

Esse item é o X morrer na luta contra o submarino da fase do Launch Octopus e voltar. Três tentativas de repetir os botões da gravação de origem desviaram logo. A próxima ideia é montar a volta com uma luta de verdade contra o mid-chefe no caminho.

O X em cima do submarino, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. O X em cima do submarino, numa gravação. Abrir em tamanho real
Detalhes técnicos

B26 (3 falhas).

Lista R115 (build/R115/candidates.md), item 2 de “ainda dá para caçar”; vale 2 bp no checklist do X1.

wk15_rec_submarine_retry.png: gravação launch-octopus-and-sting-flooded, quadro 8570 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Thunder Slimer: morrer e voltar

Esse item é o X morrer na luta contra o Thunder Slimer, na fase do Spark Mandrill, e voltar. Morrer para um chefe é uma coisa normal do jogo. A busca anterior parou sem resultado; falta tentar com uma estratégia nova.

O Thunder Slimer, a bolha azul, na sala dele, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. O Thunder Slimer, a bolha azul, na sala dele, numa gravação. Abrir em tamanho real
Detalhes técnicos

B22 (busca parada a 2669; nova estratégia pede aprovação).

Lista R115 (build/R115/candidates.md), item 4 de “ainda dá para caçar”; vale 2 bp no checklist do X1.

wk15_rec_thunder_slimer_retry.png: gravação spark-mandrill-death-branch, quadro 4899 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Abelha da estrada: o filho que ela cria

A abelha gigante da estrada da introdução cria outros objetos durante a luta. Um desses filhos ainda não foi visto. O próximo passo é ler no código do jogo de onde sai esse filho.

A abelha gigante da estrada da introdução, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. A abelha gigante da estrada da introdução, numa gravação. Abrir em tamanho real
Detalhes técnicos

Filho criado em 82BC08. R102 (153 chamadas, 0 boas).

Lista R115 (build/R115/candidates.md), item 8 de “ainda dá para caçar”; vale 2 bp no checklist do X1.

wk15_rec_road_bee_child.png: gravação intro-highway, quadro 4200 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Spark Mandrill: reação a tiro carregado

Falta ver uma reação do Spark Mandrill a um tiro carregado. Seis buscas chegaram a poucos pixels do ponto certo. Falta um ponto de partida conferido para tentar outras sementes do sorteio.

O Spark Mandrill na revanche dentro da fortaleza do Sigma, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. O Spark Mandrill na revanche dentro da fortaleza do Sigma, numa gravação. Abrir em tamanho real
Detalhes técnicos

B34 (6 caçadas, 2-14 px); método 1+.

Lista R115 (build/R115/candidates.md), item 9 de “ainda dá para caçar”; vale 2 bp no checklist do X1.

wk15_rec_sm_charged_reaction.png: gravação sigma3-cs-death-weapons-branch, quadro 8387 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Música do começo da introdução

Uma música começa a tocar no primeiro quadro da introdução. Como ela começa antes de qualquer gravação começar a medir, o envio dela nunca foi registrado. Falta uma captura que comece mais cedo.

Sem imagem. É uma música, e uma imagem não mostra o momento em que ela é enviada.

Detalhes técnicos

Música 86:807B (bloco 10). R41 (todas as gravações).

Lista R115 (build/R115/candidates.md), item 17 de “ainda dá para caçar”; vale 2 bp no checklist do X1.

Sting Chameleon: o inimigo da posição 47

Na fase do Sting Chameleon, a lista guarda um inimigo num lugar que nenhuma gravação mostrou com ele na tela. Só uma busca foi feita. A próxima ideia é tentar com outra gravação de partida.

Onde fica o inimigo da posição 47, bem perto de onde o X passa.
Mapa feito com os dados do cartucho. Onde fica o inimigo da posição 47, bem perto de onde o X passa. Círculo vermelho: onde o inimigo nasceria. Quadrado azul: o ponto mais perto a que o X chegou numa gravação. Abrir em tamanho real
Detalhes técnicos

Posição 47, OID 0x2F, (4739, 432), registro $FAED ($FA02 + 5 i). E41 (parada). Caso E40: take sting-chameleon, X mais perto no quadro 15296 em (4754, 414), 18 px.

Lista R115 (build/R115/candidates.md), item 21 de “ainda dá para caçar”; vale 2 bp no checklist do X1.

wk15_map_sc_47.png: janela x 4547, y 288, 384 × 288 pixels, desenhada da camada main de content/x1/stages/tiles em escala 2; inimigo em [4739, 432], X mais perto em [4754, 414].

Utuboros: morrer e voltar

Esse item é o X morrer na luta contra a serpente Utuboros, na fase do Launch Octopus, e voltar. Três tentativas de repetir os botões da gravação de origem desviaram logo. A próxima ideia é a mesma do submarino.

A serpente Utuboros, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. A serpente Utuboros, numa gravação. Abrir em tamanho real
Detalhes técnicos

B26 (3 falhas).

Lista R115 (build/R115/candidates.md), item 3 de “ainda dá para caçar”; vale 1 bp no checklist do X1.

wk15_rec_utuboros_retry.png: gravação launch-octopus-and-sting-flooded, quadro 10492 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Abelha da estrada: uma escolha que falta

A abelha gigante da estrada tem uma escolha que ainda não foi vista. O estado que leva a ela é comum, mas falta destruir a abelha numa janela curta de 60 quadros. A próxima ideia é partir de um quadro conferido nesse estado ou fazer uma busca mirando a abelha.

A abelha gigante da estrada da introdução, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. A abelha gigante da estrada da introdução, numa gravação. Abrir em tamanho real
Detalhes técnicos

Escolha 82BC86:9; estado 0A (7 de 32 na tabela). B23, B32 (512 sementes), R105; método 1+.

Lista R115 (build/R115/candidates.md), item 7 de “ainda dá para caçar”; vale 1 bp no checklist do X1.

wk15_rec_road_bee_choice.png: gravação intro-highway, quadro 4200 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Launch Octopus: uma interrupção

Falta ver o Launch Octopus ser interrompido de um certo jeito durante a luta. Já existe uma gravação que pode conter isso, mas a análise dela ainda não foi rodada para esse caso.

O Launch Octopus na sala dele, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. O Launch Octopus na sala dele, numa gravação. Abrir em tamanho real
Detalhes técnicos

Interrupção 1. B34; gravação b34-lo-c240-hunt, quadros 12780-12900.

Lista R115 (build/R115/candidates.md), item 10 de “ainda dá para caçar”; vale 1 bp no checklist do X1.

wk15_rec_lo_interrupt_1.png: gravação launch-octopus-and-sting-flooded, quadro 20149 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Buster: cancelar a carga durante o tiro

Esse item é um caso do som de cancelar a carga, agora com o buster. As duas gravações montadas caíram em outro caso porque o X saiu do estado de andar antes do tiro. Falta repetir a receita que já funcionou, evitando isso.

Sem imagem. É um som, e uma imagem não mostra um som.

Detalhes técnicos

R84 (2 gravações montadas deram o caso B); receita da R62.

Lista R115 (build/R115/candidates.md), item 14 de “ainda dá para caçar”; vale 1 bp no checklist do X1.

Shotgun Ice: uma figura que falta

Falta ver uma figura de animação do Shotgun Ice. Ela pode vir dos pedaços do trenó de gelo quebrando numa parede. Essa situação nunca foi gravada.

O trenó de gelo do Shotgun Ice carregado, numa gravação; a figura que falta viria dos pedaços dele.
Gravação: jogo normal, sem nenhuma escrita na memória. O trenó de gelo do Shotgun Ice carregado, numa gravação; a figura que falta viria dos pedaços dele. Abrir em tamanho real
Detalhes técnicos

Figura E104. T6, R64, W44; card T6-next-ice-break.

Lista R115 (build/R115/candidates.md), item 16 de “ainda dá para caçar”; vale 1 bp no checklist do X1.

wk15_rec_shotgun_ice_e104.png: gravação b8-vile-fortress-0x67-weapon-s-ice-charged-shots-17-hunt, quadro 9710 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Chill Penguin: o inimigo da posição 67

Na fase do Chill Penguin, a lista guarda um inimigo num lugar que nenhuma gravação mostrou com ele na tela. Uma análise viu o toque desse inimigo, mas não nesse lugar. A próxima ideia é tentar com outra gravação de partida.

  • O inimigo da posição 67 nasce entre os pilares— abrir: ampliar, sem som
    O inimigo da posição 67 nasce entre os pilares

    Situação forçada no emulador: escrevemos só o alvo da câmera para levá-la até lá; o inimigo foi criado pelo próprio jogo, a partir da lista da fase. Não acontece jogando normalmente.

    Levamos a câmera para baixo, até a área escura entre os pilares, e o próprio jogo criou o inimigo dessa posição.

    Baixar GIF
Onde fica o inimigo da posição 67, entre os pilares.
Mapa feito com os dados do cartucho. Onde fica o inimigo da posição 67, entre os pilares. Círculo vermelho: onde o inimigo nasceria. Quadrado azul: o ponto mais perto a que o X chegou numa gravação. Abrir em tamanho real
Detalhes técnicos

Posição 67, (5400, 941), OID 0x3A no caso E40 (linhas enemy.oid_57), registro $FB51 ($FA02 + 5 i). E41, R61. Caso E40: take chill-penguin-new-game, X mais perto no quadro 11684 em (5147, 687), 254 px.

Lista R115 (build/R115/candidates.md), item 22 de “ainda dá para caçar”; vale 1 bp no checklist do X1.

wk15_forced_cp_67.mp4: situação forçada; escrevemos só o alvo da câmera, em 7E:1E4D e 7E:1E50 (o rótulo diz o mesmo sem os endereços). Como está no manifesto (em inglês): 80:E152 (RTS of the camera clamp 80:E0DE..80:E152), every frame of the pan; moved 6 px per frame to the target, held 60 frames, moved back.

wk15_map_cp_67.png: janela x 5208, y 797, 384 × 288 pixels, desenhada da camada main de content/x1/stages/tiles em escala 2; inimigo em [5400, 941], X mais perto em [5147, 687, 'outside the window'].

Impossíveis na pontuação atual

Estas 6 partes contam como impossíveis por decisão do David em 10/10/2026; se alguém achar um jeito de fazer uma delas acontecer, ela passa a ser “fazível” e o site é atualizado.

Sting Chameleon: o movimento que falta

O Sting Chameleon escolhe entre 45 movimentos durante a luta. Já vimos 44 deles em gravações. O que falta exige um valor que o código do próprio chefe nunca grava. Três sessões lendo o código do jogo procuraram outra forma de chegar a esse valor e não acharam nenhuma.

O Sting Chameleon no passo que falta, forçado: ele fica no alto da parede, à esquerda, e depois desce em azul-claro.
Situação forçada no emulador: escrevemos 0A em 7E:0E6B (o passo do Sting Chameleon), no lugar do 04 que o jogo tinha acabado de gravar; o próprio jogo seguiu daí: o chefe ficou no alto da parede por cerca de um segundo, passou para outro passo, desceu todo em azul-claro, voltou à cor normal e pulou pela sala. Não acontece jogando normalmente. O Sting Chameleon no passo que falta, forçado: ele fica no alto da parede, à esquerda, e depois desce em azul-claro. Abrir o GIF · Imagem parada · Vídeo sem som
O Sting Chameleon pendurado no cipó durante a luta, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. O Sting Chameleon pendurado no cipó durante a luta, numa gravação. Abrir em tamanho real
Detalhes técnicos

Parte 0A:choice:22. Escritas do dono 88:8612..86CE; a única escrita +03=0A é 88:88E7 (sai em 88:88FA/88FC). Tabela 84:B8AC: 144 listas limpas, 23 de 43 chamadas de 84:8000/8011 sem limite. B28, B29, B30; KB boss_rom_proofs_2026-10-03_b30.json.

Lista R115 (build/R115/candidates.md), item 1 de “candidato a investigação profunda”; vale 1 bp no checklist do X1.

w5_sc_choice_22.gif (com w5_sc_choice_22.png e w5_sc_choice_22.mp4): situação forçada no Mesen sem tela, sem mudar o cartucho (build/W5); GIF e imagem parada de 512 × 448, já em 2x sem suavização (conferido quadro a quadro), 90 quadros no GIF, copiados byte a byte. Escrita, como está no manifesto (em inglês): rom_point 88:8A39, right after 88:8A37 STA +03 (= 04) in +01 04, +02 04, address 7E:0E6B, byte Sting Chameleon slot 0E68 +03, before 04, value 0A, frame 22723. take: sting-chameleon. frames: first 22694, last 22873, count 180, poster 22748, numbering endFrame count since the savestate load (capture_frames.lua convention, as W2). result: 04/04/0A ran 88:8A44 (table 88:895E entry 5) f22724..22755 (+34 20 -> 01); +03 0C at f22756 (88:8A4E/8A50) and 88:8AC0 f22756..22787; +02 0C, +03 00 read at f22788 (88:8AD3 stores 0A; the 0C writer was not traced); then 04/00/08 at f22831, 04/00/0A at f22861, 04/08/02 at f22873. No control run.. crop: rows 7..230 of 256x239, 2x nearest.

wk15_rec_sc_choice_22.png: gravação sting-chameleon, quadro 20492 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Guardião da cápsula: o 4º jeito de morrer

O Guardião é o robô que protege a cápsula na fase do Sting Chameleon. O código dele tem quatro jeitos de morrer, e três já aparecem em gravações. O quarto seria morrer enquanto segura o X. Esse caminho depende de um valor que o próprio Guardião só deixa em zero, então parece código que nunca roda.

O golpe final no Guardião com o valor forçado: o X pula e o Guardião explode, como numa gravação normal.
Situação forçada no emulador: escrevemos 01 em 7E:0EE0 (uma marca do Guardião) no golpe final; o próprio jogo seguiu o 4º jeito de morrer: mandou soltar o X, que nem estava preso, e o Guardião explodiu como nos outros jeitos; na tela muda só um quadro da pose do X. Não acontece jogando normalmente. O golpe final no Guardião com o valor forçado: o X pula e o Guardião explode, como numa gravação normal. Abrir o GIF · Imagem parada · Vídeo sem som
O Guardião, o robô verde que protege a cápsula, numa gravação.
Gravação: jogo normal, sem nenhuma escrita na memória. O Guardião, o robô verde que protege a cápsula, numa gravação. Abrir em tamanho real
Detalhes técnicos

Parte 09:outro:custom; falta lethal-hit:+38 (81:CC5C/81:CC60, JSL 84:9F7E). +38 só recebe STZ em 81:CC9B e 81:CE98. B33; KBs boss_outro_catalogue_2026-10-03_b33_closure.json, boss_outro_unseen_2026-10-03_b33.json.

Lista R115 (build/R115/candidates.md), item 2 de “candidato a investigação profunda”; vale 2 bp no checklist do X1.

w5_guardian_fourth_death.gif (com w5_guardian_fourth_death.png e w5_guardian_fourth_death.mp4): situação forçada no Mesen sem tela, sem mudar o cartucho (build/W5); GIF e imagem parada de 512 × 448, já em 2x sem suavização (conferido quadro a quadro), 90 quadros no GIF, copiados byte a byte. Escrita, como está no manifesto (em inglês): rom_point 81:CC5C (LDA +38), after 81:CC58 STA +01 (= 0A) on the lethal hit, address 7E:0EE0, byte guardian (OID 09) slot 0EA8 +38, before 00, value 01, frame 10318. take: sting-chameleon. frames: first 10279, last 10458, count 180, poster 10330, numbering endFrame count since the savestate load (capture_frames.lua convention, as W2). result: 81:CC60 JSL 84:9F7E ran: at f10319 X action 7E:0BAA 08 and step 0BAB 00 (control 00, 02); from f10320 X action 06 as in the control (the take's jump); the guardian's state 0A ran as in the take.. crop: rows 7..230 of 256x239, 2x nearest.

wk15_rec_guardian_fourth_death.png: gravação sting-chameleon, quadro 10200 (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória.

Fire Wave: a 3ª figura do começo

O tiro Fire Wave tem 31 figuras de animação, e só uma nunca foi vista. Ela seria a terceira figura do começo do tiro. O jogo passa o tiro para a fase seguinte antes de essa figura chegar à tela. Uma busca em 616 gravações não achou nenhum quadro com ela.

Situação forçada no emulador: escrevemos 0D em 7E:125F (o cronômetro do começo do tiro) no lugar do 05; o próprio jogo manteve o tiro no começo por mais tempo, pôs nele a 3ª figura da animação por alguns quadros e depois passou o tiro para a fase seguinte. Não acontece jogando normalmente. A chama do Fire Wave na 3ª figura (quadro 2655), forçada; as três primeiras figuras são parecidas: uma bola de fogo com rabo. Imagem parada · Vídeo sem som
Quatro quadros seguidos de uma gravação a partir do primeiro disparo do Fire Wave que a lista das gravações registra (quadro 2637).
Gravação: jogo normal, sem nenhuma escrita na memória. Quatro quadros seguidos de uma gravação a partir do primeiro disparo do Fire Wave que a lista das gravações registra (quadro 2637). Abrir em tamanho real
Detalhes técnicos

Figura AF:C224 (entrada 2 do set $46, tiro $0A). 83:94DA..83:94F3 inicia anim00 com timer 5; anim01 em 83:9500; durações AF:C21E/C221/C224 = 4/4/4. T6 (903 quadros, 0), R64 (616 gravações, 0), W44.

Lista R115 (build/R115/candidates.md), item 3 de “candidato a investigação profunda”; vale 1 bp no checklist do X1.

w5_fire_wave_third_frame.gif (com w5_fire_wave_third_frame.png e w5_fire_wave_third_frame.mp4): situação forçada no Mesen sem tela, sem mudar o cartucho (build/W5); GIF e imagem parada de 512 × 448, já em 2x sem suavização (conferido quadro a quadro), 56 quadros no GIF, copiados byte a byte. O GIF w5_fire_wave_third_frame.gif (1950320 bytes) não vai para o site: passa do limite de 1 MB por GIF de tools/validate_site.py; no lugar dele fica o vídeo. Escrita, como está no manifesto (em inglês): rom_point 83:94DE, after 83:94DC STA +37 (= 05, start timer), address 7E:125F, byte X shot (OID 0A) slot 1228 +37, before 05, value 0D, frame 2637, why_0D 1 + 4 + 4 + 4, durations AF:C21E/C221/C224 (R115). take: armored-armadillo. frames: first 2627, last 2706, count 80, poster 2655, numbering endFrame count since the savestate load (capture_frames.lua convention, as W2). result: slot +14/+15 (figure pointer): C21E f2638..2644, C221 f2645..2652, C224 f2653..2658, C21E f2659..2660; +02 00 -> 02 at f2661 (+37 0D -> 00). Look: build/W5/look_fw_zoom.png (the three figures are all a flame ball with a tail).. crop: rows 7..230 of 256x239, 2x nearest.

wk15_rec_fire_wave_third_frame_strip.png: gravação armored-armadillo, quadros [2637, 2638, 2639, 2640] (quadros contados desde o carregamento do savestate), sem nenhuma escrita na memória, ampliada 2x no site.

Spark Mandrill: o inimigo que nunca nasce

A lista da fase do Spark Mandrill guarda um inimigo num lugar aonde a câmera nunca chega. Em nenhuma gravação a câmera chegou perto o bastante para o jogo criá-lo. O David já declarou esse lugar impossível para a contagem da fase. Falta valer a mesma decisão para os movimentos, ataques e toques desse inimigo.

A câmera foi levada para cima, no escuro, e o próprio jogo criou o inimigo: um vagalume com um cone de luz que voa para a esquerda.
Situação forçada no emulador: escrevemos o alvo da câmera (7E:1E4D e 7E:1E50) para levá-la até lá; o próprio jogo criou o inimigo a partir da lista da fase. Não acontece jogando normalmente. A câmera foi levada para cima, no escuro, e o próprio jogo criou o inimigo: um vagalume com um cone de luz que voa para a esquerda. Abrir o GIF · Imagem parada · Vídeo sem som
Detalhes técnicos

Posição 84, OID 0x37, (6513, 590), registro $FBA6 ($FA02 + 5 i). Parte placement:spark-mandrill:84 nas linhas enemy.oid_37 motion/attack/contact. R104, R106, E41, E43; L43; KB stage_population_declared_impossible_2026-10-09.json. Clipe da W2 (never_born_sm84).

Lista R115 (build/R115/candidates.md), item 4 de “candidato a investigação profunda”; vale 3 bp no checklist do X1.

w5_never_born_sm84_2x.gif (com w5_never_born_sm84_2x.png e w5_never_born_sm84_2x.mp4): situação forçada no Mesen sem tela, sem mudar o cartucho (build/W5); GIF e imagem parada de 512 × 448, já em 2x sem suavização (conferido quadro a quadro), 90 quadros no GIF, copiados byte a byte. Escrita, como está no manifesto (em inglês): rom_point 80:E152 (RTS of the clamp 80:E0DE..80:E152), every frame of the pan: 7E:1E4D/1E4E camera x target and 7E:1E50/1E51 camera y target (16-bit) := the forced pan value; the spawner 80:DC36/80:DCDB runs after it in the same frame and creates the enemy from the ROM list itself; nothing else is written, address 7E:1E50, byte camera y target, value 768 -> 520 (6 px/frame), hold 60, back to 768, frame [22050, 22194]. frames: first 22045, last 22224, count 180, poster 22094, numbering endFrame count since the savestate load (capture_frames.lua convention). made_by: W2 frames (build/W2/run_sm84/seq, entry never_born_sm84), re-encoded at 2x by build/W5/run_w5.py w2.

Armored Armadillo: os morcegos que nunca nascem

A lista da fase do Armored Armadillo guarda dois morcegos em lugares aonde a câmera nunca chega. Um fica numa faixa escura embaixo do chão de pedra; o outro, no canto esquerdo lá embaixo do mapa. O David já declarou esses lugares impossíveis para a contagem da fase. Sozinhos eles não mudam a porcentagem, porque o morcego ainda falta num lugar do Sigma 3.

Situação forçada no emulador: escrevemos o alvo da câmera (7E:1E4D e 7E:1E50) para levá-la até lá; o próprio jogo criou o inimigo a partir da lista da fase. Não acontece jogando normalmente. A câmera desce para baixo do chão de pedra e o próprio jogo cria o morcego, que fica pendurado na faixa escura. Imagem parada · Vídeo sem som
A câmera vai até o canto de baixo à esquerda, uma tela só com a cor de fundo, onde o morcego fica pendurado sozinho.
Situação forçada no emulador: escrevemos o alvo da câmera (7E:1E4D e 7E:1E50) para levá-la até lá; o próprio jogo criou o inimigo a partir da lista da fase. Não acontece jogando normalmente. A câmera vai até o canto de baixo à esquerda, uma tela só com a cor de fundo, onde o morcego fica pendurado sozinho. Abrir o GIF · Imagem parada · Vídeo sem som
Onde fica o morcego da posição 62, embaixo do chão de pedra.
Mapa feito com os dados do cartucho. Onde fica o morcego da posição 62, embaixo do chão de pedra. Círculo vermelho: onde o inimigo nasceria. Quadrado azul: o ponto mais perto a que o X chegou numa gravação. Abrir em tamanho real
Detalhes técnicos

Posições 0 (26, 1305, registro $FA02) e 62 (3080, 1053, registro $FB38), OID 0x2D (cp_bat). R104, R106, R108, R110, T1B, E41, E43; L43. Clipes da W2 (never_born_aa0, never_born_aa62).

Lista R115 (build/R115/candidates.md), item 5 de “candidato a investigação profunda”; vale 0 bp no checklist do X1.

w5_never_born_aa62_2x.gif (com w5_never_born_aa62_2x.png e w5_never_born_aa62_2x.mp4): situação forçada no Mesen sem tela, sem mudar o cartucho (build/W5); GIF e imagem parada de 512 × 448, já em 2x sem suavização (conferido quadro a quadro), 90 quadros no GIF, copiados byte a byte. O GIF w5_never_born_aa62_2x.gif (1874195 bytes) não vai para o site: passa do limite de 1 MB por GIF de tools/validate_site.py; no lugar dele fica o vídeo. Escrita, como está no manifesto (em inglês): rom_point 80:E152 (RTS of the clamp 80:E0DE..80:E152), every frame of the pan: 7E:1E4D/1E4E camera x target and 7E:1E50/1E51 camera y target (16-bit) := the forced pan value; the spawner 80:DC36/80:DCDB runs after it in the same frame and creates the enemy from the ROM list itself; nothing else is written, address 7E:1E4D and 7E:1E50, byte camera x/y target, value x 3081 -> 2960 then y 768 -> 900 (6 px/frame), hold 60, back, frame [2940, 3067]. frames: first 2920, last 3097, count 178, poster 3010, numbering endFrame count since the savestate load (capture_frames.lua convention). made_by: W2 frames (build/W2/run_aa62/seq, entry never_born_aa62), re-encoded at 2x by build/W5/run_w5.py w2.

w5_never_born_aa0_2x.gif (com w5_never_born_aa0_2x.png e w5_never_born_aa0_2x.mp4): situação forçada no Mesen sem tela, sem mudar o cartucho (build/W5); GIF e imagem parada de 512 × 448, já em 2x sem suavização (conferido quadro a quadro), 91 quadros no GIF, copiados byte a byte. Escrita, como está no manifesto (em inglês): rom_point 80:E152 (RTS of the clamp 80:E0DE..80:E152), every frame of the pan: 7E:1E4D/1E4E camera x target and 7E:1E50/1E51 camera y target (16-bit) := the forced pan value; the spawner 80:DC36/80:DCDB runs after it in the same frame and creates the enemy from the ROM list itself; nothing else is written, address 7E:1E4D and 7E:1E50, byte camera x/y target, value x 629 -> 0 then y 412 -> 1150 (8 px/frame), hold 60, no return, frame [1345, 1577]. frames: first 1398, last 1577, count 180, poster 1540, numbering endFrame count since the savestate load (capture_frames.lua convention). made_by: W2 frames (build/W2/run_aa0/seq, entry never_born_aa0), re-encoded at 2x by build/W5/run_w5.py w2.

wk15_map_aa_62.png: janela x 2888, y 909, 384 × 288 pixels, desenhada da camada main de content/x1/stages/tiles em escala 2; inimigo em [3080, 1053], X mais perto em [3208, 943].

Sting Chameleon: três blocos soltos no vazio

Na fase do Sting Chameleon, um tipo de chão só existe em três blocos soltos num vazio grande embaixo do mapa. Nenhuma gravação passou perto deles. Para cair até lá, o X teria de andar pelo menos 888 pixels para o lado durante uma queda de 249 pixels. Nas gravações essa queda dura poucas dezenas de quadros, e o X anda no máximo 4 pixels por quadro.

O vazio embaixo da fase. Em azul, as duas aberturas conhecidas no chão; em amarelo, os três blocos lá embaixo.
Mapa feito com os dados do cartucho. O vazio embaixo da fase. Em azul, as duas aberturas conhecidas no chão; em amarelo, os três blocos lá embaixo. Abrir em tamanho real
Detalhes técnicos

Terreno $38, células (304, 64/74/90), y 1024/1184/1440. Abertura 1: colunas 244-247, linhas 41-47; abertura 2: colunas 222-224, linhas 44-47. S61, S62; terrain_unreachable_proofs_2026-10-03.json (complete false). A camada 'main' de sting-chameleon_full.json não tem bloco nessas células: as marcas amarelas estão nas células citadas pela S61.

Lista R115 (build/R115/candidates.md), item 6 de “candidato a investigação profunda”; vale 2 bp no checklist do X1.

wk15_map_sc_terrain38.png: janela x 3488, y 576, 1536 × 960 pixels, desenhada da camada main de content/x1/stages/tiles em escala 1, ampliado 2x no site.

Sem vídeo forçado (build/W5/manifest.json): A situação forçada não mostra o terreno. Colocamos o X em cima do primeiro bloco (escrevemos 1002 na altura do X, 7E:0BB0, e levamos a câmera até lá); o próprio jogo matou o X logo em seguida, antes de ele encostar no bloco. Fica o mapa. Como está no manifesto (em inglês): 15405 inputs stop, camera y target 7E:1E50 272 -> 890 at 8 px/frame (80:E152), X y 414 -> 1002 at f15483 (X x 4862); X action 7E:0BAA 2C (in the ride armour) -> 0C at f15485, y stays 1002, death burst from about f15525, screen fades to white by f15600. Frames build/W5/run_terrain/seq (local); events build/W5/run_terrain/events.txt. Regra: a forcing that turns into something else is reported, no further writes.

Detalhes técnicos

As imagens de gravação foram tiradas no Mesen sem nenhuma escrita na memória (build/WK15/wk15_still.lua). Os vídeos forçados movem só o alvo da câmera, em 7E:1E4D e 7E:1E50, e o inimigo nasce pelo criador do próprio jogo (80:DC36/80:DCDB); três deles eram os vídeos da W2 que também aparecem em “Inimigos que nunca nascem” e aqui deram lugar aos mesmos quadros em 2x da W5. Os mapas vêm de build/WK15/map_wk15.py. O SHA-256 e o tamanho de cada arquivo foram conferidos com build/WK15/manifest.json.

Os seis casos de “Impossíveis na pontuação atual” são a lista R115 (build/R115/candidates.md). Contam no checklist do X1 desde a L50 (commit 6b56b8b64 do jogo), por decisão do David em 2026-10-10: “pode marcar como impossível para a nossa pontuação atual” e “se algum dia alguém conseguir um bug para fazer acontecer a gente pode atualizar como ‘fazivel’”. Os GIFs vêm de build/W5/manifest.json (card W5-impossible-cases-forced-gifs): build/W5/w5.lua, rodado por build/W5/run_w5.py no Mesen sem tela, escreve uma vez na memória, no ponto do código indicado, o valor que o rótulo diz, sem mudar o cartucho; o SHA-256 e o tamanho de cada arquivo foram conferidos com o manifesto. O terreno da Sting Chameleon não tem GIF: a situação forçada matou o X antes de ele chegar aos blocos, e fica o mapa da WK15.

Lista de origem: build/R115/candidates.md (6 candidates, 9 bp; 22 still huntable, 71 bp). Nesta parte: 28 itens, 16 imagens de gravação, 6 mapas e 1 vídeos forçados com GIF e imagem de capa, 6 situações forçadas da W5 em 2x (GIF ou vídeo, com imagem parada), 41 arquivos ao todo; 3 imagens desenhadas em escala 1 foram ampliadas 2x sem suavização, as outras já vinham em 2x. Importado do commit 826225efd do jogo por tools/render_wiki.py --import (data/wiki-open-parts.json); os GIFs da W5, do commit e9aaab7e7 por tools/render_wiki.py --import-impossible (data/wiki-impossible.json).

Vídeo completo

O vídeo começa com todas as armas já liberadas.