Sprite system


Macros

#define PA_UpdateOAM0()   DMA_Copy((void*)PA_obj, (void*)OAM0, 256, DMA_32NOW)
 Mettre à jour les infos des sprites pour l'écran 0 uniquement. A faire dans le VBL
#define PA_UpdateOAM1()   DMA_Copy((void*)PA_obj + 256, (void*)OAM1, 256, DMA_32NOW)
 Mettre à jour les infos des sprites pour l'écran 1 uniquement. A faire dans le VBL
#define PA_UpdateSpriteGfx(screen, obj_number, obj_data)   PA_UpdateGfx(screen, PA_GetSpriteGfx(screen, obj_number), obj_data)
 Mettre à jour les Gfx d'un sprite donné
#define PA_SetSpriteRotEnable(screen, sprite, rotset)   {PA_obj[screen][sprite].atr0 |= OBJ_ROT; PA_obj[screen][sprite].atr1 = (PA_obj[screen][sprite].atr1 & ALL_BUT_ROTSET) + ((rotset) << 9);}
 Faire tourner et zoomer un sprite
#define PA_SetSpriteRotDisable(screen, sprite)   {PA_obj[screen][sprite].atr0 &= ALL_BUT(OBJ_ROT); PA_obj[screen][sprite].atr1 &= ALL_BUT_ROTSET;}
 Arreter de faire tourner et zoomer un sprite
#define PA_SetSpriteX(screen, obj, x)   PA_obj[screen][obj].atr1 = (PA_obj[screen][obj].atr1 & ALL_BUT(PA_OBJ_X)) + ((x) & PA_OBJ_X)
 Position X du sprite à l'écran
#define PA_GetSpriteX(screen, obj)   (PA_obj[screen][obj].atr1 & (PA_OBJ_X))
 Position X du sprite à l'écran
#define PA_SetSpriteY(screen, obj, y)   PA_obj[screen][obj].atr0 = (PA_obj[screen][obj].atr0 & ALL_BUT(PA_OBJ_Y)) + ((y) & PA_OBJ_Y)
 Position Y du sprite à l'écran
#define PA_GetSpriteY(screen, obj)   (PA_obj[screen][obj].atr0 & PA_OBJ_Y)
 Position Y du sprite à l'écran
#define PA_SetSpritePal(screen, obj, pal)   PA_obj[screen][obj].atr2 = (PA_obj[screen][obj].atr2 & ALL_BUT_PAL) + ((pal) << 12)
 Changer la palette d'un sprite
#define PA_GetSpritePal(screen, obj)   (PA_obj[screen][obj].atr2 >> 12)
 Palette d'un sprite
#define PA_SetSpriteDblsize(screen, obj, dblsize)   PA_obj[screen][obj].atr0 = (PA_obj[screen][obj].atr0 & ALL_BUT(DBLSIZE)) + ((dblsize) << 9)
 Activer ou désactiver le mode Doublesize pour un sprite
#define PA_GetSpriteDblsize(screen, obj)   ((PA_obj[screen][obj].atr0 & DBLSIZE) >> 9)
 Etat du mode Doublesize pour un sprite
#define PA_SetSpriteColors(screen, sprite, n_colors)   PA_obj[screen][sprite].atr0 = (PA_obj[screen][sprite].atr0 & ALL_BUT(N_COLORS)) + ((n_colors) << 13)
 Changer le mode de couleur du sprite
#define PA_GetSpriteColors(screen, sprite)   ((PA_obj[screen][sprite].atr0 & N_COLORS) >> 13)
 Mode de couleur d'un sprite
#define PA_SetSpriteMode(screen, sprite, obj_mode)   PA_obj[screen][sprite].atr0 = (PA_obj[screen][sprite].atr0 & ALL_BUT(OBJ_MODE)) + ((obj_mode) << 10)
 Régler le mode d'un sprite : 0 pour normal, 1 pour transparent, 2 pour fenetre
#define PA_GetSpriteMode(screen, obj)   ((PA_obj[screen][obj].atr0 & OBJ_MODE) >> 10)
 Mode d'un sprite : 0 pour normal, 1 pour transparent, 2 pour fenetre
#define PA_SetSpriteMosaic(screen, obj, mosaic)   PA_obj[screen][obj].atr0 = (PA_obj[screen][obj].atr0 & ALL_BUT(OBJ_MOSAIC)) + ((mosaic) << 12)
 Mettre ou non un sprite en mode mosaic
#define PA_GetSpriteMosaic(screen, obj)   ((PA_obj[screen][obj].atr0 & OBJ_MOSAIC) >> 12)
 Si un sprite est en mode mosaic
#define PA_SetSpriteHflip(screen, obj, hflip)   PA_obj[screen][obj].atr1 = (PA_obj[screen][obj].atr1 & ALL_BUT(OBJ_HFLIP)) + ((hflip) << 12)
 Utiliser ou non le flip horizontal pour un sprite
#define PA_GetSpriteHflip(screen, obj)   ((PA_obj[screen][obj].atr1 & OBJ_HFLIP) >> 12)
 S'il y a un flip horizontal pour un sprite
#define PA_SetSpriteVflip(screen, obj, vflip)   PA_obj[screen][obj].atr1 = (PA_obj[screen][obj].atr1 & ALL_BUT(OBJ_VFLIP)) + ((vflip) << 13)
 Utiliser ou non le flip vertical pour un sprite
#define PA_GetSpriteVflip(screen, obj)   ((PA_obj[screen][obj].atr1 & OBJ_VFLIP) >> 13)
 Si le flip vertical est utilisé ou non pour un sprite
#define PA_SetSpriteGfx(screen, obj, gfx)   PA_obj[screen][obj].atr2 = (PA_obj[screen][obj].atr2 & ALL_BUT(OBJ_GFX)) + ((gfx) & OBJ_GFX)
 Modifier les graphismes utilisés par un sprite
#define PA_GetSpriteGfx(screen, obj)   (PA_obj[screen][obj].atr2 & OBJ_GFX)
 Récupérer le gfx utilisés par un sprite
#define PA_SetSpritePrio(screen, obj, prio)   PA_obj[screen][obj].atr2 = (PA_obj[screen][obj].atr2 & ALL_BUT(OBJ_PRIO)) + ((prio) << 10)
 Régler la priorité d'un sprite par rapport au Bg.
#define PA_GetSpritePrio(screen, obj)   ((PA_obj[screen][obj].atr2 & OBJ_PRIO) >> 10)
 Récupérer la priorité d'un sprite par rapport au Bg.
#define PA_GetSpriteLx(screen, sprite)   PA_size[PA_obj[screen][sprite].atr0 >> 14][PA_obj[screen][sprite].atr1 >> 14].lx
 Récupérer la largeur d'un sprite
#define PA_GetSpriteLy(screen, sprite)   PA_size[PA_obj[screen][sprite].atr0 >> 14][PA_obj[screen][sprite].atr1 >> 14].ly
 Récupérer la hauteur d'un sprite
#define PA_CloneSprite(screen, obj, target)   {PA_obj[screen][obj].atr0 = PA_obj[screen][target].atr0; PA_obj[screen][obj].atr1 = PA_obj[screen][target].atr1; PA_obj[screen][obj].atr2 = PA_obj[screen][target].atr2; ++obj_per_gfx[screen][PA_GetSpriteGfx(screen, target)];}
 Cloner un sprite. Marche uniquement pour les sprites sur un meme écran

Fonctions

void PA_UpdateOAM (void)
 Mettre à jour les infos des sprites pour les 2 écrans. A faire dans le VBL
u16 PA_CreateGfx (u8 screen, void *obj_data, u8 obj_shape, u8 obj_size, u8 color_mode)
 Charger en mémoire un gfx à utiliser plus tard pour un sprite. Renvoie le numéro en mémoire.
void PA_ResetSpriteSysScreen (u8 screen)
void PA_ResetSpriteSys (void)
 Remise à 0 du système de sprite, de la mémoire...
void PA_CreateSprite (u8 screen, u8 obj_number, void *obj_data, u8 obj_shape, u8 obj_size, u8 color_mode, u8 palette, s16 x, s16 y)
 Creer un sprite avec ses gfx... Ceci est la version simple de la fonction
void PA_CreateSpriteEx (u8 screen, u8 obj_number, void *obj_data, u8 obj_shape, u8 obj_size, u8 color_mode, u8 palette, u8 obj_mode, u8 mosaic, u8 hflip, u8 vflip, u8 prio, u8 dblsize, s16 x, s16 y)
 Creer un sprite avec ses gfx... Ceci est la version complexe de la fonction
void PA_Create16bitSpriteEx (u8 screen, u8 obj_number, void *obj_data, u8 obj_shape, u8 obj_size, u8 mosaic, u8 hflip, u8 vflip, u8 prio, u8 dblsize, s16 x, s16 y)
 Creer un sprite de 16 bits avec ses gfx... Ceci est la version complexe de la fonction. Attention : un sprite de 16 bits DOIT etre large de 128 pixels, meme si ce sprite ne prend qu'une petite partie sur la gauche
void PA_Create16bitSpriteFromGfx (u8 screen, u8 obj_number, u16 gfx, u8 obj_shape, u8 obj_size, s16 x, s16 y)
 Creer un sprite de 16 bits à partir de gfx...
void PA_Create16bitSprite (u8 screen, u8 obj_number, void *obj_data, u8 obj_shape, u8 obj_size, s16 x, s16 y)
 Creer un sprite de 16 bits avec ses gfx... Ceci est la version simple de la fonction. Attention : un sprite de 16 bits DOIT etre large de 128 pixels, meme si ce sprite ne prend qu'une petite partie sur la gauche
void PA_CreateSpriteFromGfx (u8 screen, u8 obj_number, u16 obj_gfx, u8 obj_shape, u8 obj_size, u8 color_mode, u8 palette, s16 x, s16 y)
 Creer un sprite avec ses gfx... Ceci est la version simple de la fonction
void PA_CreateSpriteExFromGfx (u8 screen, u8 obj_number, u16 obj_gfx, u8 obj_shape, u8 obj_size, u8 color_mode, u8 palette, u8 obj_mode, u8 mosaic, u8 hflip, u8 vflip, u8 prio, u8 dblsize, s16 x, s16 y)
 Creer un sprite avec ses gfx... Ceci est la version complexe de la fonction
void PA_UpdateGfx (u8 screen, u16 gfx_number, void *obj_data)
 Mettre à jour les Gfx donnés
void PA_UpdateGfxAndMem (u8 screen, u8 gfx_number, void *obj_data)
 Mettre à jour les Gfx donnés et le pointer d'animation dans PAlib... Uniquement pour utilisateurs avertis
void PA_DeleteGfx (u8 screen, u16 obj_gfx)
 Effacer un Gfx. Si un sprite l'utilisait, il deviendra invisible...
void PA_DeleteSprite (u8 screen, u8 obj_number)
 Effacer un sprite. S'il était le seul à utiliser un gfx, il sera effacé lui aussi
void PA_SetRotset (u8 screen, u8 rotset, s16 angle, u16 zoomx, u16 zoomy)
 Faire tourner et zoomer un sprite
void PA_SetRotsetNoZoom (u8 screen, u8 rotset, s16 angle)
 Faire tourner un sprite sans zoomer. C'est un peu plus rapide que la fonction PA_SetRotset
void PA_SetRotsetNoAngle (u8 screen, u8 rotset, u16 zoomx, u16 zoomy)
 Zoomer un sprite sans le faire tourner. C'est un peu plus rapide que la fonction PA_SetRotset
void PA_SetSpriteXY (u8 screen, u8 sprite, s16 x, s16 y)
 Position X et Y du sprite à l'écran
void PA_SetSpriteAnimEx (u8 screen, u8 sprite, u8 lx, u8 ly, u8 ncolors, s16 animframe)
 Régler l'image du sprite dans l'animation. Cette fonction est plus rapide que PA_SetSpriteAnim parce qu'elle n'a pas à rechercher les dimensions du sprite
void PA_SetSpriteAnim (u8 screen, u8 sprite, s16 animframe)
 Régler l'image du sprite dans l'animation. Identique à PA_SetSpriteAnimEx, mais plus simple à utiliser, par contre plus lent
void PA_StartSpriteAnimEx (u8 screen, u8 sprite, s16 firstframe, s16 lastframe, s16 speed, u8 type, s16 ncycles)
 Démarre une animation de sprite. Une fois démarrée, elle continue tant qu'on ne l'arrête pas !
void PA_StartSpriteAnim (u8 screen, u8 sprite, s16 firstframe, s16 lastframe, s16 speed)
 Démarre une animation de sprite. Une fois démarrée, elle continue tant qu'on ne l'arrête pas !
void PA_StopSpriteAnim (u8 screen, u8 sprite)
 Arrêter une animation de sprite
void PA_SetSpriteAnimFrame (u8 screen, u8 sprite, u16 frame)
 Changer le numéro actuel de la frame d'animation
u16 PA_GetSpriteAnimFrame (u8 screen, u8 sprite)
 Renvoie le numéro actuel de la frame d'animation
void PA_SetSpriteAnimSpeed (u8 screen, u8 sprite, s16 speed)
 Changer la vitesse de l'animation
u16 PA_GetSpriteAnimSpeed (u8 screen, u8 sprite)
 Renvoie la vitesse de l'animation
void PA_SetSpriteNCycles (u8 screen, u8 sprite, s16 NCycles)
 Changer le nombre de cycles d'animation restant (-1 pour inifini)
u16 PA_GetSpriteNCycles (u8 screen, u8 sprite)
 Renvoie le nombre de cycles d'animation restants
void PA_SpriteAnimPause (u8 screen, u8 sprite, u8 pause)
 Mettre en Pause en remettre en lecture une animation de sprite
void PA_SetSpritePixel (u8 screen, u8 sprite, u8 x, u8 y, u8 color)
 Mettre un pixel d'un sprite à une couleur donnée. Comme PA_SetSpritePixelEx, avec moins d'options, mais un peu plus lent
u8 PA_GetSpritePixel (u8 screen, u8 sprite, u8 x, u8 y)
 Récupérer la couleur d'un pixel d'un sprite. Comme PA_GetSpritePixelEx, avec moins d'options, mais un peu plus lent
u8 PA_GetSprite16cPixel (u8 screen, u8 sprite, u8 x, u8 y)
 Récupérer la couleur d'un pixel d'un sprite de 16 couleurs.
void PA_InitSpriteDraw (u8 screen, u8 sprite)
 Initialise un sprite pour pouvoir dessiner dessus !
void PA_InitAllSpriteDraw (void)
 Initialise tous les sprites à l'écran pour dessiner dessus
void PA_InitSpriteExtPrio (u8 SpritePrio)
 Activer le systeme de priorité de sprites PAlib. Plus lent que le systeme normal, il permet d'avoir 256 niveaux de priorité (supplante la priorité par numéro de sprites)
void PA_SetSpriteExtPrio (u8 screen, u8 sprite, u8 prio)

Description détaillée

Load Sprite, move them around, rotate them...

Documentation des macro

#define PA_CloneSprite screen,
obj,
target   )     {PA_obj[screen][obj].atr0 = PA_obj[screen][target].atr0; PA_obj[screen][obj].atr1 = PA_obj[screen][target].atr1; PA_obj[screen][obj].atr2 = PA_obj[screen][target].atr2; ++obj_per_gfx[screen][PA_GetSpriteGfx(screen, target)];}
 

Cloner un sprite. Marche uniquement pour les sprites sur un meme écran

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite
target Numéro de la cible à cloner

#define PA_GetSpriteColors screen,
sprite   )     ((PA_obj[screen][sprite].atr0 & N_COLORS) >> 13)
 

Mode de couleur d'un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro de l'objet dans le systeme de sprite

#define PA_GetSpriteDblsize screen,
obj   )     ((PA_obj[screen][obj].atr0 & DBLSIZE) >> 9)
 

Etat du mode Doublesize pour un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite

#define PA_GetSpriteGfx screen,
obj   )     (PA_obj[screen][obj].atr2 & OBJ_GFX)
 

Récupérer le gfx utilisés par un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite

#define PA_GetSpriteHflip screen,
obj   )     ((PA_obj[screen][obj].atr1 & OBJ_HFLIP) >> 12)
 

S'il y a un flip horizontal pour un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite

#define PA_GetSpriteLx screen,
sprite   )     PA_size[PA_obj[screen][sprite].atr0 >> 14][PA_obj[screen][sprite].atr1 >> 14].lx
 

Récupérer la largeur d'un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro de l'objet dans le systeme de sprite

#define PA_GetSpriteLy screen,
sprite   )     PA_size[PA_obj[screen][sprite].atr0 >> 14][PA_obj[screen][sprite].atr1 >> 14].ly
 

Récupérer la hauteur d'un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro de l'objet dans le systeme de sprite

#define PA_GetSpriteMode screen,
obj   )     ((PA_obj[screen][obj].atr0 & OBJ_MODE) >> 10)
 

Mode d'un sprite : 0 pour normal, 1 pour transparent, 2 pour fenetre

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite

#define PA_GetSpriteMosaic screen,
obj   )     ((PA_obj[screen][obj].atr0 & OBJ_MOSAIC) >> 12)
 

Si un sprite est en mode mosaic

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite

#define PA_GetSpritePal screen,
obj   )     (PA_obj[screen][obj].atr2 >> 12)
 

Palette d'un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite

#define PA_GetSpritePrio screen,
obj   )     ((PA_obj[screen][obj].atr2 & OBJ_PRIO) >> 10)
 

Récupérer la priorité d'un sprite par rapport au Bg.

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite

#define PA_GetSpriteVflip screen,
obj   )     ((PA_obj[screen][obj].atr1 & OBJ_VFLIP) >> 13)
 

Si le flip vertical est utilisé ou non pour un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite

#define PA_GetSpriteX screen,
obj   )     (PA_obj[screen][obj].atr1 & (PA_OBJ_X))
 

Position X du sprite à l'écran

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite

#define PA_GetSpriteY screen,
obj   )     (PA_obj[screen][obj].atr0 & PA_OBJ_Y)
 

Position Y du sprite à l'écran

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite

#define PA_SetSpriteColors screen,
sprite,
n_colors   )     PA_obj[screen][sprite].atr0 = (PA_obj[screen][sprite].atr0 & ALL_BUT(N_COLORS)) + ((n_colors) << 13)
 

Changer le mode de couleur du sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro de l'objet dans le systeme de sprite
n_colors 0 pour 16 couleurs, 1 pour 256

#define PA_SetSpriteDblsize screen,
obj,
dblsize   )     PA_obj[screen][obj].atr0 = (PA_obj[screen][obj].atr0 & ALL_BUT(DBLSIZE)) + ((dblsize) << 9)
 

Activer ou désactiver le mode Doublesize pour un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite
dblsize 1 pour l'activer, 0 pour l'inactiver

#define PA_SetSpriteGfx screen,
obj,
gfx   )     PA_obj[screen][obj].atr2 = (PA_obj[screen][obj].atr2 & ALL_BUT(OBJ_GFX)) + ((gfx) & OBJ_GFX)
 

Modifier les graphismes utilisés par un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite
gfx Numéro du gfx en mémoire ; on peut obtenir un numéro avec PA_CreateGfx ou PA_GetSpriteGfx(obj_number);

#define PA_SetSpriteHflip screen,
obj,
hflip   )     PA_obj[screen][obj].atr1 = (PA_obj[screen][obj].atr1 & ALL_BUT(OBJ_HFLIP)) + ((hflip) << 12)
 

Utiliser ou non le flip horizontal pour un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite
hflip Flip horizontal, 1 pour oui, 0 pour non...

#define PA_SetSpriteMode screen,
sprite,
obj_mode   )     PA_obj[screen][sprite].atr0 = (PA_obj[screen][sprite].atr0 & ALL_BUT(OBJ_MODE)) + ((obj_mode) << 10)
 

Régler le mode d'un sprite : 0 pour normal, 1 pour transparent, 2 pour fenetre

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro de l'objet dans le systeme de sprite
obj_mode Mode : 0 pour normal, 1 pour transparent, 2 pour fenetre ; ne marche pas encore

#define PA_SetSpriteMosaic screen,
obj,
mosaic   )     PA_obj[screen][obj].atr0 = (PA_obj[screen][obj].atr0 & ALL_BUT(OBJ_MOSAIC)) + ((mosaic) << 12)
 

Mettre ou non un sprite en mode mosaic

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite
mosaic Mode mosaic activé (1) ou désactivé (0)

#define PA_SetSpritePal screen,
obj,
pal   )     PA_obj[screen][obj].atr2 = (PA_obj[screen][obj].atr2 & ALL_BUT_PAL) + ((pal) << 12)
 

Changer la palette d'un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite
pal Numéro de la palette (de 0 à 15)

#define PA_SetSpritePrio screen,
obj,
prio   )     PA_obj[screen][obj].atr2 = (PA_obj[screen][obj].atr2 & ALL_BUT(OBJ_PRIO)) + ((prio) << 10)
 

Régler la priorité d'un sprite par rapport au Bg.

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite
prio Priorité du sprite : 0 est au-dessus du fond 0, 1 au-dessus du 1, etc... (0-3)

#define PA_SetSpriteRotDisable screen,
sprite   )     {PA_obj[screen][sprite].atr0 &= ALL_BUT(OBJ_ROT); PA_obj[screen][sprite].atr1 &= ALL_BUT_ROTSET;}
 

Arreter de faire tourner et zoomer un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Sprite que l'on veut faire tourner

#define PA_SetSpriteRotEnable screen,
sprite,
rotset   )     {PA_obj[screen][sprite].atr0 |= OBJ_ROT; PA_obj[screen][sprite].atr1 = (PA_obj[screen][sprite].atr1 & ALL_BUT_ROTSET) + ((rotset) << 9);}
 

Faire tourner et zoomer un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Sprite que l'on veut faire tourner
rotset Rotset que l'on veut pour un sprite donné (0-31). On peut a priori utiliser un rotset pour plusieurs sprites, s'ils sont zoomés/tournés pareil...

#define PA_SetSpriteVflip screen,
obj,
vflip   )     PA_obj[screen][obj].atr1 = (PA_obj[screen][obj].atr1 & ALL_BUT(OBJ_VFLIP)) + ((vflip) << 13)
 

Utiliser ou non le flip vertical pour un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite
vflip Flip vertical, 1 pour oui, 0 pour non...

#define PA_SetSpriteX screen,
obj,
 )     PA_obj[screen][obj].atr1 = (PA_obj[screen][obj].atr1 & ALL_BUT(PA_OBJ_X)) + ((x) & PA_OBJ_X)
 

Position X du sprite à l'écran

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite
x Position X

#define PA_SetSpriteY screen,
obj,
 )     PA_obj[screen][obj].atr0 = (PA_obj[screen][obj].atr0 & ALL_BUT(PA_OBJ_Y)) + ((y) & PA_OBJ_Y)
 

Position Y du sprite à l'écran

Paramètres:
screen Choix de l'écran (0 ou 1)
obj Numéro de l'objet dans le systeme de sprite
y Position Y

#define PA_UpdateSpriteGfx screen,
obj_number,
obj_data   )     PA_UpdateGfx(screen, PA_GetSpriteGfx(screen, obj_number), obj_data)
 

Mettre à jour les Gfx d'un sprite donné

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_number Numéro de l'objet dans le systeme de sprite
obj_data Graphisme à charger


Documentation des fonctions

inline void PA_Create16bitSprite u8  screen,
u8  obj_number,
void *  obj_data,
u8  obj_shape,
u8  obj_size,
s16  x,
s16  y
[inline]
 

Creer un sprite de 16 bits avec ses gfx... Ceci est la version simple de la fonction. Attention : un sprite de 16 bits DOIT etre large de 128 pixels, meme si ce sprite ne prend qu'une petite partie sur la gauche

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_number Numéro du sprite que vous voulez utiliser (de 0 à 127 pour chaque écran séparemment).
obj_data Gfx à charger
obj_shape Forme du sprite à charger, de 0 à 2. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
obj_size Taille du sprite. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
x Position X du sprite
y Position Y du sprite

inline void PA_Create16bitSpriteEx u8  screen,
u8  obj_number,
void *  obj_data,
u8  obj_shape,
u8  obj_size,
u8  mosaic,
u8  hflip,
u8  vflip,
u8  prio,
u8  dblsize,
s16  x,
s16  y
[inline]
 

Creer un sprite de 16 bits avec ses gfx... Ceci est la version complexe de la fonction. Attention : un sprite de 16 bits DOIT etre large de 128 pixels, meme si ce sprite ne prend qu'une petite partie sur la gauche

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_number Numéro du sprite que vous voulez utiliser (de 0 à 127 pour chaque écran séparemment).
obj_data Gfx à charger
obj_shape Forme du sprite à charger, de 0 à 2. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
obj_size Taille du sprite. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
mosaic Activer le mode mosaique pour ce sprite. Pas encore au point...
hflip Flip horizontal activé ou non.
vflip Flip vertical...
prio Priorité du sprite vis-à-vis des fonds : devant quel fond l'afficher... (0-3)
dblsize Doubler la taille possible du sprite. A activer uniquement si on compte grossir et faire tourner le sprite
x Position X du sprite
y Position Y du sprite

inline void PA_Create16bitSpriteFromGfx u8  screen,
u8  obj_number,
u16  gfx,
u8  obj_shape,
u8  obj_size,
s16  x,
s16  y
[inline]
 

Creer un sprite de 16 bits à partir de gfx...

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_number Numéro du sprite que vous voulez utiliser (de 0 à 127 pour chaque écran séparemment).
gfx Gfx à utiliser
obj_shape Forme du sprite à charger, de 0 à 2. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
obj_size Taille du sprite. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
x Position X du sprite
y Position Y du sprite

u16 PA_CreateGfx u8  screen,
void *  obj_data,
u8  obj_shape,
u8  obj_size,
u8  color_mode
 

Charger en mémoire un gfx à utiliser plus tard pour un sprite. Renvoie le numéro en mémoire.

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_data Gfx à charger
obj_shape Forme du sprite à charger, de 0 à 2. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
obj_size Taille du sprite. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
color_mode Mode 256 ou 16 couleurs (1 ou 0), ou 2 pour 16 bits

inline void PA_CreateSprite u8  screen,
u8  obj_number,
void *  obj_data,
u8  obj_shape,
u8  obj_size,
u8  color_mode,
u8  palette,
s16  x,
s16  y
[inline]
 

Creer un sprite avec ses gfx... Ceci est la version simple de la fonction

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_number Numéro du sprite que vous voulez utiliser (de 0 à 127 pour chaque écran séparemment).
obj_data Gfx à charger
obj_shape Forme du sprite à charger, de 0 à 2. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
obj_size Taille du sprite. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
color_mode Mode 256 ou 16 couleurs (1 ou 0).
palette Palette à utiliser (0-15).
x Position X du sprite
y Position Y du sprite

inline void PA_CreateSpriteEx u8  screen,
u8  obj_number,
void *  obj_data,
u8  obj_shape,
u8  obj_size,
u8  color_mode,
u8  palette,
u8  obj_mode,
u8  mosaic,
u8  hflip,
u8  vflip,
u8  prio,
u8  dblsize,
s16  x,
s16  y
[inline]
 

Creer un sprite avec ses gfx... Ceci est la version complexe de la fonction

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_number Numéro du sprite que vous voulez utiliser (de 0 à 127 pour chaque écran séparemment).
obj_data Gfx à charger
obj_shape Forme du sprite à charger, de 0 à 2. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
obj_size Taille du sprite. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
color_mode Mode 256 ou 16 couleurs (1 ou 0).
palette Palette à utiliser (0-15).
obj_mode Mode du sprite (normal, transparent, fenetre). Pas encore opérationnel, laisser à 0...
mosaic Activer le mode mosaique pour ce sprite. Pas encore au point...
hflip Flip horizontal activé ou non.
vflip Flip vertical...
prio Priorité du sprite vis-à-vis des fonds : devant quel fond l'afficher... (0-3)
dblsize Doubler la taille possible du sprite. A activer uniquement si on compte grossir et faire tourner le sprite
x Position X du sprite
y Position Y du sprite

inline void PA_CreateSpriteExFromGfx u8  screen,
u8  obj_number,
u16  obj_gfx,
u8  obj_shape,
u8  obj_size,
u8  color_mode,
u8  palette,
u8  obj_mode,
u8  mosaic,
u8  hflip,
u8  vflip,
u8  prio,
u8  dblsize,
s16  x,
s16  y
[inline]
 

Creer un sprite avec ses gfx... Ceci est la version complexe de la fonction

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_number Numéro du sprite que vous voulez utiliser (de 0 à 127 pour chaque écran séparemment).
obj_gfx Gfx en mémoire à utiliser. On peut en avoir avec PA_GetSpriteGfx ou PA_CreateGfx
obj_shape Forme du sprite à charger, de 0 à 2. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
obj_size Taille du sprite. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
color_mode Mode 256 ou 16 couleurs (1 ou 0).
palette Palette à utiliser (0-15).
obj_mode Mode du sprite (normal, transparent, fenetre). Pas encore opérationnel, laisser à 0...
mosaic Activer le mode mosaique pour ce sprite. Pas encore au point...
hflip Flip horizontal activé ou non.
vflip Flip vertical...
prio Priorité du sprite vis-à-vis des fonds : devant quel fond l'afficher... (0-3)
dblsize Doubler la taille possible du sprite. A activer uniquement si on compte grossir et faire tourner le sprite
x Position X du sprite
y Position Y du sprite

inline void PA_CreateSpriteFromGfx u8  screen,
u8  obj_number,
u16  obj_gfx,
u8  obj_shape,
u8  obj_size,
u8  color_mode,
u8  palette,
s16  x,
s16  y
[inline]
 

Creer un sprite avec ses gfx... Ceci est la version simple de la fonction

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_number Numéro du sprite que vous voulez utiliser (de 0 à 127 pour chaque écran séparemment).
obj_gfx Gfx en mémoire à utiliser. On peut en avoir avec PA_GetSpriteGfx ou PA_CreateGfx
obj_shape Forme du sprite à charger, de 0 à 2. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
obj_size Taille du sprite. Utiliser la macro OBJ_SIZE_32X32 (...) pour charger la forme et la taille...
color_mode Mode 256 ou 16 couleurs (1 ou 0).
palette Palette à utiliser (0-15).
x Position X du sprite
y Position Y du sprite

void PA_DeleteGfx u8  screen,
u16  obj_gfx
 

Effacer un Gfx. Si un sprite l'utilisait, il deviendra invisible...

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_gfx Numéro du Gfx en mémoire

void PA_DeleteSprite u8  screen,
u8  obj_number
 

Effacer un sprite. S'il était le seul à utiliser un gfx, il sera effacé lui aussi

Paramètres:
screen Choix de l'écran (0 ou 1)
obj_number Numéro du sprite

inline u8 PA_GetSprite16cPixel u8  screen,
u8  sprite,
u8  x,
u8  y
[inline]
 

Récupérer la couleur d'un pixel d'un sprite de 16 couleurs.

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
x Coordonnée X du pixel
y Coordonnée Y du pixel

inline u16 PA_GetSpriteAnimFrame u8  screen,
u8  sprite
[inline]
 

Renvoie le numéro actuel de la frame d'animation

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite

inline u16 PA_GetSpriteAnimSpeed u8  screen,
u8  sprite
[inline]
 

Renvoie la vitesse de l'animation

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite

inline u16 PA_GetSpriteNCycles u8  screen,
u8  sprite
[inline]
 

Renvoie le nombre de cycles d'animation restants

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite

inline u8 PA_GetSpritePixel u8  screen,
u8  sprite,
u8  x,
u8  y
[inline]
 

Récupérer la couleur d'un pixel d'un sprite. Comme PA_GetSpritePixelEx, avec moins d'options, mais un peu plus lent

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
x Coordonnée X du pixel
y Coordonnée Y du pixel

void PA_InitSpriteDraw u8  screen,
u8  sprite
 

Initialise un sprite pour pouvoir dessiner dessus !

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite

void PA_InitSpriteExtPrio u8  SpritePrio  ) 
 

Activer le systeme de priorité de sprites PAlib. Plus lent que le systeme normal, il permet d'avoir 256 niveaux de priorité (supplante la priorité par numéro de sprites)

Paramètres:
SpritePrio 1 pour on, 0 pour off...

void PA_ResetSpriteSys void   ) 
 

Remise à 0 du système de sprite, de la mémoire...

Paramètres:
screen Choix de l'écran (0 ou 1)

inline void PA_SetRotset u8  screen,
u8  rotset,
s16  angle,
u16  zoomx,
u16  zoomy
[inline]
 

Faire tourner et zoomer un sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
rotset Rotset que l'on veut changer. Pour attribuer un rotset à un sprite, utiliser PA_SetSpriteRotEnable
angle Angle, entre 0 et 512 (et non 360, attention !)
zoomx Zoom horizontal. 256 est pas de zoom, 512 2 fois plus petit, et 128 2 fois plus grand... Ajuster au mieux ! :p
zoomy Zoom vertical. 256 est pas de zoom, 512 2 fois plus petit, et 128 2 fois plus grand... Ajuster au mieux ! :p

inline void PA_SetRotsetNoAngle u8  screen,
u8  rotset,
u16  zoomx,
u16  zoomy
[inline]
 

Zoomer un sprite sans le faire tourner. C'est un peu plus rapide que la fonction PA_SetRotset

Paramètres:
screen Choix de l'écran (0 ou 1)
rotset Rotset que l'on veut changer. Pour attribuer un rotset à un sprite, utiliser PA_SetSpriteRotEnable
zoomx Zoom horizontal. 256 est pas de zoom, 512 2 fois plus petit, et 128 2 fois plus grand... Ajuster au mieux ! :p
zoomy Zoom vertical. 256 est pas de zoom, 512 2 fois plus petit, et 128 2 fois plus grand... Ajuster au mieux ! :p

inline void PA_SetRotsetNoZoom u8  screen,
u8  rotset,
s16  angle
[inline]
 

Faire tourner un sprite sans zoomer. C'est un peu plus rapide que la fonction PA_SetRotset

Paramètres:
screen Choix de l'écran (0 ou 1)
rotset Rotset que l'on veut changer. Pour attribuer un rotset à un sprite, utiliser PA_SetSpriteRotEnable
angle Angle, entre 0 et 512 (et non 360, attention !)

inline void PA_SetSpriteAnim u8  screen,
u8  sprite,
s16  animframe
[inline]
 

Régler l'image du sprite dans l'animation. Identique à PA_SetSpriteAnimEx, mais plus simple à utiliser, par contre plus lent

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
animframe Frame de l'animation du sprite (0, 1, 2, etc...)

inline void PA_SetSpriteAnimEx u8  screen,
u8  sprite,
u8  lx,
u8  ly,
u8  ncolors,
s16  animframe
[inline]
 

Régler l'image du sprite dans l'animation. Cette fonction est plus rapide que PA_SetSpriteAnim parce qu'elle n'a pas à rechercher les dimensions du sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
lx Largeur du sprite (8, 16, 32, 64)
ly Hauteur du sprite (8, 16, 32, 64)
ncolors Mode couleur du sprite (0 pour 16 couleurs, 1 pour 256)
animframe Frame de l'animation du sprite (0, 1, 2, etc...)

inline void PA_SetSpriteAnimFrame u8  screen,
u8  sprite,
u16  frame
[inline]
 

Changer le numéro actuel de la frame d'animation

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
frame Numéro de frame...

inline void PA_SetSpriteAnimSpeed u8  screen,
u8  sprite,
s16  speed
[inline]
 

Changer la vitesse de l'animation

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
speed Vitesse, en fps...

inline void PA_SetSpriteNCycles u8  screen,
u8  sprite,
s16  NCycles
[inline]
 

Changer le nombre de cycles d'animation restant (-1 pour inifini)

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
NCycles Nombre de cycles

inline void PA_SetSpritePixel u8  screen,
u8  sprite,
u8  x,
u8  y,
u8  color
[inline]
 

Mettre un pixel d'un sprite à une couleur donnée. Comme PA_SetSpritePixelEx, avec moins d'options, mais un peu plus lent

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
x Coordonnée X du pixel à changer
y Coordonnée Y du pixel à changer
color Nouvelle couleur de la palette à metrre

inline void PA_SetSpriteXY u8  screen,
u8  sprite,
s16  x,
s16  y
[inline]
 

Position X et Y du sprite à l'écran

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
x Position Y
y Position Y

inline u16 PA_SpriteAnimPause u8  screen,
u8  sprite,
u8  pause
[inline]
 

Mettre en Pause en remettre en lecture une animation de sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
pause 1 pour pause, 0 pour reprendre la lecture...

inline void PA_StartSpriteAnim u8  screen,
u8  sprite,
s16  firstframe,
s16  lastframe,
s16  speed
[inline]
 

Démarre une animation de sprite. Une fois démarrée, elle continue tant qu'on ne l'arrête pas !

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
firstframe Premières image de l'animation, généralement 0....
lastframe Dernière image à afficher. Une fois atteinte, ca retourne à la première
speed Vitesse, en frames par seconde (fps). 1 signifie donc 1 image par seconde...

void PA_StartSpriteAnimEx u8  screen,
u8  sprite,
s16  firstframe,
s16  lastframe,
s16  speed,
u8  type,
s16  ncycles
 

Démarre une animation de sprite. Une fois démarrée, elle continue tant qu'on ne l'arrête pas !

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite
firstframe Premières image de l'animation, généralement 0....
lastframe Dernière image à afficher. Une fois atteinte, ca retourne à la première
speed Vitesse, en frames par seconde (fps). 1 signifie donc 1 image par seconde...
type Défini de quelle manière on veut boucler. ANIM_LOOP (0) pour normal, et ANIM_UPDOWN (1) pour d'avant en arrière
ncycles Nombres de cycles d'animations avant l'arrêt. Si on utilise ANIM_UPDOWN, il faut 2 cycles pour que l'animation revienne à l'image de base

inline void PA_StopSpriteAnim u8  screen,
u8  sprite
[inline]
 

Arrêter une animation de sprite

Paramètres:
screen Choix de l'écran (0 ou 1)
sprite Numéro du sprite dans le systeme de sprite

inline void PA_UpdateGfx u8  screen,
u16  gfx_number,
void *  obj_data
[inline]
 

Mettre à jour les Gfx donnés

Paramètres:
screen Choix de l'écran (0 ou 1)
gfx_number Numéro du Gfx en mémoire
obj_data Graphisme à charger

inline void PA_UpdateGfxAndMem u8  screen,
u8  gfx_number,
void *  obj_data
[inline]
 

Mettre à jour les Gfx donnés et le pointer d'animation dans PAlib... Uniquement pour utilisateurs avertis

Paramètres:
screen Choix de l'écran (0 ou 1)
gfx_number Numéro du Gfx en mémoire
obj_data Graphisme à charger


Généré le Tue Jan 30 23:10:51 2007 pour PAlib par  doxygen 1.3.9.1