Sprite system for Dual Screen


Functions

void PA_SetScreenSpace (s16 ScreenSpace)
 Set the space between the 2 screens for the Dual Fonctions. 48 pixels by default.
void PA_DualSetSpriteX (u8 obj, s16 x)
 Set the X position of a sprite on screen.
void PA_DualSetSpriteY (u8 obj, s16 y)
 Set the Y position of a sprite on screen.
void PA_DualSetSpriteXY (u8 sprite, s16 x, s16 y)
 Set the X and Y position of a sprite on screen.
void PA_DualCreateSprite (u8 obj_number, void *obj_data, u8 obj_shape, u8 obj_size, u8 color_mode, u8 palette, s16 x, s16 y)
 Create a sprite with it's gfx, on 2 screens.
void PA_DualCreateSpriteEx (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)
 Create a sprite with it's gfx. This is the complex version of the function.
void PA_DualCreate16bitSpriteEx (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)
 Create a 16 bit sprite with it's gfx. This is the complex version of the function. Warning : a 16bit sprite MUST be 128 pixels large, even if you sprite only takes up a small part on the left...
void PA_DualCreate16bitSprite (u8 obj_number, void *obj_data, u8 obj_shape, u8 obj_size, s16 x, s16 y)
 Create a 16 bit sprite with it's gfx. This is the simple version of the function. Warning : a 16bit sprite MUST be 128 pixels large, even if you sprite only takes up a small part on the left...
void PA_DualCreateSpriteFromGfx (u8 obj_number, u16 *obj_gfx, u8 obj_shape, u8 obj_size, u8 color_mode, u8 palette, s16 x, s16 y)
 Create a sprite with it's gfx. This is the simple version of the function.
void PA_DualCreateSpriteExFromGfx (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)
 Create a sprite with it's gfx. This is the complex version of the function.
void PA_DualUpdateSpriteGfx (u8 obj_number, void *obj_data)
 Update the Gfx of a given sprite.
void PA_DualUpdateGfx (u16 gfx_number, void *obj_data)
 Update the Gfx of a given sprite.
void PA_DualDeleteSprite (u8 obj_number)
 Delete a given sprite. If it is the only one to use it's gfx, it'll be deleted too.
void PA_DualSetSpriteRotEnable (u8 sprite, u8 rotset)
 Rotate and zoom a sprite.
void PA_DualSetSpriteRotDisable (u8 sprite)
 Stop rotating and zooming a sprite.
void PA_DualSetRotset (u8 rotset, s16 angle, u16 zoomx, u16 zoomy)
 Rotate and zoom a sprite.
void PA_DualSetRotsetNoZoom (u8 rotset, s16 angle)
 Rotate a sprite without zooming. It's a bit faster than the normal PA_SetRotset function.
void PA_DualSetRotsetNoAngle (u8 rotset, u16 zoomx, u16 zoomy)
 Zoom a sprite without rotating. It's a bit faster than the normal PA_SetRotset function.
void PA_DualSetSpritePal (u8 obj, u8 pal)
 Set the color palette used by a sprite.
void PA_DualSetSpriteDblsize (u8 obj, u8 dblsize)
 Enable or disable double size for a given sprite.
void PA_DualSetSpriteColors (u8 sprite, u8 n_colors)
 Change the sprite's color mode.
void PA_DualSetSpriteMode (u8 sprite, u8 obj_mode)
 Set the sprite's mode : 0 for normal, 1 for alpha blending, 2 for window.
void PA_DualSetSpriteMosaic (u8 obj, u8 mosaic)
 Enable or disable mosaic mode for a given sprite.
void PA_DualSetSpriteHflip (u8 obj, u8 hflip)
 Enable or disable horizontal flip for a given sprite.
void PA_DualSetSpriteVflip (u8 obj, u8 vflip)
 Enable or disable vertical flip for a given sprite.
void PA_DualSetSpriteGfx (u8 obj, u16 *gfx)
 Change the gfx used by a sprite.
void PA_DualSetSpritePrio (u8 obj, u8 prio)
 Set a sprite's Background priority.
void PA_DualCloneSprite (u8 obj, u8 target)
 Clone a sprite. Works only for sprites on the same screen.
void PA_DualSetSpriteAnimEx (u8 sprite, u8 lx, u8 ly, u8 ncolors, s16 animframe)
 Set the animation frame for a given sprite. This function is faster than the normal PA_SetSpriteAnim because it doesn't have to lookup the sprite dimensions...
void PA_DualSetSpriteAnim (u8 sprite, s16 animframe)
 Set the animation frame for a given sprite. Same as PA_SetSpriteAnimEx, but a bit slower and easier to use...
void PA_DualStartSpriteAnimEx (u8 sprite, s16 firstframe, s16 lastframe, s16 speed, u8 type, s16 ncycles)
 Start a sprite animation for DualSprites. Once started, it continues on and on by itself until you stop it !
void PA_DualStartSpriteAnim (u8 sprite, s16 firstframe, s16 lastframe, s16 speed)
 Start a sprite animation for DualSprite. Once started, it continues on and on by itself until you stop it !
void PA_DualStopSpriteAnim (u8 sprite)
 Stop a sprite animation for DualSprites.
void PA_DualSetSpriteAnimFrame (u8 sprite, u16 frame)
 Set the current animation frame number for DualSprites.
u16 PA_DualGetSpriteAnimFrame (u8 sprite)
 Returns the current animation frame number for DualSprites.
void PA_DualSetSpriteAnimSpeed (u8 sprite, s16 speed)
 Set the current animation speed for DualSprites.
u16 PA_DualGetSpriteAnimSpeed (u8 sprite)
 Returns the current animation speed for DualSprites.
void PA_DualSpriteAnimPause (u8 sprite, u8 pause)
 Pause or UnPause a sprite animation for DualSprites.

Detailed Description

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

Function Documentation

inline void PA_DualCloneSprite ( u8  obj,
u8  target 
) [inline]

Clone a sprite. Works only for sprites on the same screen.

Parameters:
obj Object number in the sprite system
target Target sprite to clone

inline void PA_DualCreate16bitSprite ( u8  obj_number,
void *  obj_data,
u8  obj_shape,
u8  obj_size,
s16  x,
s16  y 
) [inline]

Create a 16 bit sprite with it's gfx. This is the simple version of the function. Warning : a 16bit sprite MUST be 128 pixels large, even if you sprite only takes up a small part on the left...

Parameters:
obj_number Object number you want to use (0-127 for each screen seperately).
obj_data Gfx to load
obj_shape Object shape, from 0 to 2. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
obj_size Object size. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
x X position of the sprite
y Y position of the sprite

inline void PA_DualCreate16bitSpriteEx ( 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]

Create a 16 bit sprite with it's gfx. This is the complex version of the function. Warning : a 16bit sprite MUST be 128 pixels large, even if you sprite only takes up a small part on the left...

Parameters:
obj_number Object number you want to use (0-127 for each screen seperately).
obj_data Gfx to load
obj_shape Object shape, from 0 to 2. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
obj_size Object size. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
mosaic Activate Mosaic for the sprite or not. Not yet functionnal either :p
hflip Horizontal flip on or off...
vflip Vertical flip...
prio Sprite priority regarding backgrounds : in front of which background to show it (0-3)
dblsize Double the possible sprite size. Activate only if you are going to rotate and zoom in the sprite
x X position of the sprite
y Y position of the sprite

inline void PA_DualCreateSprite ( u8  obj_number,
void *  obj_data,
u8  obj_shape,
u8  obj_size,
u8  color_mode,
u8  palette,
s16  x,
s16  y 
) [inline]

Create a sprite with it's gfx, on 2 screens.

Parameters:
obj_number Object number you want to use (0-127 for each screen seperately).
obj_data Gfx to load
obj_shape Object shape, from 0 to 2. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
obj_size Object size. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
color_mode 256 or 16 color mode (1 or 0).
palette Palette to use (0-15).
x X position of the sprite
y Y position of the sprite

inline void PA_DualCreateSpriteEx ( 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]

Create a sprite with it's gfx. This is the complex version of the function.

Parameters:
obj_number Object number you want to use (0-127 for each screen seperately).
obj_data Gfx to load
obj_shape Object shape, from 0 to 2. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
obj_size Object size. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
color_mode 256 or 16 color mode (1 or 0).
palette Palette to use (0-15).
obj_mode Object mode (normal, transparent, window). Not functionnal yet, please leave to 0 for now
mosaic Activate Mosaic for the sprite or not. Not yet functionnal either :p
hflip Horizontal flip on or off...
vflip Vertical flip...
prio Sprite priority regarding backgrounds : in front of which background to show it (0-3)
dblsize Double the possible sprite size. Activate only if you are going to rotate and zoom in the sprite
x X position of the sprite
y Y position of the sprite

inline void PA_DualCreateSpriteExFromGfx ( 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]

Create a sprite with it's gfx. This is the complex version of the function.

Parameters:
obj_number Object number you want to use (0-127 for each screen seperately).
obj_gfx Memory gfx to use. Get it by using PA_GetSpriteGfx or PA_CreateGfx
obj_shape Object shape, from 0 to 2. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
obj_size Object size. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
color_mode 256 or 16 color mode (1 or 0).
palette Palette to use (0-15).
obj_mode Object mode (normal, transparent, window). Not functionnal yet, please leave to 0 for now
mosaic Activate Mosaic for the sprite or not. Not yet functionnal either :p
hflip Horizontal flip on or off...
vflip Vertical flip...
prio Sprite priority regarding backgrounds : in front of which background to show it (0-3)
dblsize Double the possible sprite size. Activate only if you are going to rotate and zoom in the sprite
x X position of the sprite
y Y position of the sprite

inline void PA_DualCreateSpriteFromGfx ( u8  obj_number,
u16 *  obj_gfx,
u8  obj_shape,
u8  obj_size,
u8  color_mode,
u8  palette,
s16  x,
s16  y 
) [inline]

Create a sprite with it's gfx. This is the simple version of the function.

Parameters:
obj_number Object number you want to use (0-127 for each screen seperately).
obj_gfx Memory gfx to use. Get it by using PA_GetSpriteGfx or PA_CreateGfx
obj_shape Object shape, from 0 to 2. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
obj_size Object size. Use the OBJ_SIZE_32X32 (...) macros for object shape and obj_size...
color_mode 256 or 16 color mode (1 or 0).
palette Palette to use (0-15).
x X position of the sprite
y Y position of the sprite

inline void PA_DualDeleteSprite ( u8  obj_number  )  [inline]

Delete a given sprite. If it is the only one to use it's gfx, it'll be deleted too.

Parameters:
obj_number Sprite number

inline u16 PA_DualGetSpriteAnimFrame ( u8  sprite  )  [inline]

Returns the current animation frame number for DualSprites.

Parameters:
sprite sprite number in the sprite system

inline u16 PA_DualGetSpriteAnimSpeed ( u8  sprite  )  [inline]

Returns the current animation speed for DualSprites.

Parameters:
sprite sprite number in the sprite system

inline void PA_DualSetRotset ( u8  rotset,
s16  angle,
u16  zoomx,
u16  zoomy 
) [inline]

Rotate and zoom a sprite.

Parameters:
rotset Rotset you want to change. To give a sprite a rotset, use PA_SetSpriteRotEnable...
angle Angle, between 0 and 512 (not 360, be carefull)
zoomx Horizontal zoom. 256 is unzoomed, 512 is 2 times smaller, and 128 twice as big... So adjust at will ! :p
zoomy Vertical zoom. 256 is unzoomed, 512 is 2 times smaller, and 128 twice as big... So adjust at will ! :p

inline void PA_DualSetRotsetNoAngle ( u8  rotset,
u16  zoomx,
u16  zoomy 
) [inline]

Zoom a sprite without rotating. It's a bit faster than the normal PA_SetRotset function.

Parameters:
rotset Rotset you want to change. To give a sprite a rotset, use PA_SetSpriteRotEnable...
zoomx Horizontal zoom. 256 is unzoomed, 512 is 2 times smaller, and 128 twice as big... So adjust at will ! :p
zoomy Vertical zoom. 256 is unzoomed, 512 is 2 times smaller, and 128 twice as big... So adjust at will ! :p

inline void PA_DualSetRotsetNoZoom ( u8  rotset,
s16  angle 
) [inline]

Rotate a sprite without zooming. It's a bit faster than the normal PA_SetRotset function.

Parameters:
rotset Rotset you want to change. To give a sprite a rotset, use PA_SetSpriteRotEnable...
angle Angle, between 0 and 512 (not 360, be carefull)

inline void PA_DualSetSpriteAnim ( u8  sprite,
s16  animframe 
) [inline]

Set the animation frame for a given sprite. Same as PA_SetSpriteAnimEx, but a bit slower and easier to use...

Parameters:
sprite sprite number in the sprite system
animframe Sprite animation frame (0, 1, 2, etc...)

inline void PA_DualSetSpriteAnimEx ( u8  sprite,
u8  lx,
u8  ly,
u8  ncolors,
s16  animframe 
) [inline]

Set the animation frame for a given sprite. This function is faster than the normal PA_SetSpriteAnim because it doesn't have to lookup the sprite dimensions...

Parameters:
sprite sprite number in the sprite system
lx Sprite width (8, 16, 32, 64)
ly Sprite height (8, 16, 32, 64)
ncolors Sprite color mode (0 for 16 colors, 1 for 256)
animframe Sprite animation frame (0, 1, 2, etc...)

inline void PA_DualSetSpriteAnimFrame ( u8  sprite,
u16  frame 
) [inline]

Set the current animation frame number for DualSprites.

Parameters:
sprite sprite number in the sprite system
frame Frame number to use...

inline void PA_DualSetSpriteAnimSpeed ( u8  sprite,
s16  speed 
) [inline]

Set the current animation speed for DualSprites.

Parameters:
sprite sprite number in the sprite system
speed Speed, in fps...

inline void PA_DualSetSpriteColors ( u8  sprite,
u8  n_colors 
) [inline]

Change the sprite's color mode.

Parameters:
sprite Object number in the sprite system
n_colors 0 for 16 colors, 1 for 256

inline void PA_DualSetSpriteDblsize ( u8  obj,
u8  dblsize 
) [inline]

Enable or disable double size for a given sprite.

Parameters:
obj Object number in the sprite system
dblsize 1 to enable doublesize, 0 to disable it...

inline void PA_DualSetSpriteGfx ( u8  obj,
u16 *  gfx 
) [inline]

Change the gfx used by a sprite.

Parameters:
obj Object number in the sprite system
gfx Gfx number ; you can get one by using PA_CreateGfx or PA_GetSpriteGfx(obj_number);

inline void PA_DualSetSpriteHflip ( u8  obj,
u8  hflip 
) [inline]

Enable or disable horizontal flip for a given sprite.

Parameters:
obj Object number in the sprite system
hflip Horizontal flip, 1 to enable, 0 to disable...

inline void PA_DualSetSpriteMode ( u8  sprite,
u8  obj_mode 
) [inline]

Set the sprite's mode : 0 for normal, 1 for alpha blending, 2 for window.

Parameters:
sprite Object number in the sprite system
obj_mode Object mode : 0 for normal, 1 for alpha blending, 2 for window ; not working yet

inline void PA_DualSetSpriteMosaic ( u8  obj,
u8  mosaic 
) [inline]

Enable or disable mosaic mode for a given sprite.

Parameters:
obj Object number in the sprite system
mosaic Set mosaic on (1) or off (0)

inline void PA_DualSetSpritePal ( u8  obj,
u8  pal 
) [inline]

Set the color palette used by a sprite.

Parameters:
obj Object number in the sprite system
pal Palette number (0 - 15)

inline void PA_DualSetSpritePrio ( u8  obj,
u8  prio 
) [inline]

Set a sprite's Background priority.

Parameters:
obj Object number in the sprite system
prio Sprite priority : 0 is over background 0, 1 over Bg 1, etc... (0-3)

inline void PA_DualSetSpriteRotDisable ( u8  sprite  )  [inline]

Stop rotating and zooming a sprite.

Parameters:
sprite Sprite you want to rotate

inline void PA_DualSetSpriteRotEnable ( u8  sprite,
u8  rotset 
) [inline]

Rotate and zoom a sprite.

Parameters:
sprite Sprite you want to rotate
rotset Rotset you want to give to that sprite (0-31). You can apparently use a rotset for multiple sprites if zoomed/rotated identically...

inline void PA_DualSetSpriteVflip ( u8  obj,
u8  vflip 
) [inline]

Enable or disable vertical flip for a given sprite.

Parameters:
obj Object number in the sprite system
vflip Vertical flip, 1 to enable, 0 to disable...

inline void PA_DualSetSpriteX ( u8  obj,
s16  x 
) [inline]

Set the X position of a sprite on screen.

Parameters:
obj Object number in the sprite system
x X position

inline void PA_DualSetSpriteXY ( u8  sprite,
s16  x,
s16  y 
) [inline]

Set the X and Y position of a sprite on screen.

Parameters:
sprite sprite number in the sprite system
x X position
y X position

inline void PA_DualSetSpriteY ( u8  obj,
s16  y 
) [inline]

Set the Y position of a sprite on screen.

Parameters:
obj Object number in the sprite system
y Y position

inline void PA_DualSpriteAnimPause ( u8  sprite,
u8  pause 
) [inline]

Pause or UnPause a sprite animation for DualSprites.

Parameters:
sprite sprite number in the sprite system
pause 1 for pause, 0 for unpause

inline void PA_DualStartSpriteAnim ( u8  sprite,
s16  firstframe,
s16  lastframe,
s16  speed 
) [inline]

Start a sprite animation for DualSprite. Once started, it continues on and on by itself until you stop it !

Parameters:
sprite sprite number in the sprite system
firstframe First frame of the animation sequence, most of the time 0...
lastframe Last frame to be displayed. When it gets there, it loops back to the first frame
speed Speed, in frames per second. So speed 1 would mean 1 image per second, so 1 image every game frame

inline void PA_DualStartSpriteAnimEx ( u8  sprite,
s16  firstframe,
s16  lastframe,
s16  speed,
u8  type,
s16  ncycles 
) [inline]

Start a sprite animation for DualSprites. Once started, it continues on and on by itself until you stop it !

Parameters:
sprite sprite number in the sprite system
firstframe First frame of the animation sequence, most of the time 0...
lastframe Last frame to be displayed. When it gets there, it loops back to the first frame
speed Speed, in frames per second. So speed 1 would mean 1 image per second, so 1 image every game frame
type Defines how you want it to loop. ANIM_LOOP (0) for a normal loop, ANIM_UPDOWN (1) for back and forth animation.
ncycles Number of animation cycles before stopping. If using ANIM_UPDOWN, it takes 2 cycles to come back to the original image

inline void PA_DualStopSpriteAnim ( u8  sprite  )  [inline]

Stop a sprite animation for DualSprites.

Parameters:
sprite sprite number in the sprite system

inline void PA_DualUpdateGfx ( u16  gfx_number,
void *  obj_data 
) [inline]

Update the Gfx of a given sprite.

Parameters:
gfx_number Gfx number in memory
obj_data Gfx to load

inline void PA_DualUpdateSpriteGfx ( u8  obj_number,
void *  obj_data 
) [inline]

Update the Gfx of a given sprite.

Parameters:
obj_number Object number in the sprite system
obj_data Gfx to load

inline void PA_SetScreenSpace ( s16  ScreenSpace  )  [inline]

Set the space between the 2 screens for the Dual Fonctions. 48 pixels by default.

Parameters:
ScreenSpace Space in pixels


Generated on Sat Jun 13 12:55:14 2009 for PAlib - Programmer's Arsenal by  doxygen 1.5.8