PS1 Pro Concluído! Tudo que teve de novidade sobre o projeto

PS1 Pro Concluído! Tudo que teve de novidade sobre o projeto

Last updated on

O PS1 Pro está concluído: como montei o Raspberry Pi 5 dentro do case original de um PS1 e desenvolvi do zero um launcher customizado em Pygame para trocar entre emuladores.


Já faz um tempo que eu não trago mais novidades sobre o PS1 Pro, por isso eu trago agora: ele está concluído! Pelo menos… em sua grande parte.

Quero mostrar aqui dessa vez todas a atualizações que houveram desde a ultima vez que eu comentei sobre ele, e bom… tiveram muitas novidades, desde a carcaça que chegou e que eu montei o Raspberry dentro dela, quanto o laucher que eu fiz para facilitar a troca entre emuladores, esse post vai ser mais um post documental de como foi fazer cada parte do projeto, bora lá!

Montando o Hardware

Vamos começar pelo começo, agora temos o hardware do PS1 Pro como mostrei no final do post passado.

image.png

Esse foi o que eu chamei de PS1 cobaia, SCPH-9001, ele funciona, mas com problemas bem estranhos de cores, e o console veio sem o drive de CD, mas ele ligou e entrou na BIOS, com as cores distorcidas? sim. Mas entrou na BIOS.

A placa dele mó linda.

image.png

Bom como o foco foi mais pra usar a carcaça, não vou focar muito no hardware original. O importante é que a carcaça estava levemente amarelada mas em ótimo estado.

Sobre o Retrobright, eu pensei em fazer mas ao mesmo tempo não. Seria um grande trabalho para algo que não me incomoda tanto pra esse PS1 em específico, já que eu fiz questão de comprar um que não estivesse tão amarelado assim.

Montando o console

Para montar tudo eu segui o que decidimos no post que fechamos o que seria esse videogame, tava muito na dúvida sobre como poderiamos prender o Pi na carcaça, entre impressão 3D ou alguma fita dupla face, mas chegei na conclusão de usar espaçadores.

Procurei e achei um ótimo lugar pra posicionar o Pi e fazer toda a organização dos cabos sem ter que cortar algo da carcaça para caber dentro do console, e o resultado? Com os extensores de cabo, muita cola quente neles e super bonder para prender os espaçadores, o resultado foi esse:

image.png

Saídas:

  • USBC para energia
  • HDMI para vídeo
  • RJ45 para servidor OPL
  • USBs nas saídas do memory card

FIcou tudo bem apertado mas o resultado ficou muito bom ao meu ver, só preciso melhorar as USBs do memory card, tive que lixar muito o plastico para que uma cabo USB conseguisse conectar, e ainda assim, tem como melhorar, mas no momento até que funciona muito bem.

Minha maior preocupação com tudo isso além dos cabos e posicionamento do Pi era o superaquecimento, o quanto isso poderia esquentar? Minha ideia era colocar junto caso necessário uma ventoinha de notebook para um melhor fluxo de ar lá dentro.

Mas não achei necessário, o Pi fica quase sempre em 60° durante as gameplays, fiz até testes de estresse compilando o código-fronte do PPSSPP com o console montado e não passou dos 70°. Claro, dá pra sentir na mão como a carcaça do PS1 está mais quente do que estaria em um PlayStation normal, mas ainda assim achei aceitável.

Para ligar o videogame eu usei um botão momentâneo que é pressionado pelo botão power do PS1, pra ter o mesmo comportamento original.

O led verde eu configurei para o Pi mandar energia sempre que o Pi ligar direto pelo config.txt para não haver delay entre o boot do pi e o led verde. Resumindo, videogame liga -> led verde ligado (Igual o original!)

E em geral esse foi o resultado final do PS1 Pro fisicamente, foi muito bom estruturar todo esse projeto, comprar as peças, montar tudo e no fim ter dado tudo certo, e também é de certa forma engraçado ver uma saída USBC e HDMI saindo da carcaça original de um PS1.

Launcher dos emuladores

Essa parte foi a minha vontade de não usar EmulationStation que falou bem mais alto que eu.

readme.png

O Problema que tínhamos

Pra quem viu no outro post, eu estava usando muito no RetroArch, eu tinha um serviço systemd que iniciava ele automaticamente após o boot.

Mas o grande problema é que principalmente com o PS1, o Retroarch não era a melhor forma de obter o melhor desempenho, mesmo compilando o swanstation, o desempenho era horrível, e o PCSX Rearmed não era tão preciso quando o Duckstation.

Então minha ideia foi usar o Duckstation standalone com seu modo big picture para já iniciar em uma interface compatível com controle.

E te falar… eu me apaixonei pelo dusktation, tem diversas funcionalidades muito completas que eu não tinha visto antes em um emulador de PS1, desde cheats de correção de games (aleḿ do widescreen, posso colocar Km/h no Gran Turismo 2 Americano), ótima precisão, integração com retroachievents, configurações por game, retroarch também tem isso, e é isso que sempre me fez ficar no Retroarch. Nenhum outro emulador de PS1 era tão completo em questão de UI/UX quanto o retroatch com seus cores libretro.

Mas o duckstation era diferente, e abrir caminho para ele como emulador standalone signficaria usar um EmulationStation para abrir outros emuladores também ou focar somente em PS1, o que seria um desperdício.

Obviamente optei pelo caminho mais difícil kkkkk fazer meu próprio laucher com a cara do PS1, manteria a identidade do console e ao mesmo tempo abriria espaço tanto para emuladores standalone quanto retroarch.

A ideia era algo que funcionasse com controles automaticamente pra não depender de teclado ou mouse, esse app rodaria a abertura do PS1 em conjunto com uma interface que simulasse a BIOS do PS1, com os apps sendo abertos pelos seus comandos bash configurados via .ini

Desenvolvimento do Projeto

Junto do Claude Code com a ideia em mente, resolvi partir para a criação do projeto usando Pygame e SDL e o SDL_GameControllerDB pra eu ter a possibilidade de ter o mapeamento automático para qualquer controle principal.

Como isso é mais só um projeto de hobby, foi até bom pra praticar a criação de apps com IA, eu não conheço nada de pygame, mas pesquisando percebi como era melhor usar ele doq um chrome com interface web ou um Qt, pygame pra esse caso, com uma interface simples e compatibilidade com controle, entregava o que eu precisava sem muito trabalho.

Mas te falar que o Claude Code ajudou demais, as texturas arco-iris foram extraídas diretamente da textura original do PS1, e feito o upscaling por ele também, não só isso, mas ele também fez o trabalho de criar toda uma tipografia em bitmap e mapear ela no pygame usando a textura original do PS1 que não tinha todas as letras… Nem eu esperava ter esse nível de qualidade para essa BIOS fake do PS1.

img-5.png

Essa é a textura extraída do PS1

ps1_font_sheet.png

Essa é a tipografia gerada pelo Claude para o projeto

E assim chegamos ao resultado final, que é a versão que vocês viram.

Isso permitiu com que eu instalasse qualquer app no Pi e pudesse executar tudo via laucher, resultado? Além do Retroarch e do Duckstation, instalei o PPSSPP e até mesmo um chromium minimo para rodar a versão web do Youtube TV, tudo funcionando perfeitamente.

Pra quem quiser ver mais sobre o código disso tudo, segue os links aí

Conclusão

E assim chegamos nesse resultado atual tanto de hardware quando de software para o PS1 Pro.

E hoje eu posso dizer, foi ótimo desenvolver esse projeto e ver tudo funcionando corretamente, não só isso, mas o Raspberry Pi 5 roda muito bem cada um dos emuladores hoje, então não é apenas um objeto de coleção criado por mim, ele realmente funciona, e eu tenho realmente usando ele pra jogar PS1 e PS2 principalmente.