Ampliar o limite de execucao em cinco vezes nao libera o boot: o guest continua consultando o mesmo evento CDVD sem sinalizacao. Mantivemos o limite curto para diagnosticos rapidos.
Bloqueio
Com fuel 500.000, o replay registrou 2.368 polls de PollEventFlag(event=0, bits=1), todos retornando KE_EVF_COND, avancou 11,96 s virtuais e terminou...
Solução
Comparamos os limites 100.000 e 500.000, confirmamos que o ciclo persistente nao e apenas um teto curto do harness e restauramos 100.000. O proximo tr...
CDVD
Previsão · estimativaSem data confiavel; o boot ainda nao atravessou a inicializacao CDVD/IOP.
O runner ultrapassou SetAlarm/CancelAlarm e revelou o proximo bloqueio: CDVDMAN consulta repetidamente um evento que permanece sem o bit esperado. O replay termina por limite de instrucoes sem ler setores do jogo.
Bloqueio
O caminho guest faz PollEventFlag(event=0, bits=1, mode=0x10), recebe KE_EVF_COND em 448 chamadas e mantem o byte de estado 0x0015A62D em zero. O repl...
Solução
Implementamos o relogio virtual, SetAlarm, CancelAlarm e DelayThread no probe. Uma captura esparsa agora mostra o retorno real do guest e distingue ti...
CDVD
Previsão · estimativaSem data confiavel; ainda falta atravessar a inicializacao CDVD/IOP.
O runner nativo inicializa CDVDMAN, SIFCMD e alcança o entry do CDVDFSV. O próximo bloqueio é o alarme de timeout que protege o comando CDVD.
Bloqueio
A execução guest parava no import thbase v1.2 ordinal 35 (SetAlarm), no stub 0x0013BA58, sem registrar argumentos nem o estado do relógio.
Solução
Instrumentamos o import e confirmamos relógio de 15 segundos (0x20F58000), callback guest 0x00133768 e argumento 0x0013D5C8. A fonte do PS2SDK identif...
O fluxo de preparação agora reutiliza os IRX extraídos da ISO após limpeza dos artefatos e recompila as entradas guest de CDVDMAN necessárias para responder ao devctl 0x4391.
Bloqueio
A pasta de extração antiga do IOPRP não existe mais, e a lib nativa usada pelo helper não continha a API de scheduler atual. O probe ainda parava em i...
Solução
Os scripts agora usam toy-story-source/iop-modules como fallback, geram o inventário SIFCMD quando ausente, e a preparação recompila CDVDMAN module st...
O replay recompilado inicializa as duas filas RPC reais do FILEIO e identifica a primeira chamada CDVD de devctl.
Bloqueio
O scheduler aceitava apenas uma thread fixa, bloqueando a segunda fila. Depois disso, a thread seguinte parava em IOMAN devctl para cdrom0: comando 0x...
Solução
O provider SetRpcQueue valida a thread guest corrente e encadeia filas na estrutura SIFCMD guest em 0x00103800. O probe confirmou os servidores SID 0x...
O replay recompilado agora copia para a RAM IOP a chamada FILEIO real observada no EE: CID RPC_CALL, funcao 0xFF e buffers de resposta. O runner deixou de encerrar com access violation e para no WaitSema correspondente.
Bloqueio
O runner ainda nao despacha o pacote recebido pelo worker SIFCMD/FILEIO recompilado. Sem resposta guest e conclusao RPC_END, o EE fica esperando; aind...
Solução
Corrigido o encerramento do bridge para ocorrer antes da destruicao da RAM EE e instrumentada a criacao dos semaforos. O trace PCSX2 confirma o compor...
O callback guest INIT_CMD define CMDINIT e o worker SIFCMD recompilado envia um SET_SREG de 24 bytes ao buffer EE observado no trace.
Bloqueio
O probe anterior acordava o worker com evento injetado pelo harness, sem executar o callback INIT_CMD; por isso o SIFCMD mantinha o destino EE em zero...
Solução
O probe agora chama o handler guest recompilado, com pacote INIT_CMD reconstruído pelo contrato PS2SDK e pelo endereço EE 0x93640 observado na tag SIF...
O sceSifInitRpc recompilado submeteu um descriptor IOP→EE e gerou o pacote SET_SREG do próprio guest: índice 0, valor 1.
Bloqueio
O worker FILEIO aguardava CMDINIT. Depois do evento observado no trace, o initRPC avançou e parou no envio de DMA IOP→EE. O probe não possui a RAM EE...
Solução
Executamos SIFCMD e FILEIO recompilados, entregamos ao event flag o CMDINIT observado e registramos o descriptor e os seis words do pacote. O DMA foi...
Executamos os módulos SIFCMD e FILEIO e iniciamos os workers recompilados. Com o evento CMDINIT observado no trace PCSX2, o InitRpc guest avançou até solicitar um DMA IOP→EE.
Bloqueio
O probe isolado parava no WaitEventFlag do InitRpc porque não recebia o evento CMDINIT. Após liberar esse evento, o próximo limite é o sceSifSetDma: o...
Solução
Carregamos e executamos os objetos estáticos guest de SIFCMD e FILEIO, registramos os contratos de threads e eventos necessários e usamos o CMDINIT ob...
O runner nativo agora conecta RAM EE e IOP por SIF DMA e confirma os dois descritores reais do RPC FILEIO copiados byte a byte. Uma continuacao recompilada alcanca WaitSema(3); a resposta guest FILEIO ainda falta.
Bloqueio
O replay anterior parava em sceSifSetDma porque o runner parcial nao tinha RAM IOP nem submitter SIF. Depois da transferencia, o jogo aguarda o semafo...
Solução
Adicionei um runner diagnostico usando YnixSifDmaBridge e uma RAM IOP separada mapeada. O payload de 8 bytes chegou a 0x41378 e o RPC_CALL de 64 bytes...
O trace PCSX2 confirma que o FILEIO rejeita o RPC 0xFF e devolve dados ao EE; o boot continua após sinalizar o semáforo.
Bloqueio
O replay nativo avançou pelo bind FILEIO, mas ainda não reproduz a resposta guest do RPC 0xFF e não tem bridge EE-IOP ativo.
Solução
Filtrei o log existente sem recompilar o PCSX2. O trecho mostra o pedido de 64 bytes em 0x19600, a mensagem guest "unrecognized code ff", uma resposta...
O replay nativo passou pelo INIT_CMD e pelo RPC_BIND FILEIO, alcançando a chamada seguinte com dois descritores DMA observados.
Bloqueio
O runner EE parcial ainda não registrava um submitter SIF-DMA, então a chamada parava com MMIO não suportado antes de entregar o pedido ao IOP.
Solução
A instrumentação agora imprime cada descritor rejeitado. Foram confirmados o envio dos 8 bytes de parâmetros ao buffer FILEIO e do pacote RPC de 64 by...