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

Limpeza e organização estrutural do repositório

Removemos 9,66 GB de saídas antigas do alvo 007, mantivemos o toolchain e os artefatos ativos do Toy Story 3, e organizamos a documentação e os módulos CMake.

Bloqueio
Builds e replays históricos ocupavam mais de 12 GB em build/, com centenas de diretórios de artefatos temporários. A documentação tinha um diário ativ...
Solução
Criamos scripts/clean-generated.ps1 com modo de prévia e preservação explícita do LLVM instalado e do build parcial atual do Toy Story. Foram removido...
Manutenção do repositório Abrir atualização
Avanços

Toy Story 3: primeira execução nativa parcial

A compilação parcial do SLUS_219.31 passou pelo loop inicial e pelas criações de semáforo, chegando ao syscall SetSyscall do PS2.

Bloqueio
O loader rejeitava segmentos PT_LOAD vazios válidos. Após essa correção, o runtime parou em CreateSema e, depois de modelar o contrato observado, avan...
Solução
O compilador ignora apenas PT_LOAD com filesz e memsz iguais a zero. O perfil Toy Story 3 compila 256 blocos nativos e trata CreateSema somente no PC...
META 019 — Toy Story 3 Abrir atualização
Avanços

Trace avançado do PCSX2 e avanço no boot de 007

A nova captura do PCSX2 confirma a sequência do segundo reboot do IOP até o carregamento do front-end main_menu. O Ynix avançou a execução estática de MOVIE até a próxima fronteira observada, sem alcançar ainda o reset do IOP.

Bloqueio
O log avançado contém 2.134 leituras CDVD e os marcos de ACTION.ELF e main_menu, mas não registra eventos de EE Syscalls, SIF/RPC ou espera de threads...
Solução
Documentei os marcos PCSX2 com horários e acrescentei ao pipeline as continuações guest observadas 0x0010EE14, 0x0010EE70 e 0x0010EE90. O replay integ...
META 019 Abrir atualização
Avanços

Trace do PCSX2 mapeia a chegada ao menu principal do 007

O log do PCSX2 fornecido confirma a sequência do 007 até a carga de ACTION.ELF e do BSP main_menu. A execução isolada atual do entry ACTION no Ynix ainda para antes de apresentar um frame.

Bloqueio
Faltava um marco comportamental confirmado para a transição após MOVIE. O log PCSX2 não contém registros completos de syscalls, registradores ou threa...
Solução
Documentei a ordem observada: fim do filme, reboot IOP via IOPRP214.IMG, carga de módulos, entrada ACTION.ELF 0x00120008 e BSP main_menu. Correlacione...
META 019 Abrir atualização
Avanços

META 019: chamada RPC corrigida e CDVD inicializado

Corrigimos a preservacao do servidor RPC e implementamos ReferThreadStatus conforme o estado modelado do scheduler. O replay agora conclui sceCdInit, le MOVIE.ELF pela cadeia guest e avanca por continuacoes estaticas ate 0x00114E14.

Bloqueio
O fechamento de RPC_CALL sobrescrevia server/buf/cbuf do cliente com campos vazios da resposta, e o ordinal 22 de thbase (ReferThreadStatus) nao estav...
Solução
A conclusao de RPC_CALL preserva os dados de bind do cliente, e ReferThreadStatus agora fornece a estrutura documentada para threads conhecidas, resol...
META 019 Abrir atualização
Avanços

Correção META 019: origem da IRQ SIO2 e novo RPC sem servidor

A IRQ 17 do avanço #162 foi disparada pelo perfil SIO2 limitado após o probe guest de porta desconectada. O handler SIO2MAN recompilado executou e permitiu a conclusão do RPC MTAPMAN; o próximo pedido SIF ainda chega com server=0.

Bloqueio
O resumo #162 não deixava explícito que o estado de porta desconectada e a IRQ 17 vieram do perfil limitado do runtime. Sem essa distinção, o avanço p...
Solução
Corrigi o registro técnico: o perfil respondeu ao probe observado com RECV1=0x1D100 e seis bytes 0xFF, deixou IRQ 17 pendente e executou o handler gue...
META 019 Abrir atualização
Avanços

META 019: IRQ SIO2 guest libera RPC MTAPMAN

A IRQ 17 do SIO2MAN agora executa o handler guest recompilado, sinaliza o evento 0x2000 e permite que o RPC MTAPMAN conclua com RPC_END. A EE ultrapassa WaitSema(38) e chega a outro pedido SIF RPC ainda sem servidor associado.

Bloqueio
A espera guest por evento 6 não cedia o scheduler cooperativo, e embora o SIO2MAN registrasse/habilitasse IRQ 17, o runtime não tinha o endereço do ha...
Solução
O harness agora cede o scheduler para a espera observada de evento 6/bit 0x2000 e vincula o handler recompilado 0x00160550 depois que o SIO2MAN guest...
META 019 Abrir atualização
Avanços

META 019: SIO2MAN guest ultrapassa a escrita de controle

Corrigi a reinicialização acidental do estado SIO2 quando PADMAN habilitava novamente o perfil. O replay agora aceita o fluxo de controle guest e avança para os registradores de transferência; o novo bloqueio é a espera pelo evento SIO2 0x2000.

Bloqueio
O harness chamava a habilitação do perfil SIO2 ao carregar MTAPMAN e novamente ao carregar PADMAN. A segunda chamada zerava o registrador de controle...
Solução
A habilitação agora é idempotente e preserva o estado existente. O replay passou da escrita em PC 0x00160020, observou configuração dos registradores...
META 019 Abrir atualização
Avanços

Correção do RPC pendente: handler é do MTAPMAN

Corrigida a atribuição do RPC que antecede WaitSema(38): o handler 0x00151094 pertence ao MTAPMAN, e o server 0x00151E78 registra o SID 0x80000901.

Bloqueio
Uma etiqueta genérica do trace identificava o handler guest 0x00151094 como CDVDFSV, levando a uma atribuição incorreta do bloqueio observado depois d...
Solução
O trace agora usa o rótulo neutro IOP_guest_rpc_call. O registry guest confirma MTAPMAN; sua rotina sinaliza evento 6 com bits 0x10 e aguarda bits 0x2...
META 019
Previsão · estimativaSem previsão confiável; ainda não há abertura de ACTION.ELF nem primeiro frame.
Abrir atualização
Bloqueios

Boot MOVIE bloqueia em WaitSema sem thread EE pronta

O guest chegou a WaitSema na rotina MOVIE. O semáforo 38 existe com contagem zero, mas só há uma thread EE registrada e nenhuma thread pronta para receber a troca; o jogo ainda não foi aberto.

Bloqueio
A chamada em 0x0012D4A4 tenta esperar no semáforo 38 depois de 0x0012F780 retornar diferente de zero. O scheduler não encontra thread EE pronta e o ru...
Solução
Instrumentei os caminhos de WaitSema e reproduzi o bloqueio: thread atual EE 1 em execução, semáforo 38 zerado e nenhuma thread pronta. Vou rastrear o...
META 019 Abrir atualização