Projeto experimental de engenharia reversa e recompilação estática. O objetivo é traduzir o executável original para código nativo em Windows e Linux, sem substituir o console por um emulador.
Pesquisar o caminho técnico para traduzir o software do console para uma execução nativa em Windows e Linux. O progresso será registrado com evidências, limites e bloqueios reais.
A inclusão do bloco confirmado em 0x0012ACA4 permitiu ao ACTION recompilado avançar 18.035.527 instruções e alcançar 0x0012B3A4, sem erro guest nem falha de memória.
Bloqueio
O CFG parcial omitira o bloco sequencial 0x0012ACA4, destino do fluxo quando o desvio em 0x0012AC9C não era tomado.
Solução
Confirmei os opcodes no ELF, acrescentei 0x0012ACA4 como raiz observada e recompilei o artefato ABI 8, preservando os limites explícitos do recorte.
O recorte nativo parcial do ACTION.ELF passou pela inicialização observada do GS e pela configuração da causa INTC 0, executou rotinas guest chamadas indiretamente e avançou 53.038.292 instruções até o destino ainda não compilado 0x002F82B0.
Bloqueio
A escrita inicial combinada GS_CSR=0xB (SIGNAL, FINISH e VSINT) não era aceita pelo perfil, que só reconhecia ACKs individuais. Depois dessa barreira,...
Solução
Implementei o ACK combinado GS_CSR=0xB apenas no PC observado 0x0012A6E4 e registrei, em chamadas exatas do ACTION, AddIntcHandler(0), EnableIntc(0) e...
O ACTION.ELF parcial passou pela inicialização do DMAC e executou as primeiras transferências do canal GIF com o perfil nativo limitado do Ynix.
Bloqueio
O harness não ativava o parser GIF já existente e faltavam registradores básicos de VIF, GIF, IPU e DMAC. O CHCR=0x101 do guest era interrompido antes...
Solução
Adicionei estado para configuração dos canais DMA e registradores globais DMAC, respeitando os campos do PS2Tek. A opção --profile-d2-gif habilita exp...
A recompilação estática do ACTION.ELF agora executa a instrução COP2 VSUB observada e retoma as trocas de thread com ABI 8. A sonda parcial avançou até o destino dinâmico 0x00348890, fora do código compilado.
Bloqueio
O subset parava em VSUB.xyzw vf31,vf0,vf0 porque o estado e a semântica VU0 ainda não estavam modelados. A validação também revelou que o backend escr...
Solução
Anexei ao ABI 8 os registradores vetoriais VU0 e flags, implementei somente o encoding observado (vf0={0,0,0,1}; resultado vf31={0,0,0,0}; flags de ze...
O runtime ABI 7 agora preserva HI/LO e retoma a thread escolhida pelo scheduler no subset compilado. A sonda parcial do ACTION.ELF avancou ate a primeira instrucao COP2/VU0 ainda sem semantica.
Bloqueio
O subset de 1.024 blocos parava em MTLO por falta de lowering LLVM; depois dessa correcao, a execucao para em VSUB COP2 (0x4BE007EC, PC 0x00138074) ap...
Solução
Implementei MTHI/MTLO com HI/LO persistentes em ABI 7, dispatch por PC para retomar uma thread e repeticao limitada no harness. scripts/build.ps1 comp...
A recompilação parcial atual do ACTION.ELF alcança a inicialização da thread principal e identifica um limite do runner: após uma troca cooperativa, o artefato retorna o alvo de dispatch sem retomar a thread selecionada.
Bloqueio
O backend emite status 16 (MODULE_DISPATCH) depois do commit da troca de thread, mas o harness direto gerado chama ynix_run uma única vez e encerra. O...
Solução
Recompilei ACTION.ELF com ABI 6 e limite de 512 blocos; a execução diagnóstica, com 100 milhões de instruções disponíveis, executou 14.108.586 até o h...
O harness entra diretamente no MOVIE recompilado, sem executar BIOS EE nem fornecer TLB; o MOVIE nao configura suas proprias entradas TLB no segmento executavel.
Bloqueio
O runtime mapeia RAM baixa diretamente para os mesmos offsets fisicos. O replay prova o resultado desse perfil, mas nao comprova a traducao virtual at...
Solução
Auditei a inicializacao do CLI, o ABI de YnixNativeState e o PT_LOAD executavel do MOVIE: estado nasce zerado com PC/SP/fuel e nenhuma instrucao TLBR/...
PS2Tek lista VA 0 para PA 0 na tabela EE, mas classifica kuseg como TLB-mapeado; a referência não revela a entrada ativa no boot do jogo.
Bloqueio
O perfil Ynix traduz endereços EE baixos diretamente para RAM física e não modela TLB ou exceções de refill/invalid. A captura confirma que esse perfi...
Solução
Corrigi a análise para separar tabela geral, regra TLB e convenção de NULL. Não desmapeei página zero por suposição: o jogo acessa o descritor em 0x10...
A auditoria do objeto confirma que a lista global vazia pula a atribuição de payload no registro tipo 9; um registro vizinho mostra a atribuição funcionando no outro caminho.
Bloqueio
No replay, 0x00149BC0 está vazio. O desvio em 0x00114588 pula o store 0x001145BC, deixando 0x009BDA64 nulo. A limpeza posterior trata o tipo 9 como de...
Solução
Ampliei o watch guest para 0x009BDA40..0x009BDB3F. Ele confirma que o registro vizinho 0x009BDA70 recebe 0x009BE040 em +0x24 via 0x00113FB4, enquanto...
A captura simultânea mostra que o buffer 0x009BDA40 segue registrado no gerenciador quando o guest inicia o zero-fill em endereço nulo.
Bloqueio
O objeto guest 0x009BDA40 usa o campo +0x24 como destino e esse campo vale zero. O zero-fill apaga o descritor low-RAM; o replay depois para em 0x0010...
Solução
Ampliei a auditoria SQ para registrar no mesmo instante as listas +0x20 e +0x30, o buffer +0x24, o limite +0x28 e words do objeto até +0x7C. O log con...