O SharpDroid no Android ganhou em 3 de outubro de 2026 um sistema real de pausa e retomada para jogos executados pelo SharpEmu. O projeto roda a build Linux x64 do emulador de PlayStation 5 em aparelhos ARM64 por meio do FEXCore e de uma camada própria para Android, com acesso direto a Vulkan e AAudio.
A mudança permite sair temporariamente do aplicativo sem manter o guest consumindo CPU em segundo plano. Segundo a medição registrada pelo desenvolvedor com Dreaming Sarah, o uso caiu de aproximadamente 140% de um núcleo para zero durante a pausa, enquanto uma pausa de 308 segundos retomou no mesmo processo sem acrescentar esse intervalo ao relógio do jogo.
SharpDroid no Android usa FEXCore para executar o SharpEmu
Por sua vez, o SharpDroid não é uma simples versão ARM64 recompilada do SharpEmu. O projeto carrega a build Linux x86-64 do emulador e usa o FEXCore para traduzir instruções x86-64 para ARM64 durante a execução.
Dreaming Sarah em captura publicada pelo projeto SharpDroid. Imagem: mircowuffwuff/GitHub.
Ao redor do FEXCore existe uma host layer própria. Ela cuida do carregamento ELF, syscalls, sinais, memória e chamadas de bibliotecas. Para gráficos, uma biblioteca intermediária encaminha as chamadas do SharpEmu para Vulkan no Android. O áudio segue caminho semelhante por AAudio.
Essa arquitetura difere de projetos como o ARMSX3 para Android, que adapta outra base de emulação ao ARM64. No SharpDroid, a proposta é manter o SharpEmu x64 próximo do upstream e traduzir o caminho necessário para o hardware móvel.
SharpDroid no Android pausa threads, áudio e relógio monotônico
Além disso, o novo mecanismo para o guest não se limita a esconder a janela. Quando a pausa entra em ação, as threads do jogo estacionam em pontos controlados e os streams de áudio também param. Além disso, o tempo acumulado em pausa é retirado dos relógios monotônicos entregues ao guest.
Isso evita que um jogo interprete vários minutos fora do aplicativo como tempo de execução contínua. O código também ajusta deadlines monotônicos usados por chamadas como clock_nanosleep e determinados futexes.
Interface da biblioteca de jogos do SharpDroid. Imagem: mircowuffwuff/GitHub.
Android 13 ajuda a preservar o processo em segundo plano
Em Android 13 ou mais recente, o SharpDroid também inicia um foreground service do tipo specialUse enquanto o jogo está ativo. O objetivo é reduzir a chance de o sistema encerrar o processo quando o usuário deixa o aplicativo.
Por outro lado, o desenvolvedor ressalta que voltar ao app não retoma o jogo automaticamente. A retomada depende de uma ação do usuário pela interface ou pelo controle. Além disso, o aplicativo mantém uma cópia do último frame sobre a superfície enquanto o guest volta a apresentar imagem.
Builds do SharpEmu podem ser trocadas pelo gerenciador
Por fim, outro elemento da arquitetura é o gerenciador de builds do SharpEmu. O SharpDroid permite importar payloads diferentes e selecionar uma build específica por jogo. Assim, forks especializados podem ser testados sem transformar toda a aplicação em uma variante separada.
Gerenciador de builds do SharpEmu integrado ao SharpDroid. Imagem: mircowuffwuff/GitHub.
O projeto exige processador ARM64, Android 9 ou superior e GPU com suporte a Vulkan. Ainda assim, o próprio README trata o SharpDroid e o SharpEmu como tecnologias experimentais. Portanto, a existência da camada Android não significa compatibilidade ampla com a biblioteca do PS5.
O avanço acontece enquanto outros projetos de emulação do console também evoluem. O Allves Games acompanha, por exemplo, o KytyPS5 em Windows, Linux e macOS. No caso do SharpDroid, a diferença está em levar a execução para dispositivos Android ARM64 por meio do FEXCore.
Projeto continua experimental
O SharpDroid não inclui jogos, firmware ou outros ativos proprietários do PlayStation. Os testes devem usar arquivos obtidos legalmente pelo próprio usuário. Além disso, o desenvolvedor alerta que builds externas do SharpEmu só devem ser importadas quando a origem for confiável.
Assim, a pausa real resolve um problema importante de uso móvel: o jogo deixa de consumir CPU enquanto o usuário está fora do aplicativo e pode retomar no mesmo processo. Ao mesmo tempo, o recurso preserva a natureza experimental do projeto e não altera as limitações de compatibilidade do SharpEmu.
Fontes: repositório oficial do SharpDroid | commit da pausa no aplicativo | commit da pausa do guest