ShadPS4 – Emulador de PlayStation 4
(github.com/shadps4-emu)- shadPS4 é um emulador de PlayStation 4 em estágio inicial, escrito em C++, com suporte a Windows, Linux e macOS
- O repositório contém apenas o núcleo do emulador e não inclui GUI; por isso, usuários finais comuns devem baixar separadamente o QtLauncher
- Atualmente, ele consegue executar alguns jogos, como Bloodborne, Dark Souls Remastered e Red Dead Redemption, mas o projeto deixa claro que, por estar em estágio inicial de desenvolvimento, é difícil esperar uma experiência completa
- A compilação é orientada por documentações para Docker, Windows, Linux e macOS; no macOS, é necessário macOS 26.0 ou superior, e Macs com Intel não são compatíveis
- Para que os jogos funcionem corretamente, alguns módulos de firmware do PS4 devem ser colocados na pasta
sys_modules; esses módulos devem ser extraídos de um console PlayStation 4 de propriedade legal
Natureza do shadPS4 e público-alvo
- shadPS4 é um emulador de PlayStation 4 em estágio inicial que roda em Windows, Linux e macOS, escrito em C++
- Este repositório fornece o núcleo do emulador e não inclui GUI
- Usuários finais que precisam de GUI devem usar o QtLauncher
- Para solução de problemas ou instruções de uso, consulte a documentação Quickstart
- Para verificar se jogos funcionam, há o shadPS4 Game Compatibility
Estado atual de funcionamento e direção de desenvolvimento
- O shadPS4 deixa claro que está em estágio inicial de desenvolvimento, portanto é difícil esperar uma experiência de execução perfeita
- Exemplos de jogos atualmente executáveis incluem:
- Bloodborne
- Dark Souls Remastered
- Red Dead Redemption
- além de vários outros jogos
- O projeto começou por diversão e, devido ao tempo livre limitado, pode levar algum tempo até que jogos mais complexos sejam executados
- A equipe de desenvolvimento afirma que continuará com atualizações pequenas e regulares
Compilação e requisitos de plataforma
- Builds em contêiner com Docker e VSCode seguem as Docker Build Instructions
- Há documentação de compilação por plataforma:
- Para executar o shadPS4 no macOS, é necessário macOS 26.0 ou superior
- Macs com Intel não são compatíveis
Modo de execução e entrada
- A lista de comandos e a explicação detalhada de cada comando podem ser conferidas na saída de
--help - Padrões de execução usados com frequência incluem:
shadPS4 CUSA00001: procura a pastaCUSA00001na lista de pastas de jogos instalados e a inicializashadPS4 --fullscreen true --config-clean CUSA00001: o argumento do jogo fica, por padrão, no finalshadPS4 -g CUSA00001 --fullscreen true --config-clean: permite especificar diretamente o argumento do jogo com-gshadPS4 /path/to/game.elf: inicializa diretamente um arquivo ELF do PS4shadPS4 CUSA00001 -- -flag1 -flag2: passa flags para oargvdo executável do jogo
- Para testes, depuração e relato de issues, consulte a Debugging documentation
- Os atalhos de teclado oferecem suporte a contador de FPS, informações de depuração de vídeo, tela cheia, captura do RenderDoc e captura de screenshot
- Controles Xbox e DualShock funcionam sem configuração adicional
- A entrada de teclado e mouse pode ser personalizada no botão Controller do menu de configurações
- Bindings personalizados são salvos por jogo
- Há suporte a até 3 teclas por binding, botões do mouse e movimento do mouse mapeado para entrada de joystick, entre outros
Arquivos de firmware e condições legais
- O shadPS4 pode carregar alguns arquivos de firmware do PlayStation 4
- Os módulos de firmware compatíveis devem ser colocados na pasta
sys_modulesdo shadPS4 - Os módulos compatíveis incluem
libSceAudiodec.sprx,libSceFont.sprx,libSceJpegDec.sprx,libSceJson.sprx,libSceLibcInternal.sprx,libScePngEnc.sprx,libSceRtc.sprx,libSceXml.sprx, entre outros - Esses módulos são necessários para executar os jogos corretamente
- Os módulos de firmware devem ser extraídos de um console PlayStation 4 de propriedade legal
Contribuição e projetos de referência
- Para contribuir, leia o CONTRIBUTING.md e abra um PR
- O projeto agradece às seguintes equipes e projetos:
- Panda3DS: ajudou a entender e resolver problemas surgidos ao executar nativamente código x64 de binários do PS4
- fpPS4: ajudou a entender partes complexas do sistema operacional e das bibliotecas do PS4
- yuzu: o compilador de shaders do shadPS4 usa o compilador Hades do yuzu como modelo
- felix86: emulador de espaço de usuário Linux x86-64 → RISC-V
- emudev.org: rede de pessoas interessadas em documentação, emulação, simulação e reimplementação de hardwares próximos da extinção
- A licença é a GPL-2.0 license
1 comentários
Comentários do Hacker News
Fico realmente curioso: internamente, isso é mais próximo de um emulador como o PCSX2 ou de uma camada de compatibilidade como o Wine?
Se o PS4 é basicamente um computador x86, parece que a maior parte da dificuldade deve estar em implementar as APIs de sistema/gráficas do PS4. Ou há também grandes diferenças de hardware entre um PC x86 e o PS4 que precisam ser tratadas?
Só por esse ponto, já faz bem mais coisa do que o Wine faz
Parece ser o primeiro emulador de PS4 a chegar até a tela de personagem de Bloodborne
https://x.com/shadps4/status/1825669017392107971?s=46
Tenho curiosidade sobre como emuladores são projetados. Existe algum material bom para aprender?
No primeiro caso, você escreve código que emula a CPU do sistema-alvo no estilo de um interpretador de instruções, como no NES. No segundo, você reimplementa a API do sistema-alvo, como o Wine faz. Se o sistema-alvo usar uma arquitetura de CPU diferente, pode ser necessário um compilador JIT, como no PS3
A maioria dos emuladores de consoles modernos fica mais próxima do segundo caso, porque consoles modernos funcionam de forma parecida com PCs, com um kernel de sistema operacional e bibliotecas em modo usuário para aplicações
Esse segundo caso também se divide em dois tipos. Um é emular as bibliotecas em modo usuário, e o outro é reimplementar o kernel do console enquanto reutiliza as bibliotecas de sistema do próprio console
Recomendo começar por aí na linguagem que você quiser
Existe alguma documentação de arquitetura ou material mostrando tentativas anteriores ou trabalhos prévios, e por que este projeto é diferente?
Parece um projeto interessante de acompanhar. Dado que a Sony atualmente tem poucas opções portáteis, fico curioso para saber como isso rodaria no Steam Deck
0: https://www.reddit.com/r/SteamDeck/comments/wodw8x/i_tested_...
Isso quer dizer que fizeram um equivalente ao DXVK para Gnm/Gnmx?[0]
[0] https://en.wikipedia.org/wiki/PlayStation_4_system_software#...
Este é o progresso mais recente de Bloodborne. Provavelmente é isso que a maioria das pessoas está esperando:
YouTube deste desenvolvedor: https://www.youtube.com/watch?v=wC6s0avpQRE
Não entendo como a Sony ainda deixa este jogo de importância cultural de primeira linha praticamente abandonado de forma quase maliciosa. Estão esperando para usá-lo como título de lançamento do PS6?
Alguns podem ser baixados, mas outros só podem ser jogados via streaming, então você precisa de uma boa conexão de internet para jogar títulos de PS2. Isso é absurdo
Sempre haverá demanda para jogar títulos antigos, e é por isso que emuladores como este existem
Fico pensando se o desenvolvimento de emulação está ficando mais fácil agora que os consoles modernos se tornaram, na prática, sistemas de PC reduzidos
Felizmente, o PS4 foi hackeado, e quase todos os arquivos e informações foram descriptografados e extraídos. O SDK oficial do PS4 também vazou
Agora que se sabe como o console executa jogos, o próximo passo é usar essa informação para executar os jogos fora do console. O sistema do PS4 é uma versão modificada do FreeBSD, então ele funciona de forma muito parecida com um PC. Os executáveis do PS4 são apenas arquivos ELF personalizados
Portanto, para executar jogos de PS4 fora do console, basta mapear diretamente o executável do jogo e fornecer os símbolos necessários de alguma forma, por exemplo implementando-os diretamente ou reutilizando bibliotecas do PS4
Ainda assim, acho que o grande fator é o acesso à informação
De forma geral, a conversão binária também avançou bastante no setor. Rosetta 2 é um exemplo. Isso acabou virando mais uma ferramenta que pode ser usada para levar binários para outro ambiente hospedeiro
Lembro que alguns anos atrás outro emulador de PS4 chamado Spine também recebeu atenção. Fico curioso sobre o que aconteceu com esse projeto
https://github.com/devofspine/spine
Não há código-fonte, só binários