PDA

Voir la version complète : [PSP][Tutorial] OSlib - Jour 2 : Bonjour monde


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)

Dr.Vince
10/04/2006, 01h57
il est chaud le yodaJr ce soir !!!

encore bravo pour ces tutos, ça va peut être en motiver certains pour dev sur PSP !

MaXleBourrin
10/04/2006, 01h58
Ca à pâs l'air d'être du gateau, mais il met les mains dans le cambouis et nous explique tout de AàZ donc c'est bien et vraiment gentil :)
Merci encore:)

N64Francois
10/04/2006, 02h06
Vivement qu'un émulateur PSP voit le jour !

Kyros
10/04/2006, 02h07
Ca a l'air bien :) .
Merci donc ;) et à Brunni aussi :) .

Brunni
10/04/2006, 14h17
C'est Yodajr qui a fait tous ces tutos, moi j'y suis pour rien :p
En tous cas ils sont excellents :)

Haseo
31/05/2007, 17h07
Salut, super tuto

++ Haseo

ero-sennin95
03/12/2007, 20h39
tout d'abord bonsoir et bravo pour ce super tuto!!!!
voila mon problème je n'arrive pas a lancer mes compilations sur ma psp slim , ni celle
déjà compilé!

Merci de votre réponse.

Riolehh
03/12/2007, 21h27
Salut et bienvenue sur PA,

ton problème viens sûrement du fait que le kernel 1.50 est utilisé pour lancer ton texte, or, celui ci n'est pas supporté ( lire mon tuto pour plus d'infos ) sur ta s&l, il te faut donc passer par un programme tiers : l'Eloader (http://www.playeradvance.org/forum/showthread.php?t=12713), tu peux aussi convertir ton fichier avec PSPbrew (http://www.playeradvance.org/forum/showthread.php?t=12546) sous Windows.

Ou alors tout simplement tu n'as pas de PSP hackée ? :rolleyes: :whst:

Ou dernière solution, tu n'as pas mis l'eboot.pbp dans mso:/PSP/GAME/NOMDETONHOMEBREW/

Bonne chance ;)

ero-sennin95
03/12/2007, 21h57
merci a toi pour ta réponse rapide.
Peut tu me donner ton le liens pour ton tuto?
quel est la différence de programmation entre un prog pour kernel 1.5 et un prog pour kernel 3.00?
Pour info ma Psp en un Cf M33 donc c'est bon :na:!!

ero-sennin95
03/12/2007, 22h44
la dernière était la bonne je ne l'avais pas mis au bon endroit encore merci.
Ps: ce forum déchire!