Desenvolvendo para Playstation 2 – ROUND 2, FIGHT!

Cerca de um ano e meio atrás eu brinquei um pouco de converter um pequeno game que estou desenvolvendo, parecido com Rockman (Megaman) para o Playstation 2 usando o SDK PS2DEV disponível em  http://www.ps2dev.org. Este SDK, além de um toolkit próprio, chamado gsKit, tem suporta a uma biblioteca gráfica, muito utilizada para jogos em Linux mas também utilizada em Windows e Mac, chamada SDL, e para o qual eu já havia desenvolvido pequenos games. Após ligar com diversos problemas de compilação, consegui instalar todo o ambiente em meu Duron 1.6/512MB RAM rodando Ubuntu Linux e comecei a desenvolver.

O problema é que, do modo como eu estava desenvolvendo, eu tinha que copiar o executável (.elf) para um memory card ou pendrive USB, e toda vez ir5 do computador em um quarto, até o PS2 na sala. Isso até não era o maior problema, o problema é que desta forma, você não tem a mínima idéia se o seu programa deu um erro, você simplesmente fica olhando para uma tela escura, ou a tela do seu jogo travado. Utilizando códigos de cores para debugar (desenhando retângulos coloridos como forma de indicar por onde o programa passou), consegui algum sucesso, mas a dificuldade acabou me fazendo desistir.

Chegamos ao presente. Agora com um computador bem mais rápido (Core 2 Duo 2.2/2GB RAM), lá fui eu tentar um segundo método: rodar o programa via emulador de Playstation 2, chamado PCSX2. No linux este emulador mostra as mensagens de output (printf para quem sabe C) do processador IOP (entrada e saída do PS2), e então eu poderia finalmente debugar e corrigir os problemas do jogo, certo? Errado! O emulador simplesmente quebra com o OpenGL da minha máquina…

Bom, nesse ano e meio que se passou, eu adquiri um eeePC 701 e um roteador wifi. Com isso, um segundo método se abriu para mim: programar para o PS2 via rede. Na verdade sem o roteador eu poderia ter feito o trabalho usando um cabo USB ou um cabo cross ethernet, mas nunca me dispus, já com o cabo de rede e o roteador, eu posso também colocar o PS2 em rede, o que é um grande incentivo.

O sistema funciona basicamente assim, você grava um CD com um programa chamado ps2link e um arquivo de configuração que determina o endereço IP quie o PS2 irá requisitar ao seu roteador, e depois um cliente no Windows ou Linux, para acessar o PS2 e enviar para ele o seu programa via rede, ou seja, nada mais de atravessar a sala com o pendrive. Também permite dar um soft-reset – que já descobri não funciona direito com a SDL por alguma razão que ainda não tive tempo de achar.

Mas enfim, comprei um CD para gravar o programa e um cabo de rede de 6 metros, que se mostrou um metro mais curto do que seria recomendável… ninguém manda eu não usar o metro apra medir a distância antes. Gravei o programa, liguei o PS2 com ele e foi pura emoção no momento que consegui dar um ping ao endereço 192.168.1.10 e obeter respota! 😀
A seguir comecei a fuçar no código, recolocando todos os printfs que eu havia retirado já que não apareciam mesmo, e rodar. Em uma hora eu consegui consertar o meu embrião de jogo, adicionei suporte ao joystick direito (esse era um dos bugs, o outro era ter muitos acessos aos arquivos, no PS2 ele tem poucos file pointers simultâneos) e unifiquei o sistema de sprites em uma variável única, otimizando a execução um bocado.
O resultado está nesta screenshot abaixo:

Os gráficos estão com alguns bugs porque eu não tive tempo de arrumar o mapa após criar o novo sistema de tiles/sprites, mas dá para ter uma idéia vendo o protoman lá na parte superior esquerda da tela.
Resumindo, se você tem paciência para fazer as configurações iniciais do SDK, programar para o Playstation 2 usando a SDL é uma grande barbada, e altamente recomendável pela diversão Nerd que irá gerar 😉

One thought on “Desenvolvendo para Playstation 2 – ROUND 2, FIGHT!

  1. Legal a matéria 🙂
    Eu estou começando a programar no Allegro, e estou obtendo sucesso e diversão nessa brincadeira.
    Cheguei até aqui (com a ajuda do Google) por pura curiosidade em saber se tem gente fazendo o que vc faz… muito legal mesmo! Infelizmente vendi meu PS2 há dois anos atrás. No momento vou ficar so no PC mesmo, mas após ler essa matéria me deu vontade de voltar a ativa no PS2… rsrsrsr
    Assim que eu tiver um tempinho vou avaliar, quer dizer, me divertir com seu projeto no PC.
    Boa sorte…

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.