Desempenho não é o maior número mostrado na tela. O objetivo é manter ritmo previsível, áudio estável, entrada responsiva e temperatura aceitável no aparelho real.
O que medimos
- FPS real: diferença do contador de quadros do núcleo ao longo de uma janela de tempo.
- Frametime: tempo médio por quadro. A 60 FPS, a referência é 16,67 ms; a 30 FPS, 33,33 ms.
- Ritmo: variação entre quadros, que pode ser perceptível mesmo quando a média parece boa.
- Atrasos laterais: carregamento, cache, áudio, armazenamento, temperatura e frequência do processador.
O RetroArch expõe frame_count e core_fps ao rogpOS. Os consumidores calculam o FPS observado a partir dos deltas. Isso separa a taxa declarada pelo núcleo daquilo que foi realmente entregue.
Perfil antes de ajuste
Os ajustes agressivos permanecem desligados por padrão. O perfil estável de SNES busca 60 FPS sem ativar automaticamente runahead, preemptive frames ou política agressiva de CPU. Cada sistema pode ganhar um perfil específico depois que medições e testes físicos sustentarem a mudança.
Técnicas e seus custos
Governor de CPU
O governor performance solicita a maior frequência permitida pela política ativa. Isso pode reduzir variação de latência, mas aumenta consumo e temperatura. O rogpOS prevê ativação durante a sessão e restauração do estado anterior na saída, protegida por trap.
Prioridade de agendamento
SCHED_FIFO pode reduzir interferência do escalonador, mas é opt-in e precisa de fallback para nice. Uma prioridade de tempo real mal aplicada pode prejudicar áudio, entrada ou o próprio sistema.
Runahead e quadros preditivos
Runahead depende de save states rápidos e de folga de CPU. Pedir quadros demais pode produzir engasgos ou comportamento incorreto. Por isso, a configuração é por sistema e começa desligada.
Frameskip
Frameskip pode preservar a velocidade de emulação quando o hardware não acompanha o desenho. Ele também pode tornar o movimento irregular. No PPSSPP, o limite automático precisa respeitar jogos de 30 FPS para não derrubá-los indevidamente para 15 ou 10 FPS.
Cache e trabalho visível
Texturas usam cache limitado. Listas calculam o intervalo visível e evitam reconstruir tudo em cada quadro. Leituras de armazenamento e lançamento de processos ficam fora do renderer. Essa disciplina costuma valer mais do que uma otimização isolada.
Método de validação
- Grave versão, aparelho, sistema, núcleo e conteúdo de teste.
- Registre FPS, frametime, áudio, temperatura e duração da sessão.
- Altere um único recurso atrás de uma flag.
- Repita a mesma sequência e compare a distribuição, não apenas a média.
- Confirme entrada, áudio, retorno ao launcher e restauração do estado anterior.
- Mantenha rollback simples.
Um ganho sem repetição, sem alvo identificado ou sem teste físico continua sendo hipótese.