CPS-2 · Engenharia reversa

Cross Fever para XMvsSF, MSHvsSF e Marvel vs. Capcom de arcade

Quatro pessoas, quatro lutadores, uma placa CPS-2, e o Duo do MVC1, com a pose e a entrada voando, no X-Men vs. Street Fighter e no MSHvsSF, com o céu de meteoros do MVC1 e o seu ∞ no medidor. Cinco patches com instaladores de arrastar e soltar para a sua própria ROM (os do MSHvsSF, para a versão USA e para a Euro), cada um com o escopo testado declarado.

Daniel Plas Rivera ·

Compartilhe suas prioridades (enquete em inglês) ↓

MVC1 V3: confira o jogo e as quatro portas.

V3 coloca os parceiros em portas consecutivas: P1 + P2 contra P3 + P4. V2.2 usa P1 + P3 contra P2 + P4. A ROM e o core da V3 devem ficar juntos; mudar o nome do arquivo não atualiza nenhum deles.

Partida V3 com quatro lutadores: 1P e 2P na equipe esquerda, 3P e 4P na direita, com duas barras TIME.
V3 candidate03 · ambas as equipes em Duo · controles normais simulados, sem escrever na memória do jogo. Esta captura é da V3; os vídeos anteriores mantêm suas versões originais.

Antes de jogar

Core necessário
FBNeo (MVC1 Cross Fever V3)
Versão do core
v1.0.0.03 261015 GITv3preview
Jogo gerado
mvsc4p.zip

Depois de iniciar, abra Main Menu → Information → Core Information e confira o nome e a versão do core. Carregue o jogo gerado na pasta output deste pacote. Guarde o recibo de instalação; o nome do arquivo sozinho não identifica a versão do jogo.

Downloads e somas SHA-256 completas

Quatro portas, duas equipes

PortaEquipeResponsabilidade na seleção
P1Equipe 1Primeiro lutador
P2Equipe 1Segundo lutador e ajudante
P3Equipe 2Primeiro lutador
P4Equipe 2Segundo lutador e ajudante

Os mesmos seis ataques em todas as portas

LP ← Y

Ataque ← Botão do RetroPad

MP ← X

Ataque ← Botão do RetroPad

HP ← L

Ataque ← Botão do RetroPad

LK ← B

Ataque ← Botão do RetroPad

MK ← A

Ataque ← Botão do RetroPad

HK ← R

Ataque ← Botão do RetroPad

São nomes do RetroPad, não as letras impressas no controle. Modern, Classic e 6Panel mantêm o mesmo mapeamento. L2 é PPP opcional; R2 é KKK opcional. Em Settings → Input → RetroPad Binds, atribua um Device Index diferente a cada controle local. Confira depois Quick Menu → Controls → Port 1–4 Controls. Verifique os seis ataques separados antes de usar macros; Start e Select/Coin não são ataques do jogo.

Da entrada à próxima partida

EtapaEntrada e dono do controle
EntrarPressione HP + HK e solte os dois botões. O jogo livre não precisa de Coin nem Start.
Primeiro lutadorP1 escolhe pela Equipe 1; P3 pela Equipe 2. Mova o cursor com as direções; qualquer um dos seis ataques confirma lutador e cor. As outras portas aguardam.
Segundo lutador / ajudanteP2 escolhe pela Equipe 1; P4 pela Equipe 2. Segure a combinação de ataques do ajudante desejado ao confirmar o segundo lutador. Solte os botões para a roleta normal; um novo toque de qualquer ataque a interrompe. Não precisa de Start.
Velocidade / ordemO dono habilitado do primeiro lutador, P1 ou P3, controla a seleção compartilhada de velocidade pelas regras originais de entrada; não há uma velocidade por equipe. P2 e P4 controlam a ordem da própria equipe.
Luta / trocaAs direções e os seis ataques controlam seu lutador. HP + HK pede a troca; quem entra continua pertencendo ao próprio jogador.
DuoQCB + HP + HK, com o medidor necessário. Cada parceiro mantém direções, ataques e histórico de comandos independentes. QCF + HP + HK continua sendo o Hyper de equipe.
Fim / KO / revancheO controle deve permanecer na mesma porta. O parceiro sobrevivente não herda o controle do outro jogador.

Se não iniciar ou o lutador errado responder

Execute CHECK.cmd no Windows ou python3 diagnose.py no macOS/Linux. O relatório confere o pacote, os hashes da ROM/core e a configuração salva; não comprova quais controles estão conectados nem qual core está executando. O iniciador guarda um log detalhado do RetroArch e um relatório de suporte com dados privados ocultos em logs/. Compare esses dados com Core Information antes de enviar o relato.

  • Core ou jogo incompatível: confira o nome e a versão acima, o nome do pacote e o recibo de saída. FBNeo original ou um core anterior de Cross Fever correspondem a outra configuração. Guarde o par V3 em uma pasta própria.
  • Erro de ROM/CRC ausente: confira a verificação dos arquivos do jogo no diagnóstico. Renomear um ZIP original ou modificado antigo para mvsc4p.zip não o transforma em V3; gere uma cópia separada com o instalador deste pacote.
  • Um botão falta ou dois controles movem o mesmo lutador: confira o Device Index e os seis ataques de cada porta. Teste uma configuração limpa e separada, sem remapeamentos antigos do jogo ou do core.
  • A seleção parece parada: use a porta da etapa atual. Solte HP + HK antes de confirmar; manter a combinação de entrada não conta como um novo toque.
  • Ao relatar um problema, inclua sistema operacional, versão do RetroArch, nome do pacote, tela Core Information, recibo de saída, Device Index e botões de cada porta, etapa e input exato. Uma falha em um pacote antigo não identificado não comprova uma regressão da V3.

O que os testes comprovam

Os testes fixados da V3 passaram 4.023 observações de entrada compilada em 3 repetições, 24 confirmações de personagem, 44 escolhas confirmadas de ajudante e 16 casos de dono incorreto ou botões mantidos. O total de entradas verifica sua chegada às portas, não que cada combinação execute um golpe válido. Os testes de personagens têm escopo limitado; não certificam o elenco inteiro.

Entradas simuladas de quatro jogadores permitem conferir qual porta chega a cada lutador e etapa da seleção. Não validam quatro controles físicos, dispositivos USB, quatro máquinas distintas, latência da internet nem uma revanche online. Várias instâncias na mesma máquina são um teste separado e mais limitado.

Limitação ao salvar/carregar: as comparações limitadas de RAM do jogo passaram. Linux e a DLL do Windows sob Wine ainda diferiram no primeiro quadro restaurado e em 749 bytes serializados do QSound; o controle com V2.2 de Linux reproduziu ambas as diferenças. O determinismo audiovisual e do estado completo, rollback e partidas reais pela internet não passaram pela aceitação.

Registros desta compilação: V3 package hashes · V3 tests and limitations · Scoped reproducible evidence · Final package qualification · Installed macOS frontend check · Package instructions

Pedidos de design separados

Troca do dono do controle, jogo com três pessoas e uma opção clássica de controle compartilhado continuam sendo pedidos separados. V3 mantém Duo independente. O perfil de botões Classic não ativa controle compartilhado clássico nem transfere o dono do lutador.

Pacotes e instruções de instalação · Artigo completo de Cross Fever

MVC1 V3: P1 + P2 contra P3 + P4. P1 e P3 escolhem o primeiro lutador; P2 e P4 escolhem o segundo e o ajudante. Os seis ataques usam os mesmos botões do RetroPad em todas as portas: Y/X/L = LP/MP/HP, B/A/R = LK/MK/HK. Cada parceiro mantém seu controle independente durante Duo. Troca do dono do controle, jogo com três pessoas e uma opção clássica de controle compartilhado continuam sendo pedidos separados.

Uma verificação recente da V2.2 reproduziu um erro concreto no perfil Modern: L enviava PPP e R enviava HP, em vez de HP/HK. V3 mantém o mesmo mapeamento de seis botões em Modern, Classic e 6Panel. Isso não identifica a causa de outro relato de inicialização que não informou seu pacote ou core.

Consulte a instalação e os controles atuais: pacote, core carregado, recibo do jogo e atribuições das quatro portas. Um relato sem identificar pacote ou core não comprova uma falha da versão atual. Entradas simuladas não comprovam quatro controles físicos nem uma partida e revanche entre quatro máquinas pela internet.

Arquivo V2.2: usa P1/P3 contra P2/P4; não misture sua ROM ou core com V3. Permanecem os pacotes de Windows x64, Mac Apple silicon · macOS 26+ e Linux x64, o guia, os resultados e o registro de arquivos. V2.2 foi testada com quatro instâncias do RetroArch 1.22.2 em uma única máquina Linux usando lobby e relay locais, não entre quatro máquinas pela internet.

Os downloads e a pesquisa históricos abaixo preservam suas versões. Não são resultados da V3. As instruções dos instaladores .cmd do XMvsSF e do MSHvsSF não substituem o guia do MVC1 V3.

Quatro pessoas. Quatro lutadores. Uma única placa de arcade.

O Marvel vs. Capcom de Dreamcast tinha o Cross Fever: duas equipes de dois, cada lutador no seu próprio controle e os quatro na tela ao mesmo tempo. A placa CPS-2 —a dos fliperamas, a do Fightcade— nunca teve. Agora tem, no X-Men vs. Street Fighter, no Marvel Super Heroes vs. Street Fighter e no MVC1 de arcade, a partir da sua própria ROM.

O XMvsSF e o MSHvsSF também nunca tiveram o Duo do MVC1, então ganham isso também, com o céu de meteoros do MVC1 ao fundo: com QCB + HP + HK o seu lutador faz a pose, o parceiro entra voando e você luta com os dois até o tempo acabar.

Instala arrastando um arquivo

Escolha o seu jogo abaixo e baixe o .cmd dele. Arraste por cima o zip limpo da sua ROM: sem terminal, sem digitar nada. Uma janela abre, confere o arquivo peça por peça e grava um zip novo ao lado do original, que nunca é alterado. Copie esse arquivo novo para outra pasta de ROMs do emulador e renomeie a cópia com o nome original (xmvsf.zip, mshvsfu.zip ou mshvsf.zip), porque o MAME e o FBNeo só carregam esse nome. No macOS ou no Linux, cada pacote de provas inclui um instalador em Python que gera o mesmo arquivo.

Cinco jeitos de jogar

DownloadJogo e modoBase exigidaControles
xmvsf-cross-two-human-v3-preview.cmdXMvsSF · 1 contra 1 com Duo, v3XMvsSF Euro 961004 (xmvsf.zip)Dois jogadores, controles normais
xmvsf-cross-four-human-v2-preview.cmdXMvsSF · quatro jogadores, v2XMvsSF Euro 961004 (xmvsf.zip)Perfil nativo de quatro controles
mshvsf-cross-two-human-v5-preview.cmdMSHvsSF · 1 contra 1 com Duo, v5MSHvsSF USA 970827 (mshvsfu.zip)Dois jogadores, controles normais
mshvsf-cross-four-human-v5-preview.cmdMSHvsSF · quatro jogadores, v5MSHvsSF USA 970827 (mshvsfu.zip)Perfil nativo de quatro controles
mshvsf-cross-two-human-v5-euro-preview.cmdMSHvsSF · 1 contra 1 com Duo, v5MSHvsSF Euro 970625 (mshvsf.zip, o do Fightcade)Dois jogadores, controles normais
mshvsf-cross-four-human-v5-euro-preview.cmdMSHvsSF · quatro jogadores, v5MSHvsSF Euro 970625 (mshvsf.zip)Perfil nativo de quatro controles
mvc1-cross-fever-v2.2-windows-x64.zipMVC1 · quatro jogadores, v2.2 previewMVC1 Euro 980123 (mvsc.zip)Core MVC1 de quatro portas; pacotes abaixo

O MSHvsSF tem dois instaladores por modo: um para a ROM USA 970827 (mshvsfu.zip) e outro para a Euro 970625 (mshvsf.zip), a que o Fightcade usa. Os dois instalam a mesma v5.

SHA-256 dos instaladores: XMvsSF Duo v3 4b20caf3284f13692c3d5f1009240cf45f09109df152861bebe5ce67793179ad, XMvsSF quatro jogadores v2 4413b19dbac91415bd1469aba448e5cfe373cf4977d15940e3448aaee8f69c70, MSHvsSF Duo v5 ce4b8cbd7d41bd441057b249ce236f265a2c3e40e9e909b743b81e443a46bb13, MSHvsSF quatro jogadores v5 18858b191291e1cf292ba41cad85e857a974042acd9939106ce038bfe3b5f6be, MSHvsSF Duo v5 Euro 6344b7800a03279a147f666f4465cad87dac305c8e1ee8ee18d4a773ac9047bc, MSHvsSF quatro jogadores v5 Euro a111427640dea5ebfb83f82abd674276c4d740033ae4f18711b500d36f594d13, MVC1 v2.2 aba28617ac229591ab6a4bedfc6a4a35b8ebb2c7281ee898e29d205f9be4b4a4. Cada um tem também um pacote de provas com README, especificação do patch, verificação e instalador em Python: XMvsSF Duo v3, XMvsSF quatro jogadores v2, MSHvsSF Duo v5, MSHvsSF quatro jogadores v5, MSHvsSF Duo v5 Euro, MSHvsSF quatro jogadores v5 Euro, MVC1 v2.1.

Sete instaladores, todos em versão prévia

São as compilações que passaram nas próprias verificações registradas, marcadas como prévia porque a aceitação mais ampla continua aberta: testadas no MAME, ainda sem gravação no FBNeo local, sem quatro controles físicos, sem fiação de gabinete CPS-2 e sem Fightcade/GGPO. Não combine uma com a outra, nem com o DHC ou outra base regional, e guarde a sua ROM original. As quatro do XMvsSF e do MSHvsSF mostram o céu de meteoros do MVC1 durante o modo, a barra TIME do MVC1 e o ∞ do MVC1 no medidor, começam o modo como o MVC1 (a pose e a entrada voando) e marcam cada lutador de 1P a 4P; o MVC1 v2 acrescenta essas marcas ao seu próprio modo.

Problemas conhecidos no XMvsSF

Encontrados jogando e já na fila para a próxima versão: o início não mostra os retratos do Hyper de equipe que entram deslizando nem as vozes desse Hyper; durante o modo um lutador pode atravessar um adversário; alguns Hypers (os de Rogue, Cammy e Sabretooth) podem soltar o alvo depois do primeiro golpe; e objetos do cenário, na frente ou animados ao fundo, podem aparecer sobre o céu de meteoros.

Controles das versões históricas

XMvsSF · 1 contra 1XMvsSF · quatro jogadoresMSHvsSF · 1 contra 1MSHvsSF · quatro jogadoresMVC1 · quatro jogadores
Jogadores24 — P1/P3 contra P2/P424 — P1/P3 contra P2/P44 — P1/P3 contra P2/P4
EntrarSeleção normalHP + HK fora do combate; P1 e P2 escolhem primeiro, P3 e P4 depoisSeleção normalHP + HK fora do combate; cada um escolhe o lutadorHP + HK fora do combate; cada um escolhe o lutador
Modo temporizadoQCB + HP + HK — você controla os doisQCB + HP + HKQCB + HP + HK — você controla os doisQCB + HP + HKQCB + HP + HK
Como começaPose, pausa do Hyper de equipe do XMvsSF, o parceiro entra voandoPose, pausa do Hyper de equipe do XMvsSF, o parceiro entra voandoPose e voz, corte do Hyper de equipe do MSHvsSF, o parceiro entra voandoPose e voz, corte do Hyper de equipe do MSHvsSF, o parceiro entra voandoO Variable Cross próprio do MVC1
Hyper de equipeQCF + HP + HK (Variable Combination)QCF + HP + HK (Variable Combination)QCF + HP + HKQCF + HP + HKQCF + HP + HK
Fundo durante o modoO céu de meteoros do MVC1O céu de meteoros do MVC1O céu de meteoros do MVC1O céu de meteoros do MVC1O fundo Cross próprio do MVC1
Medidor de nívelO ∞ do MVC1 enquanto o modo duraO ∞ do MVC1 enquanto o modo duraO ∞ do MVC1 enquanto o modo duraO ∞ do MVC1 enquanto o modo dura∞ enquanto o modo dura (o próprio do MVC1)
Marcas1P e 2P sobre cada lutador1P a 4P sobre cada lutador1P e 2P sobre cada lutador1P a 4P sobre cada cabeça1P a 4P sobre cada cabeça

Como no Duo do próprio MVC1, o modo precisa de dois níveis de medidor. Nada é gasto no início; o medidor aparece cheio enquanto o modo dura e, no fim, custa duas barras cheias (uma terceira pela metade é mantida). Começar no nível 3 dá um modo mais longo e esvazia o medidor. As barras TIME mostram a duração do modo, separadas do relógio do round. No XMvsSF e no MSHvsSF de quatro jogadores, P3/P4 precisam do perfil que usa Start/Coin como MK/HK. O core MVC1 v2.2 traduz essas linhas internamente: mapeie seis ataques normais e deixe Start/Coin sem entrada do jogo.

Esta edição em português resume a versão e os resultados. A investigação completa em inglês mantém as listagens, os hashes e as comparações técnicas de cada compilação.

MSHvsSF: os quatro continuam lutando

Ryu e Ken enfrentam Spider-Man e Captain America. Os quatro painéis mostram as entradas físicas e a palavra de controle recebida por cada lutador. Botões diferentes acesos ao mesmo tempo indicam jogadores distintos dando comandos.

clip · loops
msh-timed-03: 771 quadros consecutivos, 5120–5890, a 59,63 fps. Reprodução de comandos normais, sem áudio ou interpolação. Os números do temporizador abaixo do jogo são anotações; esta versão antecede as barras TIME nativas e a seleção para quatro pessoas. Não contém o fundo de meteoros.

Na gravação completa, os quatro ficam ativos durante 997 callbacks amostrados. Com os mesmos comandos, a versão anterior, que só alterava a propriedade dos controles, mantinha os quatro juntos por apenas 17 callbacks e não ativava um modo contínuo.

A versão posterior msh-combined-08 reúne controles, seleção, modo temporizado e HUD. Em um teste delimitado, as 264 amostras de entradas chegaram ao jogador correto, incluindo as 24 combinações de jogador e botão de ataque. Foram observados seis Hypers alternados de Ryu e Ken com o medidor armazenado em zero durante o modo.

MVC1: Variable Cross com quatro jogadores

Zangief e Ryu enfrentam Spider-Man e Captain America. Comandos normais passam por um emulador local de diagnóstico, sem escrita direta no estado do jogo nem carregamento de estado salvo no início.

clip · loops
native-freeplay-01, 294 bytes: 620 quadros consecutivos, 5100–5719, a 59,63 fps. Sem áudio ou interpolação. Esta gravação antecede o temporizador traduzido e as correções posteriores de entrada e seleção.

As duas barras TIME aparecem acima dos medidores de níveis; o fundo de meteoros é o original de MVC1. Não é uma reconstrução animada. O protótipo posterior de MVC1 ocupa 418 bytes e tem provas adicionais de seleção, controles, temporização e salvamento/restauração. Não atribuímos essas melhorias ao vídeo antigo.

Uma equipe não é um controle

A equipe ainda determina adversários, projéteis, medidor, trocas e colisões. O novo dono do controle é independente dessa equipe. Quando muda o personagem ativo, o parceiro continua pertencendo ao mesmo jogador.

O MVC1 de arcade permite que os dois parceiros ajam durante Variable Cross, mas originalmente compartilham os comandos. A troca de controle histórica usada no Kaillera entregava o controle ao dono do personagem ativo. O Cross Fever do Dreamcast permite donos independentes, inclusive os dois parceiros agindo juntos. São três comportamentos diferentes.

O executável do Dreamcast usa quatro registros de controles e seleciona a entrada de cada lutador. Seu código SH-4 é estudado para traduzir o comportamento para 68000; não pode ser colado diretamente no programa CPS-2. Os arquivos Phoenix ajudam com o programa descriptografado, não acrescentam portas de controle.

Fiação nativa dos protótipos

As equipes são P1/P3 contra P2/P4. Cada pessoa tem direções e seis botões. MK/HK reutilizam linhas de Start/Coin; por isso, o projeto exige jogo livre e uma fiação própria.

PessoaDireções + LP/MP/HP/LKMKHK
P1IN0, byte baixoStart1Coin1
P2IN0, byte altoStart2Coin2
P3IN1, byte baixoStart3Coin3
P4IN1, byte altoStart4Coin4

Os registros são IN0 $804000, IN1 $804010 e IN2 $804020. As linhas de serviço e EEPROM são preservadas. Fora da luta, um novo acionamento de HP+HK permite entrar; é preciso soltar os botões antes de jogar. Durante a luta, as prioridades dos comandos e das trocas são mantidas. A compatibilidade com um gabinete físico exige outra validação.

O temporizador e as transições difíceis

MSHvsSF mantém seu ataque de equipe QCF + HP+HK. O modo contínuo usa QCB + HP+HK e consome o medidor disponível seguindo as regras investigadas de MVC1. Nos testes, o contador percorreu 576, 575…0; outra ativação com dois níveis e fração 92 produziu 430 unidades. São unidades de simulação, não segundos decimais.

Duas barras TIME nativas em MSHvsSF.

Captura real de combined-06: rótulos TIME e barras desenhados pelo próprio jogo, sem sobreposição. A verificação do HUD foi repetida em combined-08.

MSHvsSF após o modo da equipe esquerda terminar: apenas a barra direita permanece.

combined-06, ativações em momentos diferentes: resta apenas o contador direito. O relógio da rodada e os medidores normais são preservados.

combined-08 corrige dois problemas concretos: HP+HK mantidos até o fim do modo podiam vazar quando o personagem voltava após uma troca; soltar os botões no banco podia deixar uma trava pendente e engolir a próxima pressão. Também evita a pausa inicial dos Hypers da própria equipe durante o modo, seguindo o comportamento verificado em MVC1 e Dreamcast.

Um teste de salvamento/restauração reproduziu os 300 callbacks seguintes, entradas, temporizadores e checksum dos 64 KiB de RAM. Isso não demonstra rollback de rede. Foi verificado um caso de KO do personagem ativo e comparados 7.600 registros de uma sequência; a matriz completa de derrotas e personagens continua aberta. Uma comparação histórica de QCF apresentou 73 diferenças de campos em 70 callbacks: não se afirma identidade quadro a quadro com o jogo original.

Uma correção concreta de comandos

O perfil local do emulador filtrava algumas mudanças rápidas de direção: P3/P4 em MVC1 e os quatro controles em MSHvsSF podiam passar de Esquerda → Direita ou Cima → Baixo e produzir uma entrada neutra. O perfil corrigido preserva essas mudanças entre amostras consecutivas e neutraliza somente direções opostas pressionadas ao mesmo tempo.

Os controles ordenados entre controle e porta passam de 59/77 para 77/77 em MVC1 e de 43/77 para 77/77 em MSHvsSF. Durante Duo simultâneo em MVC1, as 156 palavras solicitadas chegam à porta, contra 118 antes. Foram verificados 2.461 ciclos completos de leitura e 1.337 entregas de entradas e histórico aos lutadores, sem divergências. A ROM não mudou para essa correção; os registros fixam o emulador e as ROMs usados.

Isso ainda não prova a preservação de todo toque breve. Das 156 solicitações, 154 são lidas e concluídas no mesmo callback, uma termina no seguinte e um toque de P2 não tem leitura física pelo lutador. Não foi adicionada uma fila de entradas. Os problemas específicos de Wolverine/Strider, o rollback do Fightcade e os controles físicos continuam sendo testes separados.

O TIME azul original já aparece em MSHvsSF

msh-exact-time-11 incorpora as 11 peças da moldura e as 16 máscaras de esvaziamento originais de MVC1. Preserva suas cores e usa dois contadores independentes. A comparação dos 32 MiB de gráficos confirma que somente essas 27 peças reservadas foram alteradas; a memória gráfica não foi ampliada.

msh-exact-time-11: duas barras TIME azuis originais de MVC1 com tempos restantes diferentes.

Captura real no callback 5500 de staggered11-latched. O desenho é feito pelo jogo, sem anotação sobre o vídeo.

msh-exact-time-11: permanece apenas a barra TIME da equipe da direita.

Callback 6200: o modo da esquerda terminou. As duas barras desaparecem até o callback 6400.

As 22.900 comparações de pixels opacos em 14 capturas coincidem exatamente. O observador acompanha os bancos físicos de objetos e sua captura em VBlank, sem presumir que o contador atual corresponde à imagem exibida. Os registros desta versão fixam os hashes e os limites. Na expiração observada, as duas linhas de paleta são restauradas; se houver conflito de paleta ou faltar espaço na lista de objetos, o HUD opcional é omitido.

A sequência fixa anterior continua sem conseguir um KO na versão 11: os lutadores do lado direito chegam ao mínimo de 12 e 80 de vida. Essa execução, ko11, permanece como cobertura que falhou. O desenho adicional muda a relação entre callbacks e simulação; não se presumiu que a sequência anterior manteria seu resultado. As capturas de 06/08 e o vídeo de 03 mantêm seus rótulos.

Outra sequência de controles normais alcança um KO do personagem ativo na mesma ROM de build11, sem modificá-la. Spider-Man cai com os dois modos ativos e 131 unidades em cada temporizador. Captain America assume como personagem ativo do lado direito no callback seguinte. P4 o move para a direita e inicia um novo soco fraco: chegam as oito amostras de movimento e as quatro de soco solicitadas. Só termina o modo da equipe de Spider-Man; o temporizador esquerdo continua.

Os registros do KO e da recuperação em build11 comparam a execução original com uma reprodução fixa: coincidem os 7.600 registros de callbacks, exceto o rótulo que identifica o método de controle. Os objetos TIME passam de duas barras para uma e depois para nenhuma ao expirar o último temporizador; as duas linhas de paleta recuperam os valores salvos. Cada execução passa 5.808 verificações de desenho e 6.908 de envio de objetos. Foram executadas sem janela nem capturas novas, usando o perfil histórico de observação; não ampliam o resultado do novo filtro de direções.

Isso verifica um caso de KO e recuperação do controle do sobrevivente. Continuam pendentes rodadas completas, revanches, KOs simultâneos, a matriz de personagens, os escritores de paleta, as referências gráficas calculadas e os limites de objetos e pixels. Não demonstra o comportamento em gabinetes nem em rede.

Por que os meteoros faltavam

O fundo de MVC1 utiliza 866 peças de 32×32. Dividi-las e reutilizar padrões de 16×16 permite uma proposta sem perdas, mas exige 2.404 padrões novos. Espaços aparentemente vazios não estão necessariamente livres: alguns formam partes transparentes dos cenários existentes.

Depois de proteger as referências observadas numa execução normal de MSHvsSF, restam 2.381 espaços, 23 a menos do que o necessário. Com o corpus completo dos mapas recuperados, restam 1.695. A primeira distribuição é rejeitada porque alteraria cenários. Nenhum gráfico foi escrito para essa proposta. É necessária outra distribuição segura, além de resolver mapas, paletas, prioridades e restauração ao terminar o modo.

O que falta antes do lançamento

Uma pressão de um único callback pode acontecer entre duas atualizações de um lutador; esse tipo de entrada já se perdeu em MVC1. É preciso resolver isso com provas do mecanismo real de amostragem, sem confundir callbacks de vídeo com quadros de simulação. Também faltam personagens e formas, agarrões, projéteis, cruzamentos, transformações, expiração durante supers, KO duplo, revanches e orçamento de CPU/objetos.

O harness agora verifica as linhas físicas, a origem das leituras e a amostragem de cada personagem. Um perfil novo expõe os controles nativos dos dois jogos e passa 43 casos de interruptores por jogo. Os builds fixam hashes, bytes originais, reservas e fontes para permitir reprodução.

O patch DHC é outro projeto: adiciona cancels e trocas, não quatro donos independentes. Publicar este relatório permite mostrar o progresso sem anunciar compatibilidade com gabinetes, Fightcade online ou uma versão final que ainda não existe.

Atualização de 22 de setembro: os meteoros cabem

Duas medições mudaram o resultado. Primeiro, as oito fases do deslocamento acabaram sendo um ciclo roteirizado de 24 atualizações deduzido do código, não um intervalo amostrado; e a auditoria que excluía 774 espaços atribuía cada lista de sprites ao banco 0. Corrigindo cada lista para o seu banco real, as 12.790 listas contabilizadas não produzem risco algum e restam 2.235 espaços realmente livres.

Segundo, a geometria estava posta ao contrário. O mapa de origem tem 2.048 px de largura e o da camada anfitriã 1.024, então ele nunca pode ser copiado por posição. Empacotar as oito janelas de fase num atlas de janelas — oito células de 27×15 peças, com o escritor de deslocamento do port mapeando fase para célula — exige 2.012 peças novas e 3.240 das 4.096 entradas de mapa.

Contra 2.223 espaços livres, depois de subtrair doze que uma compilação irmã do Strider já ocupa, a margem é de 211 espaços. As 3.240 células do atlas foram decodificadas de volta e comparadas com o render nativo: zero diferenças de pixel ou de paleta. Os espaços estão reservados no registro de alocação compartilhado.

Isto era um plano de alocação, não um patch publicado: faltava capturar a paleta real do fundo.

Atualização: os meteoros já estão no MSHvsSF (v2)

As duas versões v2 do MSHvsSF já trazem o céu. Ele mantém quatro das oito janelas de fase do MVC1 (0, 2, 4 e 6), cada uma por seis atualizações, na posição que o MVC1 mostra com mais frequência; o paralaxe do cenário não é reproduzido. A animação de paleta está completa: os 36 registros da tabela do MVC1, um a cada quatro atualizações. Cortar as quatro janelas em peças de 16×16 e compartilhar as espelhadas exige 1.019 peças, colocadas só em blocos vazios de Scroll 2 protegidos pelo censo corrigido; cada célula é decodificada de volta sem nenhuma diferença de cor ou de paleta. O mapa, um buffer de paleta e o estado ocupam 16 KB de RAM de vídeo que estavam zerados em todas as amostras de combate, e são limpos quando o modo termina. O céu só aparece enquanto o modo temporizado de uma equipe está ativo, deixa passar os clarões brancos dos Hypers do jogo e devolve a tela ao MSHvsSF quando o último temporizador acaba. Os Hypers normais mantêm o fundo do MSHvsSF.

As duas compilações rodaram no MAME com controles normais: um Hyper normal antes do modo, a ativação, um Hyper com os seus clarões dentro do modo, a ativação da outra equipe com a primeira ainda ativa, os dois finais e a limpeza. Para a de quatro jogadores, o driver de dois jogadores do MAME recebeu a fiação de quatro controles nas portas de entrada: os quatro entraram e P1 e P3 lançaram cada um um Hyper com o próprio controle dentro do modo. Nenhuma v2 tem ainda gravação no FBNeo local.

Atualização: o ∞ do MVC1 (v3)

O MVC1 troca o seu dígito de nível por um sinal de infinito enquanto o Duo dura, e as duas versões v3 do MSHvsSF agora fazem o mesmo durante o modo temporizado de cada lado. A própria rotina do HUD do MSHvsSF continua desenhando o dígito: no fim do código que escreve o nível de cada lado, um gancho confere o bit de modo e o temporizador daquele lado e, enquanto os dois estão ativos, escreve no lugar o sinal de duas peças do próprio MVC1, três pixels à esquerda do dígito. O sinal usa a paleta fixa do HUD do MSHvsSF, os dourados do rótulo LEVEL, porque a paleta dos dígitos fica mudando; o dígito volta quando o modo termina.

As duas compilações v3 repetiram os testes no MAME, e o medidor de cada quadro amostrado foi comparado com o estado do modo naquele quadro. Na de 1 contra 1, 334 de 336 verificações bateram e as outras 2 pegaram a própria atualização do HUD logo depois de uma mudança. Na de quatro jogadores bateram 223 de 228 e 1 pegou o HUD no meio da atualização; as outras 4 são dois quadros isolados na cena mais pesada testada (quatro lutadores, dois Hypers ao mesmo tempo e o céu ativo) em que faltou todo o HUD de baixo por um quadro. É um efeito dos quadros atrasados: a lista de sprites é fixada antes de os registros do HUD serem copiados, e a v2 mede o mesmo atraso nessa cena. Os clipes e as imagens do MSHvsSF foram refeitos na época com as ROMs v3 e as mesmas entradas.

Atualização de 24 de setembro: XMvsSF, MSHvsSF v5 e MVC1 v2

Trailer do Cross Fever v2: XMvsSF, MSHvsSF e MVC1YouTube ↗

O X-Men vs. Street Fighter é o terceiro jogo, com duas versões prévias: 1 contra 1 com Duo (xmv-two-human-full-02, v3) e quatro jogadores (xmv-four-human-full-02, v2). Os comandos são os mesmos dos outros dois: QCB + HP + HK para o modo temporizado, QCF + HP + HK para o Hyper de equipe (no XMvsSF ele se chama Variable Combination) e HP + HK para trocar de lutador.

O início segue o Variable Cross do MVC1: o seu lutador faz a pose de chamada, a própria provocação com a voz, e não pode ser atingido enquanto ela dura; depois aparece a pausa do Variable Combination do XMvsSF e o parceiro entra por trás com o próprio ataque de entrada. Enquanto o modo de um lado dura, o céu de meteoros do MVC1 substitui o cenário, a barra TIME do MVC1 conta o modo daquele lado sobre o medidor de Hyper e o ∞ do MVC1 substitui o número do nível. Dentro do modo os Hypers não têm pausa nem custo, então no Duo um único comando dispara os Hypers dos dois. Quando o tempo acaba, o parceiro sai e o lutador principal fica.

As duas compilações do XMvsSF foram testadas no MAME 0.264 com comandos normais: o Cross das duas equipes, atualização por atualização, e as marcas, a barra TIME, o ∞, o céu e as sombras em cerca de 41.000 quadros com nove formações (Duo) e 52.000 com dez (quatro jogadores), cobrindo os 17 personagens selecionáveis. Esses testes de censo colocaram o medidor no nível 3 com uma escrita de análise no início do combate; os clipes, as imagens e o trailer vêm de outras execuções no MAME, só com comandos normais e sem escritas na memória.

O MSHvsSF v5 começa o modo como o MVC1: a pose com a voz, o corte do Hyper de equipe do MSHvsSF com os retratos dos dois e, depois, o parceiro entra voando por trás com o seu ataque. No início nada é gasto: o medidor aparece cheio enquanto o modo dura e custa duas barras no fim. A v5 também põe as marcas do MVC1: 1P e 2P na de 1 contra 1, e de 1P a 4P sobre cada cabeça na de quatro jogadores. A v4 foi uma compilação interna; tudo o que ela trouxe está na v5. O MVC1 v2 mantém byte a byte os controles, a entrada dos jogadores e o temporizador da v1 e acrescenta as marcas de 1P a 4P sobre cada lutador.

O trailer é uma montagem, não uma prova: cada tomada é uma destas compilações prévias rodando no MAME, com comandos normais e na velocidade própria da CPS-2.

O que «prévia» quer dizer aqui

Os downloads são exatamente os arquivos cujos instaladores passaram por sete casos de PowerShell e pelo instalador em Python, comparados peça por peça com a ROM testada. Fora isso, cada pacote diz o que as gravações cobriram e o que não cobriram. Continua em aberto nos cinco: o elenco completo e as transformações, salvar e carregar, as revanches, o pior caso de objetos e CPU, toques de um único quadro, Windows nativo, quatro controles físicos, a fiação de gabinete e o jogo online com rollback para quatro. Nada disso é afirmado antes de ser testado.

Compartilhe

Cross Fever na placa de arcade: quatro jogadores em X-Men vs. Street Fighter, MSHvsSF e Marvel vs. Capcom, e o Duo do MVC1 com a pose, a entrada voando, o céu de meteoros e o ∞ no medidor. Instaladores gratuitos, só com o patch. morphus56k.com/pt-br/blog/cps2-four-player-cross-fever

Community input · Next release

Help shape the next Cross Fever update

Choose up to 3 priorities. No account needed.