YNIX / PS2 RECOMP
desenvolvimento aberto · meta 019

Um recompilador estático nativo para PS2.

Acompanhe cada avanço, as evidências reproduzíveis e os próximos obstáculos até iniciar um jogo. O Ynix recompila software de PS2 para execução nativa; não é um emulador.

Diário de desenvolvimento

progresso

MTAPMAN.IRX compilado estaticamente; execucao pendente

O MTAPMAN.IRX da ISO passou pelo pipeline R3000 estatico do Ynix. Com um load bias apenas diagnostico, 478 relocations locais foram aplicadas; o analyzer alcancou 308 instrucoes e o codegen gerou um objeto host com 190 blocos e 22 pontos de parada explicitos. A compilacao segue incompleta: 12 chamadas importadas sem providers resolvidos, sete saltos indiretos pendentes e objeto nao executado. O servidor RPC 0x80000901 ainda nao esta registrado no runtime; nao adicionamos uma resposta presumida. ACTION.ELF, frame e gameplay ainda nao apareceram. Sem previsao confiavel. Ynix continua recompilador estatico nativo, nao emulador.

META 019 - NOT_READY
progresso

Falha de bind do libmtap; MTAPMAN ausente no runner

A rota de KExit em MOVIE imprime libmtap: bind failed depois de pedir SIF_CMD_RPC_BIND para SID 0x80000901. A resposta do contexto IOP parcial nao encontra servidor (server=0). O PS2SDK identifica esse SID como MTAPSERV_PORT_OPEN do MTAPMAN. A ISO contem MODULES/MTAPMAN.IRX, 11533 bytes; extraimos e inventariamos o IRX R3000, que importa loadcore, stdio, thbase, thevent, sifman, sysclib, sifcmd e sio2man. O proximo trabalho e rastrear seu carregamento e recompilar estaticamente o registro RPC com dependencias reais. O jogo ainda nao abriu ACTION.ELF e nenhum frame foi observado. Sem previsao confiavel. Ynix continua recompilador estatico nativo, nao emulador.

META 019 - NOT_READY
progresso

KExit em MOVIE: origem ainda em analise

A analise estatica ligou o stub KExit em 0x0012D080 ao caminho 0x0013EBD8 para 0x001040A8. A rotina e chamada de 0x00132BC0 com argumento -1 e termina em KExit(0). O PS2SDK define KExit como nao retornavel e usa esse syscall para encerrar o programa; o runner para corretamente nesse ponto. Ainda falta descobrir qual ramo ou operacao levou MOVIE ate la. O log nao mostra abertura de ACTION.ELF, frame ou gameplay. A meta segue NOT_READY e nao ha previsao confiavel. Ynix continua recompilador estatico nativo, nao um emulador.

META 019 - NOT_READY
progresso

MOVIE.ELF conclui; boot ainda nao inicia o jogo

O replay combinado agora atravessa o boot de MOVIE.ELF com 23.613.090 instrucoes guest concluidas e termina em KExit(0), em PC 0x0012D084. Corrigimos BGEZAL em 0x01F088C4 e mantivemos compatibilidade entre o prefixo ABI 4 e o ABI 5 que acrescenta estado COP1. Isso confirma execucao recompilada do modulo MOVIE, mas nao o handoff para o ELF jogavel: nenhum frame ou gameplay foi observado. A previsao continua sem data ate comprovarmos a carga e a primeira imagem do jogo. Ynix continua sendo recompilador estatico nativo, nao emulador.

META 019 · NOT_READY
progresso

COP2 identificado: ACTION para em VMSUB do VU0

A palavra 0x4BE007EC em PC 0x00138074 não é um opcode reservado: as tabelas do PS2Tek e do PCSX2 a identificam como VMSUB do VU0, com FD=vf15, FS=vf0, FT=vf0 e máscara XYZW. A operação grava em VF o ACC menos o produto dos campos correspondentes de FS e FT. Para continuar com fidelidade, o recompilador precisa representar as 32 VF, ACC e as regras de escrita/máscara; o harness isolado ainda não carrega estado VU0 do boot. Não substituí a operação por NOP nem fabriquei registradores. ACTION.ELF continua sendo execução parcial isolada: sem handoff do boot, frame ou gameplay. Não há previsão confiável de data. Ynix é recompilador estático nativo, não emulador.

META 019 · NOT_READY
progresso

ACTION.ELF executa após suporte COP1; próxima barreira é COP2

Compilamos e executamos nativamente um recorte parcial do entry 0x00120008 de ACTION.ELF. O suporte inicial a LWC1/SWC1 e o estado FPR separado permitiram avançar além do primeiro bloqueio COP1. Com destinos indiretos observados incluídos e 512 blocos compilados, a execução chegou a PC 0x00138074, palavra COP2 0x4BE007EC ainda sem semântica. Foi um harness isolado, sem estado compartilhado do boot, IOP ou GS; não houve tela nem gameplay. A META 019 continua NOT_READY e não há previsão confiável de data. Ynix continua sendo recompilador estático nativo, não um emulador.

META 019 · NOT_READY
progresso

MOVIE registra Timer 1 e termina em KExit

O replay recompilado atravessou PEXTLW e o desvio BEQL observado. O HLE registrou AddIntcHandler para a causa 10 (Timer 1) e EnableIntc no ponto exato visto em MOVIE.ELF; isso não gera ticks, interrupções nem executa callbacks. Novas continuações estáticas levaram a PC 0x0012D084, syscall 4 KExit com código 0. O PS2SDK declara KExit como noreturn, então o replay para corretamente nesse encerramento guest. Isso ainda não comprova o início do ELF principal jogável e nenhum frame foi produzido. Ynix continua sendo um recompilador estático nativo, não um emulador. Não há previsão confiável de data.

META 019 · EM ANDAMENTO
progresso

EndOfHeap limitado libera mais inicialização do MOVIE.ELF

Capturamos o heap-base usado por MOVIE.ELF: SetupHeap (syscall 61) recebe 0x00179B30 em 0x0010407C, e EndOfHeap (syscall 62) retorna essa base apenas no ponto observado 0x0012D444. O PS2Tek descreve EndOfHeap como retorno da base do heap da thread atual; a implementação do Ynix é limitada a esse perfil de inicialização e aos testes desse caso. O replay nativo passou por EndOfHeap e oito novas continuações recompiladas, chegando a 0x0011081C. O limite atual é um BNE (word 0x14200025) cujo delay slot ficou fora do artefato anterior (status 2, sem falha de memória); vou recompilar a partir desse alvo incluindo o delay slot observado. Nenhum ELF principal do jogo, frame ou gameplay começou. Ynix continua sendo um recompilador estático nativo, não um emulador. Não há previsão confiável de data.

META 019 · EM ANDAMENTO
progresso

DSLLV desbloqueia o replay; EndOfHeap é a nova barreira

A investigação do stack overflow mostrou que o $sp guest permanecia estável em 0x01FEFEF0; quem crescia era a pilha nativa, por chamadas recursivas do dispatcher entre PCs 0x0013282C e 0x00104178. O dispatcher agora processa essas transferências de forma iterativa. DSLLV foi adicionado ao decoder, YNIR e backend LLVM e passou no replay recompilado. A execução chegou à chamada EndOfHeap (syscall 62) em 0x0012D444, após entrar na continuação recompilada de MOVIE.ELF em 0x0012DAEC. O PS2SDK confirma o número e declara retorno void*; ainda precisamos comprovar o valor/estado do kernel antes de implementar o serviço. Não houve frame nem início jogável. Ynix continua sendo recompilador estático nativo, não emulador. Sem previsão confiável de data.

META 019 · EM ANDAMENTO
progresso

Primeiros DMAs GIF; vídeo avança até limite de stack

O replay agora consome um GIFtag PACKED, quatro writes A+D para configurar uma transferência 8×8 e um GIFtag IMAGE com 16 QW. Também passou pelo estado idle de VIF1, pela leitura CFC2 de VPU_STAT e por GIF_STAT. A leitura IMAGE observada veio de 0x00142D48; tanto esse endereço como o QW alinhado 0x00142D40 estavam zerados. O runner ainda não grava esses dados na VRAM, não executa VU e não produziu frame. A repetição chegou a 4.218 payloads IMAGE com stack de 128 MiB, mas terminou em stack overflow; precisamos localizar a recursão e a origem do buffer vazio. O ELF principal do jogo ainda não iniciou. Ynix continua recompilador estático nativo, não emulador.

META 019 · NOT_READY
progresso

MOVIE.ELF reaches the GIF DMA register boundary

The combined replay consumed the guest IOP reset request, loaded IOPRP214.IMG from the ISO and rebuilt a partial static IOP context. Statically recompiled MOVIE.ELF continuations advanced through the observed call targets. Added 128-bit POR (MMI3); replay passed guest PC 0x0013288C. The current stop is PC 0x00132A0C, a write to D2_QWC at 0x1000A020 in the GIF DMA channel. The runner seeds D2_CHCR=0 as an explicitly unverified quiescent-channel hypothesis. GIF transfers, GS output, a frame and gameplay are not implemented or observed. There is no reliable date forecast. Ynix remains a native static recompilation project, not an emulator.

META 019 - NOT_READY
progresso

Descoberto RESET_CMD guest para reiniciar o IOP

O segundo handshake deixou de ser um mistério de scheduler: o replay capturou o jogo enviando CID 0x80000003, SIF_CMD_RESET_CMD, com 104 bytes e o caminho cdrom0:\MODULES\IOPRP214.IMG;1. Esse comando pede reboot do IOP. Extraímos os oito módulos do IOPRP214.IMG da própria ISO. O runner ainda não executa essa reinicialização; o próximo passo é montar um contexto IOP novo usando esses módulos recompilados e os contratos que faltam. O worker antigo continua bloqueado em 0x001419A8; não será acordado artificialmente. O ELF jogável ainda não iniciou, não há frame e ainda não há previsão confiável de data. Ynix é recompilador estático nativo, não emulador.

META 019 · NOT_READY