Ir para o conteúdo

Street Fighter Alpha 2 de Super Nintendo ganha versão sem o chip S-DD1 e com pausa pré-luta bem menor

Projeto transforma Street Fighter Alpha 2 do Super Nintendo em uma ROM sem S-DD1 e reduz a pausa antes das lutas com otimizações de som.

Junior Candido
Street Fighter Alpha 2 ganha versão para Super Nintendo sem o chip S-DD1 e com pausa pré-luta bem menor

Um desenvolvedor chamado gufranco publicou no GitHub um conjunto de ferramentas que transforma o Street Fighter Alpha 2 (e o Street Fighter Zero 2, versão japonesa) em uma ROM comum de 96 Mbit, sem o chip de descompressão S-DD1, que roda em qualquer flash cartridge com espaço para ela. O projeto também derruba a pausa antes de cada luta de cerca de 2,9 segundos para cerca de 0,78 segundo na versão americana.

Um aviso antes de continuar: o repositório não distribui nenhum dado do jogo. Quem quiser montar a ROM precisa fornecer o dump do próprio cartucho, e o projeto pede que ninguém anexe nem linke ROMs nas discussões.

Por que o jogo precisava de um chip

O cartucho original guarda boa parte dos gráficos comprimidos. O S-DD1 descomprime esses dados na hora, durante uma transferência por DMA, conforme o jogo pede. Sem o chip, os gráficos simplesmente não aparecem.

A solução do projeto foi descomprimir tudo antes, num processo de build, e jogar o resultado numa imagem maior. Depois, o código mexe em sete pontos de cada região (EUA e Japão) onde o jogo ativava o chip, fazendo com que eles leiam os bytes já prontos. O que sai disso é uma ROM de 12.582.912 bytes, sem coprocessador para emular e sem hardware especial de mapeamento.

Publicidade

Os gráficos descomprimidos somam cerca de 5 MB, o que já estoura os 4 MB do cartucho original. E 12 MB também não cabem de forma direta no espaço de endereçamento do console. O jeito encontrado foi dividir cada banco de 64 KB em duas metades, guardadas em planos separados do arquivo, com os bancos $C0 em diante funcionando como uma janela para o segundo plano. O README chama isso de LoROM com janela e diz que a regra vem da conversão sem chip de Star Ocean, feita por neviksti, que o autor recuperou por inspeção.

A pausa antes da luta nunca foi culpa do chip

Esse é o ponto menos conhecido do projeto. A demora entre a escolha dos lutadores e o início do combate, que incomoda quem joga em flash cart, vem do driver de som. O jogo envia as amostras de áudio para o chip de som um byte por vez, a cerca de 55 ciclos por byte, e uma rajada antes da luta chega a 47.915 bytes.

O autor reescreveu o laço receptor para carregar três bytes por handshake, ao custo de 49 ciclos por trio, ou aproximadamente 16,3 ciclos por byte. As maiores esperas medidas ficaram assim:

  • EUA: de 2,90 s para 0,78 s
  • Japão: de 2,60 s para 0,72 s

O novo envio vale para as rajadas que usam o formato de bloco compatível, o que cobre 93% do tráfego do driver. O caminho que passa pelo boot ROM do chip de som continua com um byte por handshake. Há ainda um segundo ganho: o projeto pula o envio de uma lista de amostras quando o jogo pede a mesma que já está carregada, economizando 840.766 bytes na versão americana e 303.340 na japonesa num passeio por todo o elenco.

Na imagem sem chip, entra mais uma otimização. Antes de cada luta o jogo gasta 27 quadros calculando uma tabela de 24.704 bytes que nunca muda, e a versão nova já traz a tabela pronta, movida com uma única DMA. O cartucho de 4 MB corrigido não recebe esse ganho, porque o maior trecho vazio em qualquer uma das ROMs originais tem 3.210 bytes e a tabela não cabe em lugar nenhum.

Shin Akuma e onze correções de brinde

O pacote também aplica o desbloqueio do Shin Akuma, que são apenas dois bytes. O personagem está no cartucho desde 1996, escondido atrás de um código que ficou sem documentação até ser divulgado em janeiro de 2021, segundo o projeto.

Publicidade

Além disso, entram onze correções que ocupam 218 bytes na versão americana e 60 na japonesa. Entre elas:

  • restauração do nome Sodom, que a versão americana tinha trocado por Katana, nas quatro telas em que ele aparece;
  • ordem das poses de vitória do Akuma como no arcade;
  • um estouro na tabela de objetos quando um nono quadro de sombra é pedido;
  • três registros de sprite na cena em que o Sagat segura o pai do Dan;
  • remoção de 45 chamadas vazias.

Cada correção é localizada por assinatura de bytes, e não por endereço fixo, então a mesma tabela serve para as duas regiões. Se a ROM não bater, o patch se recusa a escrever, e aplicar duas vezes não faz diferença.

Siga o Arkade no Instagram @revistaarkade Seguir

Onde já foi testado

Segundo o autor, a versão americana de 96 Mbit roda no Game Doctor SF7 (128 Mbit DRAM) e no FXPAK Pro, e a de 4 MB corrigida também roda no FXPAK Pro, que emula o S-DD1 no FPGA. A versão japonesa só passou por emulador, e o projeto diz com todas as letras que ninguém colocou ela num console ainda.

Os testes automatizados somam 2.817 streams americanos e 2.855 japoneses, todos com zero bytes errados, além de 20 imagens rodadas por 12.000 quadros cada e 50.652 envios de amostra conferidos passando pelos 18 lutadores.

Existe uma ressalva honesta: a tabela japonesa não tem como ser provada completa. Ela cobre as 1.661 requisições gravadas em hardware real, mas um stream que ninguém pede nunca aparece. Se alguma tela vier errada, o projeto pede que o jogador abra uma issue informando a imagem e a região, de preferência com a captura do quadro.

Imagens sem chip costumam manter o cabeçalho original, que ainda declara um chip que não existe mais, e isso faz o emulador ativar uma emulação desnecessária e usar o esquema errado. O projeto reescreve os campos de chipset e tamanho nos seis lugares em que o cabeçalho aparece. O mapa necessário foi incorporado ao snes9x pelo pull request 1082, então versões atuais carregam as imagens sem ajuste. O autor suspeita que ares, Mesen2, bsnes e Mednafen tenham a mesma lacuna, mas ainda não mandou nada para eles.

Nos créditos aparecem Andreas Naive (engenharia reversa da compressão do S-DD1), o canal Modern Vintage Gamer (cujo vídeo deu origem ao projeto e apontou que a pausa vinha do som), gizaha (trabalho original sobre a pausa), DarkAkuma, a equipe do snes9x e a comunidade Zeldix.

Quem quiser acompanhar ou testar pode procurar o repositório snes-street-fighter-alpha-2-nochip no GitHub, do usuário gufranco.

Publicidade

Aproveite que está aqui e siga o Arkade no:

O Anbernic RG DS é o Nintendo DS de ontem, mas com suporte a muitos mais jogos e recursos de games de hoje. Garanta já o seu no AliExpress!

Se prepare para o remake de Zelda Ocarina of Time garantindo já o seu Nintendo Switch 2, com frete Prime garantido na Amazon!

Próxima matéria Doom chegou no NES, com um clone da engine do clássico sendo colocada com monstros, tiros e música dentro do mundo 8-bits Nintendo Doom chegou no NES, com um clone da engine do clássico sendo colocada com monstros, tiros e música dentro do mundo 8-bits Doom ganhou um clone jogável no NES, com monstros, tiros, música e uma engine própria em desenvolvimento para o console de 8 bits.

Street Fighter Alpha 2

Ficha do jogo
Lançamento
27 de fevereiro de 1996
Desenvolvedora
Capcom
Publicadora
Capcom
Gênero
Luta
Junior Candido

Conto a história dos videogames e da velocidade de ontem e de hoje por aqui! Você pode me seguir em instagram.com/juniorcandido ou x.com/junior_candido E para contatos, envie sua mensagem para o e-mail [email protected]

Mais matérias de Junior Candido

Buscar no Arkade