YNIX / RECOMP
Ynix Recomp / PlayStation 2
Em andamento

Ynix PS2 Recomp

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.

Alvo: WindowsAlvo: Linux
Ver diário e changelog
objetivo

Recompilação nativa

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.

estado

Desenvolvimento ativo

208 atualizações públicas vinculadas a esta área.

histórico do console

Atualizações e changelog

208 registros
Marcos

Reset EE da BIOS: primeira sequência contínua executada nativamente

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...
META 019 Abrir atualização
Marcos

Reset EE recompila e preserva escritas COP0 observadas

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...
META 019 Abrir atualização
Marcos

Reset da BIOS identifica a rota EE do boot

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...
META 019 Abrir atualização
Marcos

SIFCMD da BIOS executado na base de boot derivada

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...
META 019 Abrir atualização
Avanços

META 019: SIFCMD recompilado alcança o handshake SIF

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...
META 019 Abrir atualização
Avanços

ACTION recompilado chega ao handoff SIF0 com o IOP

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...
META 019 Abrir atualização
Avanços

ACTION recompilado supera VSQRT e alcança SIF0

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...
META 019 Abrir atualização
Avanços

CFG de entrada ampliado leva ACTION a 275 milhões de instruções

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...
META 019 Abrir atualização
Avanços

ACTION cruza 250 milhões de instruções sem erro guest

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...
META 019 Abrir atualização
Avanços

ACTION alcança 233 milhões de instruções recompiladas

O recorte parcial de ACTION.ELF completou 233.868.865 instruções e chegou a 0x00213DFC, sem guest_error ou falha de memória.

Bloqueio
O alvo seguinte ainda está fora do CFG nativo parcial; o runner retorna status 4 nessa fronteira. Isso não representa boot completo ou jogo aberto.
Solução
Adicionei a fronteira 0x00221E80 às raízes observadas e usei limite de 8.192 blocos, mantendo 1.024 na entrada principal. O artefato atual compilou 4....
META 019 Abrir atualização