Biblioteca OSLib

OSLib Logo

Como comentei anteriormente a OSLib é uma biblioteca que facilita o desenvolvimento de jogos para psp.

Para instalar aconselho a baixar o pack completo já com o cygwin segue os links:

Parte 1 Parte 2

Mas caso você queira instalar do 0 (zero), você pode fazer o download em:

OSLib

Os passos da instalação você pode acompanhar no forum francês playeradvance:
http://www.playeradvance.org/forum/showthread.php?t=2172

Embora o texto esteja em francês com as imagens é fácil identificar, inclusive ensina como utilizar o visual C++ para compilar os projetos.

A OSLib possui alguns exemplos que te ensinam a manipular imagens, utilizar tiles, tocar sons, escrever textos, etc.
Como a biblioteca tem funções diferentes das padrões do PSPSDK, irei postar um novo HelloWorld, comentando apenas o que mudou (quase tudo):

Começando pelo Makefile :

TARGET = test
OBJS = main.o

INCDIR =
CFLAGS = -G4 -Wall -O2
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

LIBDIR =
LDFLAGS =
STDLIBS= -losl -lpng -lz
-lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspaudiolib -lpspaudio -lm
LIBS=$(STDLIBS)$(YOURLIBS)

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = test
PSP_EBOOT_ICON = ICON0.png

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

No makefile a unica mudança radical está em STDLIBS , que agora tem todas as bibliotecas utilizada pela OSLib.

Vamos ao novo Hello World:

//include da biblioteca
#include

//os callbacks (lembram do tanto de linhas no anterior???)
PSP_MODULE_INFO("HelloWorld", 0, 1, 1); // titulo do seu programa
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

int main()
{
//iniciamos a biblioteca
oslInit(0);

//iniciamos o modulo gráfico
oslInitGfx(OSL_PF_8888, 0);

//iniciamos o console de texto
oslInitConsole();

//escrevemos hello world na tela
oslPrintf("Hello World");

//aguardamos algum botão ser pressionado
oslWaitKey();

//encerramos o aplicativo
oslEndGfx();
oslQuit();
return 0;
}

Deu para notar a diferença de tamanho do Hello World??
O código ficou bem mais limpo, porém tem a mesma funcionalidade do primeiro Hello World .
Se você quiser entender mais sobre a OSLib eu disponibilizei a documentação, parcialmente em Português-BR (quem quiser ajudar a traduzir, dá um toque).

Caso você tenha alguma dúvida, entre em contato comigo ou utilize o forum da PlayerAdvance embora esteja em francês tem um pessoal lá que fala inglês e estão prontos para responder suas dúvidas.

Boa sorte e até o próximo.

Créditos ao Yodajr da playeradvance pelo exemplo.