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.
Corrigi a versão do ABI gravada pelo LLVM: o estado nativo agora reporta ABI 10, compatível com os campos COP0 usados no reset EE.
Bloqueio
O harness inicializava ABI 10, mas a função LLVM sobrescrevia o campo com 9. Isso mascarava a versão efetiva do estado durante a execução nativa.
Solução
O backend passou a gravar ABI 10. Recompilei ynix_core e o CLI, gerei novamente o executável nativo e repeti o prefixo da BIOS: abi=10, 11 instruções...
Ynix agora recompila e executa em código nativo as primeiras 11 instruções contínuas do reset EE da BIOS SCPH-39001, passando por SYNC.P e pelas gravações de Config, Status, Count e Compare.
Bloqueio
O perfil estrito do compilador esparso desabilitava SYNC.P. O reset EE parava em 0xBFC0080C, antes de aplicar o estado COP0 usado pelo BIOS.
Solução
Adicionei o opt-in --bios-ee-reset-profile, aceito somente para as 11 palavras e PCs exatos conferidos na ROM local. O harness x64 executou o trecho a...
O caminho nativo da BIOS agora reconhece as escritas COP0 observadas de Config, Status, Count e Compare; o harness recompilado confirmou Config 0x00073003 após leitura de volta.
Bloqueio
A análise do reset EE parava no MTC0 Config em 0xBFC00808 e não preservava o estado escrito pelo código da BIOS.
Solução
Implementei encodings COP0 estreitos no decoder, no YNIR de referência e no lowering LLVM. O ABI nativo v10 nomeia os slots de estado usados sem mover...
A análise do reset vector da BIOS agora distingue a rota EE pelo PRid R5900 0x2E20, e o Ynix compila a instrução MFC0 PRid para código nativo x64.
Bloqueio
Sem a leitura correta de COP0 PRid, o analisador não explicava por que a BIOS escolhe a rotina EE em 0xBFC00800 em vez da rota alternativa em 0xBFC020...
Solução
Implementei a instrução MFC0 PRid de forma restrita no decoder, no YNIR de referência e no backend LLVM. A palavra observada no reset vector foi recom...
A entrada do SIFCMD presente na BIOS foi extraída, rebased para a base derivada do IOPBTCONF e executada por código nativo recompilado. O caminho avançou até a espera pela inicialização EE–IOP.
Bloqueio
A execução isolada do SIFCMD chega a sceSifInit e consulta MSFLAG. Sem executar o produtor EE e transferir esse estado, a chamada para com status 14;...
Solução
Usei o SIFCMD do ROMDIR da BIOS, apliquei 243 relocations locais na base derivada 0x1A900, compilei estaticamente o entry 0x1A9D0 e rodei em RAM IOP c...
Reconstruí o pacote IOP da ISO 007 e executei o entry do SIFCMD por recompilação estática nativa. O código chegou a sceSifInit e aguarda uma transferência real do EE.
Bloqueio
ACTION parava ao consultar SUBADDR, pois o valor do IOP e o sinal CMDINIT não estavam estabelecidos. O entry do SIFCMD depende do MSFLAG do EE; sem es...
Solução
Reextraí os oito módulos do IOPRP214.IMG, rebased as 282 relocations locais do SIFCMD em base explicitamente diagnóstica 0x00100000, compilei 131 inst...
No ACTION.ELF recompilado, o perfil diagnóstico atravessou a configuração do canal SIF0 e chegou à leitura de SIF_REG_SUBADDR, após registrar o handler e habilitar o canal 5.
Bloqueio
O runtime ainda não executa o lado IOP/SIFCMD neste caminho. O valor de SIF_REG_SUBADDR e a base do buffer IOP permanecem desconhecidos; preencher ess...
Solução
Implementei call sites exatos e restritos para sceSifSetDChain, AddDmacHandler, EnableDmac e sceSifGetReg. O ensaio usa hipóteses explícitas para CHCR...
O caminho nativo parcial do ACTION.ELF passou por três instruções VSQRT observadas e completou 398.278.232 instruções antes da primeira leitura SIF0_CHCR.
Bloqueio
O runtime ainda não conhece o estado do canal DMA SIF0 em 0x1000C000. A execução para nessa leitura com erro MMIO explícito; não há evidência suficien...
Solução
Adicionei ao decodificador, YNIR e backend nativo apenas os três encodings VSQRT encontrados no caminho, com estado Q e flags VU0. Preservei SIF0 como...
Com o CFG principal ampliado, a execução parcial de ACTION.ELF completou 275.040.751 instruções e chegou a 0x001F8AB0, sem erro guest ou fault de memória.
Bloqueio
Os limites menores do CFG principal paravam em fronteiras não compiladas e exigiam raízes observadas incrementais. O módulo ainda é parcial e retorna...
Solução
Aumentei o teto de entrada para 4.096 blocos, com 2.580 alcançados, e mantive 5.048 blocos de raízes observadas. O artefato gerou 37.536 instruções e...
A execução parcial do ACTION.ELF completou 251.108.802 instruções e alcançou 0x0020B6F0, sem guest_error ou falha de memória.
Bloqueio
O alvo seguinte ainda está fora do CFG compilado, então o runner para com status 4. A execução não comprova o boot completo do jogo.
Solução
Incluí 0x0020C8A4 como raiz observada, ampliei o fuel para 400 milhões e mantive 8.192 blocos para raízes observadas e 1.024 na entrada. O artefato co...