Fonctions de la bibliothèque G2D : void initVideoMode(int type, int witdh, int height) Fonction d'initialisation du mode vidéo et des périphériques. type : mode vidéo à supporter. MODE_PAL : mode PAL MODE_NTSC : mode NTSC width: largeur en pixels de l'écran. 256, 320, 384, 512 ou 640. Si la largeur voulue n'est pas une de la liste, la largeur immédiatement supérieure est utilisée. Au delà de 640, la valeur 640 est toujours utilisée. height: hauteur en lignes de l'écran. 256 ou 512 en mode PAL. 240 ou 480 en mode NTSC. Si la hauteur voulue n'est pas une de la liste, la hauteur immédiatement supérieure est utilisée. En demandant 240 en mode PAL ou NTSC permet donc d'obtenir 256 lignes en PAL et 240 lignes en NTSC. Attention les hauteurs 512 ou 480 sont à proscrire, car le double-buffering ne fonctionnera pas correctement. void resetVideoMode() Fonction de restauration du mode vidéo et des périphériques. GsIMAGE* loadImageFromMemoryAddress(u_long address) Fonction de chargement d'une image stockée en mémoire vive, afin d'obtenir un objet affichable. address: adresse dans la mémoire RAM à partir de laquelle l'image doit être chargée. void freeImage(GsIMAGE* image) Fonction de libération d'un image chargée par la fonction loadImageFromMemoryAddress(). image: l'image retournée par la fonction loadImageFromMemoryAddress() qui doit être libérée. void drawImageAt(GsIMAGE* image, int x, int y, int sync) Fonction de tracer d'une image chargée au coordonnées choisies. image: l'image à afficher. x: coordonnée x. y: coordonnée y. sync: si la valeur est non nulle, la fonction attend la synchro d'affichage. void setBackground(int r, int g, int b) Sélection de la couleur de fond unie de l'écran. r, g, b : composante Rouge Vert Bleu de la couleur de fond. void noBackground() Suppression de la couleur de fond de l'écran. u_int padRead(int left) Lecture de l'état de la manette gauche ou droite. left : si non nul (==LEFT) retourne l'état de la manette de gauche, si nul (==RIGHT) retourne l'état de la manette de droite. La valeur retournée est un masque de toutes les touches activées pour la manette voulue. PADsquare, PADcross, PADcircle, PADtriangle, PADR1, PADL1, PADR2, PADL2, PADleft, PADdown, PADright, PADup, PADstart, PADselect. GsBG* createBGPicture(u_long address) Création d'une image de type plan à partir d'un fichier en mémoire. address: adresse dans la mémoire RAM à partir de laquelle l'image doit être chargée. GsBG* createBGMapPicture(u_long address, int w, int h, u_short* maparray) Création d'une image de type plan à partir d'un fichier en mémoire. address: adresse dans la mémoire RAM à partir de laquelle l'image doit être chargée. w,h : nombre d'éléments composant l'image de type plan. maparray : tableau de w*h éléments. L'image source est décomposée en image de 8x8 pixels. Les indices de ces images sont décomposés de la gauche vers la droite puis de haut en bas, en base 0. L'image suivante de 40 x 24 pixels est décomposée en 15 cellules de 8 x 8 pixels numérotées de 0 à 14. void disposeBGPicture(GsBG* bg) Libération d'une image de type plan allouée par createBGPicture() ou createBGMapPicture(). bg : l'image à libérer. GsBG* addBGBitmap(u_long address, long motionx, long motiony, int unit, int pulse, int front) Création d'une image de type plan à partir d'un fichier en mémoire et ajout à la liste des plans à afficher. L'image ne devra pas être libérée par disposeBGPicture(), elle le sera par removeBG(). address: adresse dans la mémoire RAM à partir de laquelle l'image doit être chargée. motionx : soit CIRCLE, ELIPSE, RAND(min value,max value), ou une valeur correspondant au mouvement sur l'axe X. motiony : Si motionx = CIRCLE alors motiony = rayon du cercle à décrire. Si motionx = ELIPSE alors A_B(rayonX,rayonY) de l'ellipse à décrire. Si motionx = RAND() alors pas de sens. Sinon une valeur correspondant au mouvement su l'axe Y. unit : le nombre de pixel pour une unité à appliquer (cercle de rayon 4, unit 2, déplacement sur le cercle par 2 pixels ). pulse : le déplacement du fond se fera tous le pulse images. front : si la valeur est non nulle, ce plan sera afficher devant les sprites, sinon il sera derrière. GsBG* addBG(GsBG* bg, long motionx, long motiony, int unit, int pulse, int front) Ajout à la liste des plans à afficher. bg : l'image de type plan à afficher. motionx : soit CIRCLE, ELIPSE, RAND(min value,max value), ou une valeur correspondant au mouvement sur l'axe X. motiony : Si motionx = CIRCLE alors motiony = rayon du cercle à décrire. Si motionx = ELIPSE alors A_B(rayonX,rayonY) de l'ellipse à décrire. Si motionx = RAND() alors pas de sens. Sinon une valeur correspondant au mouvement su l'axe Y. unit : le nombre de pixel pour une unité à appliquer (cercle de rayon 4, unit 2, déplacement sur le cercle par 2 pixels ). pulse : le déplacement du fond se fera tous le pulse images. front : si la valeur est non nulle, ce plan sera afficher devant les sprites, sinon il sera derrière. void removeBG(GsBG* bg) Supprime de la liste des plans à afficher le plan considéré. Si ce plan à été créer par addBGBitmap(), le paramètre bg sera détruit de lui-même, sinon la fonction disposeBGPicture() devra être appelée afin de libérer la mémoire. bg : l'image plan à ne plus afficher. void moveBGtoLower(GsBG* bg) Permet de positionner le plan choisi au dessus de tous les autres de sa catégorie (front ou non). bg : l'image plan à modifier. void moveBGtoUpper(GsBG* bg) Permet de positionner le plan choisi en dessous de tous les autres de sa catégorie (front ou non). bg : l'image plan à modifier. void removeAllBGBitmap() Permet de supprimer tout les plans ajoutés par addBGBitmap() et addBG(). Sprite* addSprite( int w, int h, u_long address ) Ajoute à l'écran un sprite, celui-ci est de taille w pixels de largeur et h pixels de hauteur. L'image utilisée est à l'adresse address en mémoire. w,h : taille du sprite. address: adresse dans la mémoire RAM à partir de laquelle l'image doit être chargée. void changeSpritePattern( Sprite* sp, int pattern ) Modification de l'image à afficher. sp : sprite à modifier (valeur retournée par addSprite() ). pattern : numéro d'image à substituer. Ce numéro est obtenu pour l'image chargée par addSprite(), l'indice s'obtient de façon similaire à createBGMapPicture() soit : dans le cas où est définie d'une taille de 8 par 8 pixels, et que l'image est d'une taille de 40 par 24 pixels. int getSpritePattern( Sprite* sp ) Cette fonction permet de retrouver l'indice de l'image utilisée pour le sprite donné. sp : sprite à tester(valeur retournée par addSprite() ). La valeur retournée correspond au paramètre pattern dans la fonction changeSpritePattern(). void changeSpriteTexture( Sprite* sp, u_long address ) Cette fonction permet de changer l'adresse mémoire où sont stockées les images du sprite. sp : sprite à modifier (valeur retournée par addSprite() ). address: adresse dans la mémoire RAM à partir de laquelle l'image doit être chargée. u_long getSpriteTexture( Sprite* sp ) Cette fonction permet de retrouver l'adresse mémoire à partir de laquelle les images du sprite sont chargée. sp : sprite à tester(valeur retournée par addSprite() ). La valeur retournée correspond au paramètre address dans la fonction changeSpriteTexture(). void removeSprite( Sprite* sp ) Cette fonction permet de supprimer un sprite ajouté par addSprite() de la liste des sprites à afficher. sp : sprite à supprimer (valeur retournée par addSprite() ). void removeAllSprite() Cette fonction permet de supprimer tous les sprites ajouter à la liste des sprites à afficher par la fonction addSprite(). void moveSpritetoLower( Sprite* sprite ) Permet de positionner le sprite choisi au dessus de tous les autres sprite. sp : sprite à modifier(valeur retournée par addSprite() ). void moveSpritetoUpper( Sprite* sprite ) Permet de positionner le sprite choisi au dessous de tous les autres sprite. sp : sprite à modifier(valeur retournée par addSprite() ). showSprite( Sprite* sp, BOOL active ) isVisibleSprite( Sprite* sp ) enableRotationScaling( sp, active ) enableSemiTransparency( Sprite* sp, BOOL active ) changeSpriteLocation( Sprite* sp, int xv, int yv ) changeSpriteScale( Sprite* sp, int scx, int scy ) changeSpriteRotation( Sprite* sp, int angle ) changeSpriteFullBrightness( Sprite* sp, int level ) changeSpriteBrightness( Sprite* sp, int red, int green, int blue ) void setFrame( int x, int y, int w, int h, u_char r, u_char g, u_char b ) Définition d'un cadre en position x,y, de largeur w,h et de couleur RVB r,g,b. void noFrame() Suppression d'un cadre défini précédemment par setFrame(). void gamePlay( int type, int width, int height ) Fonction de lancement de l'automate du jeu. type : mode vidéo à supporter. MODE_PAL : mode PAL MODE_NTSC : mode NTSC width: largeur en pixels de l'écran. 256, 320, 384, 512 ou 640. Si la largeur voulue n'est pas une de la liste, la largeur immédiatement supérieure est utilisée. Au delà de 640, la valeur 640 est toujours utilisée. height: hauteur en lignes de l'écran. 256 ou 512 en mode PAL. 240 ou 480 en mode NTSC. Si la hauteur voulue n'est pas une de la liste, la hauteur immédiatement supérieure est utilisée. En demandant 240 en mode PAL ou NTSC permet donc d'obtenir 256 lignes en PAL et 240 lignes en NTSC. Attention les hauteurs 512 ou 480 sont à proscrire, car le double-buffering ne fonctionnera pas correctement. int changeStep( int step ) Cette fonction est appelée avant changement d'état de l'automate. Le premier appel est effectué avec step = 0. Il s'agit usellement de la partie d'initialisation globale. Le dernier appel est effectué avec step = -1. Il faut faire dans ce cas la libération globale. La fonction doit retourné soit la valeur de step si on doit continué avec le même état de l'automate, soit la valeur du nouvel état voulu. Si le retour est la valeur de step, alors la fonction performStat() sera exécutée. int performStep( int step, u_int Left, u_int Right ) Cette fonction est appelée après un changeStep() retournant le step passé en paramètre, et ce tant que performStep() retourne le step passé en paramètre. Left et Right contienne l'état des manettes. Exemple : int main() { gamePlay( MODE_PAL, 320, 240 ); } int changeStep( int step ) { if ( step == 0 ) { initGlobal(); return 1; // prochain appel changeStep( 1 ); } if ( step == -1 ) { removeGlobal(); return -1; // fin d'exécution } switch( step ) { case 1 : // changement d'état en 1 return 2; // prochain appel changeStep( 2 ); case 2 : // changement d'état en 2 return 2; // prochain appel performStep( 2 … ); case 3 : // changement d'état en 3 return 3; // prochain appel performStep( 3 … ); case 4 : return 0; // prochain appel changeStep( -1 ); etc… } } int performStep(int step, u_int Left, u_int Right ) { switch ( step ) { // 0 et 1 jamais appelé case 2 : if ( Left ) return 3; // prochain appel changeStep(3); else return 2; // prochain appel performStep(2); case 3 : if ( Right ) return 4; // prochain appel changeStep(4); else return 2; // prochain appel changeStep(2); etc… } } Font* createFont( u_long address, int info[] ) Création à partir d'une image mémoire et d'une structure d'information, d'une font. address: adresse dans la mémoire RAM à partir de laquelle la font doit être chargée. info : informations sur la définition de la font à cette adresse mémoire. exemple : #include "fontB.h" void main() { … Font* font = createFont( 0x9000000, define_fontB ); addText( font, "TEXT", 0, 0, LAYOUT5 ); … releaseFont( font ); } void releaseFont( Font* font ) Suppression d'une font chargée précédemment par createFont(). font : font chargée par createFont() à supprimer. Text addText( Font* font, u_char* text, int x, int y, int layout ) Ajout d'un texte à l'écran. font : font à utilisée (obtenu lors du createFont()). text : Texte à afficher. x,y : Coordonnées pixels à l'écran. layout : LAYOUT0 ( LAYOUT6 : position d'affichage. Text changeText( Text text, u_char* value ) Changement du texte à afficher. text : Texte à modifier (valeur de retour de addText() et changeText()). value : Nouveau texte à afficher. Après l'appel à cette fonction, l'ancienne valeur retournée par addText() n'a plus de sens, il faut maintenant utiliser la valeur retournée par changeText(). void removeText( Text text ) Suppression d'un texte afficher. text : Texte à supprimer(valeur de retour de addText()et changeText()). int getTextWidth( Text text ) Retourne la largeur d'un texte affiché. text : Texte à tester(valeur de retour de addText() et changeText()). int getTextHeight( Text text ) Retourne la hauteur d'un texte affiché. text : Texte à tester(valeur de retour de addText() et changeText()). void scrollText( Text text, int dx, int dy ) Déplace depuis sa position actuelle un texte. text : Texte à modifier (valeur de retour de addText() et changeText()). dx, dy : déplacement du texte. void setTextLocation( Text text, int x, int y ) Changement de position d'un texte. text : Texte à modifier (valeur de retour de addText() et changeText()). x,y : Nouvelles coordonnées pixels à l'écran. showText( Text text, BOOL active ) isVisibleText( Text text) enableRotationScalingText( Text text, BOOL active) enableBrightnessText( Text text, BOOL active ) enableSemiTransparencyText( Text text, BOOL active ) changeTextScale( Text text, int scx, int scy ) changeTextRotation( Text text, int angle ) sp ) changeTextFullBrightness( Text text , int level )) changeTextBrightness( Text text, int red, int green, int blue ) 4 0 3 1 2 5 6 7 9 8 11 10 12 13 14 14 13 12 10 11 8 9 7 6 5 4 2 1 3 0