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
Avanços

Entry EE recompilado chega ao polling SIF, sem SIFINIT

O entry recompilado do ELF do jogo executou 20 milhões de instruções com SIFCMD recompilado em paralelo. A EE leu SMFLAG=0 e chegou a um polling guest; a execução parou no limite de fuel, sem iniciar o jogo.

Bloqueio
O runner anterior não inicializava SIFCMD antes da entrada EE, então sceSifGetReg(4) não encontrava um valor SIF compartilhado. Mesmo com o estado ini...
Solução
Adicionei runner reduzido com entry real SLUS_202.65 e entry recompilado de SIFCMD no mesmo contexto. O SIFCMD bloqueia em 0x00101958 com MSFLAG=0; a...
META 019 Abrir atualização
Avanços

LOADFILE recompilado registra e responde ao próprio RPC bind

Recompilamos os roots SIFCMD e LOADFILE da ISO e executamos o harness reduzido: LOADFILE registrou SID 0x80000006 e respondeu ao bind CID 0x80000008.

Bloqueio
Depois da limpeza, o harness de threads falhava antes de carregar os módulos porque limitava a memória EE a 32 MiB, sem espaço para os 16 KiB de scrat...
Solução
Ajustei o orçamento para 64 MiB mantendo a RAM guest em 32 MiB e recriei os roots estáticos por scripts/prepare-goal019-loadfile-thread.ps1. O runner...
META 019 Abrir atualização
Avanços

Runner preserva IOP até o SIFINIT guest

O runner combinado agora mantém o contexto IOP quando SIFCMD recompilado aguarda o SMFLAG real da EE e o retoma após a escrita guest de SIFINIT.

Bloqueio
No reboot, setup_iop tratava a espera inicial legítima de SIFCMD como erro fatal e destruía o contexto antes de a EE concluir o carregamento dos módul...
Solução
O status bloqueado agora preserva o contexto. O hook validado de sceSifSetReg encaminha SMFLAG, retoma SIFCMD no ponto de espera e, após sua conclusão...
META 019 Abrir atualização
Avanços

SIFCMD recompilado confirma espera pelo handshake guest

O SIFCMD recompilado estaticamente chega à chamada guest sceSifInit e bloqueia aguardando MSFLAG, com perfil IOP explicitamente zerado.

Bloqueio
O harness anterior não registrava o perfil de reset e parava em MMIO; isso não distinguia um estado inválido da espera esperada pelo handshake SIF.
Solução
O harness agora semeia boot_status=0 e MSFLAG=0, e scripts/run-goal019-sifcmd-entry.ps1 reproduz extração, recompilação estática e execução do entry S...
META 019 Abrir atualização
Avanços

SMFLAG guest da EE conectado ao MSFLAG do IOP

O runner combinado não injeta mais SIFINIT diretamente. O HLE agora encaminha ao IOP a escrita SMFLAG realmente feita pelo guest EE.

Bloqueio
O runner acordava sceSifInit com uma sinalização direta de MSFLAG, sem comprovar uma escrita SIFINIT da EE.
Solução
Adicionei um hook de SIF flag ao HLE sceSifSetReg. O ID 4 validado é propagado ao MSFLAG IOP; se a EE escreveu antes da criação do contexto IOP, o run...
META 019 Abrir atualização
Avanços

Providers SIFMAN conectados; MTAPMAN aguarda inicialização SIF

Os entries recompilados de SIO2MAN e MTAPMAN executam; os workers agora alcançam o caminho guest de inicialização SIF.

Bloqueio
O runner isolado não registrava os imports SIFMAN do MTAPMAN; depois de ligá-los, os workers aguardam a inicialização SIF porque o handshake que defin...
Solução
Identifiquei sifman#29 como sceSifCheckInit e sifman#5 como sceSifInit e conectei os providers PS2SDK existentes. O guest verifica o estado, chama SIF...
META 019 Abrir atualização
Avanços

SIO2MAN e MTAPMAN executam seus entries recompilados

Depois da limpeza do build, o runner mínimo recompilou e executou os entries guest de SIO2MAN e MTAPMAN a partir da ISO 007. Os dois retornaram status 0.

Bloqueio
O runner parava no reset SIO2 em 0xBF808268 porque não habilitava o perfil limitado já existente. Depois disso, um worker MTAPMAN ainda para em uma im...
Solução
Habilitei no harness apenas o perfil documentado de reset SIO2 e executei os entries nativos recompilados. SIO2MAN completou 130 instruções; MTAPMAN c...
META 019 Abrir atualização
Avanços

MTAPMAN recompilado após limpeza de build

MTAPMAN e os exports SIO2MAN necessários voltaram a gerar objetos nativos a partir da ISO 007 após a limpeza de build.

Bloqueio
A limpeza removeu llvm-as e llc, impedindo o codegen R3000 embora o LLVM IR fosse válido. MTAPMAN também depende de imports e destinos indiretos ainda...
Solução
O comando iop compile-relocated ganhou codegen alternativo direto com clang para COFF x64, identificado no manifesto. Reextraí os dois IRX pelos exten...
META 019 Abrir atualização
Marcos

Reset da BIOS: replay nativo até TLBP

O replay nativo do reset EE avançou até TLBP: 29 instruções concluídas, sem fault, PC final 0xBFC00874.

Bloqueio
O fluxo parava no primeiro SYNC.P, e o backend ainda não representava as gravações COP0 da TLB nem o probe observado no BIOS.
Solução
Adicionei lowering nativo limitado às instruções e ao PC confirmados na ROM, ABI v11 para os cinco campos COP0 de TLB e aceitação restrita da escrita...
META 019 Abrir atualização
Avanços

ABI nativo corrigido e confirmado no reset EE

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