Yodajr
10/04/2006, 01h37
Jour 2 : Afficher du texte
Avant de commencer, je part du principe que vous avez au moins une connaissance même basique du C.
Il n'est pas question ici de faire des cours de C, mais juste des applications pratiques d'OSLib ;)
Aussi dans ces tutos, j'aborderai des cas pratiques, donc si jamais vous voulez mieux comprendre certains concepts ou encore mieux saisir toutes les subtilités de la librairie, je vous conseille de vous plonger dans la documentation :)
D'ailleurs beaucoup de textes de ces tutos viennent directement de cette documentation, je suis pas l'auteur de tout ça hein :D
Donc vive Brunni, vive OSLib et c'est parti !
Comme la tradition est de commencer par le célèbre Hello World, commencons par le célèbre Hello World ^_^
1) Le Makefile
Mais avant, établissont notre fichier makefile qui nous servira de base à tous nos programmes sous oslib.
Il suffit de copier/coller celui ci :
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
Vous n'avez qu'a personnaliser les champs TARGET et PSP_EBOOT_TITLE en fonction du nom de votre projet ;)
2) Le code
//La librairie principale OSLib
#include <oslib/oslib.h>
//les callbacks
PSP_MODULE_INFO("OSLib Sample", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
int main()
{
//Initialisation de la librairie
oslInit(0);
//Initialisation du mode graphique
oslInitGfx(OSL_PF_8888, 0);
//Initialisation de la console texte
oslInitConsole();
//affiche sur l'écran du texte
oslPrintf("Hello World");
//attend l'appui sur une touche
oslWaitKey();
//on quitte l'application
oslEndGfx();
oslQuit();
return 0;
}
3) Explications
#include <oslib/oslib.h>
C'est le include principal à inclure dans tous vos programmes sous oslib.
PSP_MODULE_INFO("OSLib Sample", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
Necessaire au pspsdk pour lancer l'eboot.
oslInit(0);
Necessaire à tous les programmes utilisant oslib et doit etre la toute première commande à etre executée.
oslInitGfx(OSL_PF_8888, 0);
Initialise le pixel format à 32bits par pixels (8888) mais comme on affiche que du texte là, ca n'a pas d'importance.
Le 0 lui, indique qu'on utilise le simple buffering.
oslInitConsole();
Initialise la console texte afin de pouvoir afficher... du texte.
oslPrintf("Hello World");
Affiche sur l'écran comme le bon vieux printf, avec le même usage (oslPrintf("%i",variable) pour afficher le contenu d'une variable entière par exemple)
On peut décider de l'emplacement avec un oslPrintf_xy(x,y,"texte") avec x et y les coordonnées en pixels.
oslEndGfx();
oslQuit();
return 0;
N'oubliez jamais ces 3 lignes à la fin de vos programmes et tout ira bien ^^
4) Screen et eboot
Voila, vous devez obtenir un truc comme ça :
http://hothmoon.free.fr/psp/dev/jour02_screen.png
Téléchargez l'eboot compilée pour 1.5 ici (http://hothmoon.free.fr/psp/dev/jour02_eboot.zip)
Avant de commencer, je part du principe que vous avez au moins une connaissance même basique du C.
Il n'est pas question ici de faire des cours de C, mais juste des applications pratiques d'OSLib ;)
Aussi dans ces tutos, j'aborderai des cas pratiques, donc si jamais vous voulez mieux comprendre certains concepts ou encore mieux saisir toutes les subtilités de la librairie, je vous conseille de vous plonger dans la documentation :)
D'ailleurs beaucoup de textes de ces tutos viennent directement de cette documentation, je suis pas l'auteur de tout ça hein :D
Donc vive Brunni, vive OSLib et c'est parti !
Comme la tradition est de commencer par le célèbre Hello World, commencons par le célèbre Hello World ^_^
1) Le Makefile
Mais avant, établissont notre fichier makefile qui nous servira de base à tous nos programmes sous oslib.
Il suffit de copier/coller celui ci :
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
Vous n'avez qu'a personnaliser les champs TARGET et PSP_EBOOT_TITLE en fonction du nom de votre projet ;)
2) Le code
//La librairie principale OSLib
#include <oslib/oslib.h>
//les callbacks
PSP_MODULE_INFO("OSLib Sample", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
int main()
{
//Initialisation de la librairie
oslInit(0);
//Initialisation du mode graphique
oslInitGfx(OSL_PF_8888, 0);
//Initialisation de la console texte
oslInitConsole();
//affiche sur l'écran du texte
oslPrintf("Hello World");
//attend l'appui sur une touche
oslWaitKey();
//on quitte l'application
oslEndGfx();
oslQuit();
return 0;
}
3) Explications
#include <oslib/oslib.h>
C'est le include principal à inclure dans tous vos programmes sous oslib.
PSP_MODULE_INFO("OSLib Sample", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
Necessaire au pspsdk pour lancer l'eboot.
oslInit(0);
Necessaire à tous les programmes utilisant oslib et doit etre la toute première commande à etre executée.
oslInitGfx(OSL_PF_8888, 0);
Initialise le pixel format à 32bits par pixels (8888) mais comme on affiche que du texte là, ca n'a pas d'importance.
Le 0 lui, indique qu'on utilise le simple buffering.
oslInitConsole();
Initialise la console texte afin de pouvoir afficher... du texte.
oslPrintf("Hello World");
Affiche sur l'écran comme le bon vieux printf, avec le même usage (oslPrintf("%i",variable) pour afficher le contenu d'une variable entière par exemple)
On peut décider de l'emplacement avec un oslPrintf_xy(x,y,"texte") avec x et y les coordonnées en pixels.
oslEndGfx();
oslQuit();
return 0;
N'oubliez jamais ces 3 lignes à la fin de vos programmes et tout ira bien ^^
4) Screen et eboot
Voila, vous devez obtenir un truc comme ça :
http://hothmoon.free.fr/psp/dev/jour02_screen.png
Téléchargez l'eboot compilée pour 1.5 ici (http://hothmoon.free.fr/psp/dev/jour02_eboot.zip)