head 1.1; branch 1.1.1; access ; symbols start:1.1.1.1 PAlibDoc:1.1.1; locks ; strict; comment @# @; 1.1 date 2005.11.02.08.30.27; author jandujar; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2005.11.02.08.30.27; author jandujar; state Exp; branches ; next ; desc @@ 1.1 log @Initial revision @ text @
Defines | |
#define | PA_UpdateOAM() |
Update the sprite infos for both screens. Do this in the VBL | |
#define | PA_UpdateOAM0() DMA_Copy((void*)PA_obj, (void*)OAM0, 256, DMA_32NOW) |
Update the sprite infos for screen 0 only. Do this in the VBL | |
#define | PA_UpdateOAM1() DMA_Copy((void*)PA_obj + 256, (void*)OAM1, 256, DMA_32NOW) |
Update the sprite infos for screen 1 only. Do this in the VBL | |
#define | PA_UpdateSpriteGfx(screen, obj_number, obj_data) PA_UpdateGfx(screen, PA_GetSpriteGfx(screen, obj_number), obj_data) |
Update the Gfx of a given sprite | |
#define | PA_UpdateGfx(screen, gfx_number, obj_data) {DMA_Copy(obj_data, (void*)(SPRITE_GFX1 + (0x200000 * screen) + (gfx_number << NUMBER_DECAL)), (used_mem[screen][gfx_number] << MEM_DECAL), DMA_32NOW);} |
Update the Gfx of a given sprite | |
#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);} |
Rotate and zoom a sprite | |
#define | PA_SetSpriteRotDisable(screen, sprite) {PA_obj[screen][sprite].atr0 &= ALL_BUT(OBJ_ROT); PA_obj[screen][sprite].atr1 &= ALL_BUT_ROTSET;} |
Stop rotating and zooming a sprite | |
#define | PA_SetSpriteX(screen, obj, x) PA_obj[screen][obj].atr1 = (PA_obj[screen][obj].atr1 & ALL_BUT(OBJ_X)) + ((x) & OBJ_X) |
Set the X position of a sprite on screen | |
#define | PA_GetSpriteX(screen, obj) (PA_obj[screen][obj].atr1 & (OBJ_X)) |
Get the X position of a sprite on screen | |
#define | PA_SetSpriteY(screen, obj, y) PA_obj[screen][obj].atr0 = (PA_obj[screen][obj].atr0 & ALL_BUT(OBJ_Y)) + ((y) & OBJ_Y) |
Set the Y position of a sprite on screen | |
#define | PA_GetSpriteY(screen, obj) (PA_obj[screen][obj].atr0 & OBJ_Y) |
Get the Y position of a sprite on screen | |
#define | PA_SetSpritePal(screen, obj, pal) PA_obj[screen][obj].atr2 = (PA_obj[screen][obj].atr2 & ALL_BUT_PAL) + ((pal) << 12) |
Set the 16 color palette used by a sprite | |
#define | PA_GetSpritePal(screen, obj) (PA_obj[screen][obj].atr2 >> 12) |
Get the 16 color palette used by a sprite | |
#define | PA_SetSpriteDblsize(screen, obj, dblsize) PA_obj[screen][obj].atr0 = (PA_obj[screen][obj].atr0 & ALL_BUT(DBLSIZE)) + ((dblsize) << 9) |
Enable or disable double size for a given sprite | |
#define | PA_GetSpriteDblsize(screen, obj) ((PA_obj[screen][obj].atr0 & DBLSIZE) >> 9) |
Get the double size state for a given 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) |
Change the sprite's color mode | |
#define | PA_GetSpriteColors(screen, sprite) ((PA_obj[screen][sprite].atr0 & N_COLORS) >> 13) |
Get a sprite's color mode | |
#define | PA_SetSpriteMode(screen, sprite, obj_mode) PA_obj[screen][sprite].atr0 = (PA_obj[screen][sprite].atr0 & ALL_BUT(OBJ_MODE)) + ((obj_mode) << 10) |
Set the sprite's mode : 0 for normal, 1 for alpha blending, 2 for window | |
#define | PA_GetSpriteMode(screen, obj) ((PA_obj[screen][obj].atr0 & OBJ_MODE) >> 10) |
Get the sprite's mode : 0 for normal, 1 for alpha blending, 2 for window | |
#define | PA_SetSpriteMosaic(screen, obj, mosaic) PA_obj[screen][obj].atr0 = (PA_obj[screen][obj].atr0 & ALL_BUT(OBJ_MOSAIC)) + ((mosaic) << 12) |
Enable or disable mosaic mode for a given sprite | |
#define | PA_GetSpriteMosaic(screen, obj) ((PA_obj[screen][obj].atr0 & OBJ_MOSAIC) >> 12) |
Get the mosaic mode for a given sprite | |
#define | PA_SetSpriteHflip(screen, obj, hflip) PA_obj[screen][obj].atr1 = (PA_obj[screen][obj].atr1 & ALL_BUT(OBJ_HFLIP)) + ((hflip) << 12) |
Enable or disable horizontal flip for a given sprite | |
#define | PA_GetSpriteHflip(screen, obj) ((PA_obj[screen][obj].atr1 & OBJ_HFLIP) >> 12) |
Get the horizontal flip state for a given sprite | |
#define | PA_SetSpriteVflip(screen, obj, vflip) PA_obj[screen][obj].atr1 = (PA_obj[screen][obj].atr1 & ALL_BUT(OBJ_VFLIP)) + ((vflip) << 13) |
Enable or disable vertical flip for a given sprite | |
#define | PA_GetSpriteVflip(screen, obj) ((PA_obj[screen][obj].atr1 & OBJ_VFLIP) >> 13) |
Get the vertical flip state for a given sprite | |
#define | PA_SetSpriteGfx(screen, obj, gfx) PA_obj[screen][obj].atr2 = (PA_obj[screen][obj].atr2 & ALL_BUT(OBJ_GFX)) + ((gfx) & OBJ_GFX) |
Change the gfx used by a sprite | |
#define | PA_GetSpriteGfx(screen, obj) (PA_obj[screen][obj].atr2 & OBJ_GFX) |
Get the gfx used by a sprite | |
#define | PA_SetSpritePrio(screen, obj, prio) PA_obj[screen][obj].atr2 = (PA_obj[screen][obj].atr2 & ALL_BUT(OBJ_PRIO)) + ((prio) << 10) |
Set a sprite's Background priority | |
#define | PA_GetSpritePrio(screen, obj) ((PA_obj[screen][obj].atr2 & OBJ_PRIO) >> 10) |
Get a sprite's Background priority | |
#define | PA_GetSpriteLx(screen, sprite) PA_size[PA_obj[screen][sprite].atr0 >> 14][PA_obj[screen][sprite].atr1 >> 14].lx |
Get a sprite's length | |
#define | PA_GetSpriteLy(screen, sprite) PA_size[PA_obj[screen][sprite].atr0 >> 14][PA_obj[screen][sprite].atr1 >> 14].ly |
Get a sprite's height | |
#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)];} |
Clone a sprite. Works only for sprites on the same screen | |
#define | PA_SetSpritePixel(screen, sprite, x, y, color) PA_SetSpritePixelEx(screen, sprite, PA_GetSpriteLx(screen, sprite), PA_GetSpriteColors(screen, sprite), x, y, color) |
Set a sprite's pixel to a given palette color. Like PA_SetSpritePixelEx, with less options, but a little slower | |
#define | PA_GetSpritePixel(screen, sprite, x, y) PA_GetSpritePixelEx(screen, sprite, PA_GetSpriteLx(screen, sprite), PA_GetSpriteColors(screen, sprite), x, y) |
Get a sprite's pixel color. Like PA_GetSpritePixelEx, with less options, but a little slower | |
#define | PA_SpriteDrawNot(draw_number) PA_DrawSprite[draw_number].wasdrawing = 0 |
Must be used if a drawing sprite is initialised and you are not drawing on it | |
Functions | |
u16 | PA_CreateGfx (bool screen, void *obj_data, u8 obj_shape, u8 obj_size, u8 color_mode) |
Load in mémory a gfx to use later on for a sprite. Returns the gfx's number in memory | |
void | PA_ResetSpriteSys (void) |
Reset the sprite system, memory, etc... | |
void | PA_CreateSprite (bool screen, 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. This is the simple version of the function | |
void | PA_CreateSpriteEx (bool screen, u8 obj_number, void *obj_data, u8 obj_shape, u8 obj_size, u8 color_mode, u8 palette, u8 obj_mode, bool mosaic, bool hflip, bool vflip, u8 prio, bool dblsize, s16 x, s16 y) |
Create a sprite with it's gfx. This is the complex version of the function | |
void | PA_Create16bitSpriteEx (bool screen, u8 obj_number, void *obj_data, u8 obj_shape, u8 obj_size, bool mosaic, bool hflip, bool vflip, u8 prio, bool 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_Create16bitSprite (bool screen, 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_CreateSpriteFromGfx (bool screen, 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_CreateSpriteExFromGfx (bool screen, u8 obj_number, u16 obj_gfx, u8 obj_shape, u8 obj_size, u8 color_mode, u8 palette, u8 obj_mode, bool mosaic, bool hflip, bool vflip, u8 prio, bool dblsize, s16 x, s16 y) |
Create a sprite with it's gfx. This is the complex version of the function | |
void | PA_DeleteGfx (bool screen, u16 obj_gfx) |
Delete a given Gfx. If a sprite uses this gfx, it'll become invisible | |
void | PA_DeleteSprite (bool screen, 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_SetRotset (bool screen, u8 rotset, s16 angle, u16 zoomx, u16 zoomy) |
Rotate and zoom a sprite | |
void | PA_SetRotsetNoZoom (bool screen, u8 rotset, s16 angle) |
Rotate a sprite without zooming. It's a bit faster than the normal PA_SetRotset function | |
void | PA_SetRotsetNoAngle (bool screen, u8 rotset, u16 zoomx, u16 zoomy) |
Zoom a sprite without rotating. It's a bit faster than the normal PA_SetRotset function | |
void | PA_SetSpriteXY (bool screen, u8 sprite, s16 x, s16 y) |
Set the X and Y position of a sprite on screen | |
void | PA_SetSpriteAnimEx (bool screen, 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_SetSpriteAnim (bool screen, 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_SetSpritePixelEx (bool screen, u8 sprite, u8 hsize, u8 n_colors, u8 x, u8 y, u8 color) |
Set a sprite's pixel to a given palette color | |
u8 | PA_GetSpritePixelEx (bool screen, u8 sprite, u8 hsize, u8 n_colors, u8 x, u8 y) |
Get a sprite's pixel color | |
void | PA_InitSpriteDraw (bool screen, u8 sprite, u8 draw_number, u8 drawsize) |
Initialise a sprite to be able to draw on it ! | |
void | PA_SpriteDraw (u8 draw_number, s16 x, s16 y, u16 color) |
Draw on a given Drawable sprite... Must be used every frame, or else use PA_SpriteDrawNot if you are not drawing... |
|
Clone a sprite. Works only for sprites on the same screen
|
|
Get a sprite's color mode
|
|
Get the double size state for a given sprite
|
|
Get the gfx used by a sprite
|
|
Get the horizontal flip state for a given sprite
|
|
Get a sprite's length
|
|
Get a sprite's height
|
|
Get the sprite's mode : 0 for normal, 1 for alpha blending, 2 for window
|
|
Get the mosaic mode for a given sprite
|
|
Get the 16 color palette used by a sprite
|
|
Get a sprite's pixel color. Like PA_GetSpritePixelEx, with less options, but a little slower
|
|
Get a sprite's Background priority
|
|
Get the vertical flip state for a given sprite
|
|
Get the X position of a sprite on screen
|
|
Get the Y position of a sprite on screen
|
|
Change the sprite's color mode
|
|
Enable or disable double size for a given sprite
|
|
Change the gfx used by a sprite
|
|
Enable or disable horizontal flip for a given sprite
|
|
Set the sprite's mode : 0 for normal, 1 for alpha blending, 2 for window
|
|
Enable or disable mosaic mode for a given sprite
|
|
Set the 16 color palette used by a sprite
|
|
Set a sprite's pixel to a given palette color. Like PA_SetSpritePixelEx, with less options, but a little slower
|
|
Set a sprite's Background priority
|
|
Stop rotating and zooming a sprite
|
|
Rotate and zoom a sprite
|
|
Enable or disable vertical flip for a given sprite
|
|
Set the X position of a sprite on screen
|
|
Set the Y position of a sprite on screen
|
|
Must be used if a drawing sprite is initialised and you are not drawing on it
|
|
Update the Gfx of a given sprite
|
|
Value: s16 i;\
for (i = 0; i < 256; i++) {\
OAM[(i << 2)] = PA_obj[0][i].atr0;\
OAM[1+(i << 2)] = PA_obj[0][i].atr1;\
OAM[2+(i << 2)] = PA_obj[0][i].atr2;\
OAM[3+(i << 2)] = PA_obj[0][i].atr3;}
|
|
Update the Gfx of a given sprite
|
|
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...
|
|
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...
|
|
Load in mémory a gfx to use later on for a sprite. Returns the gfx's number in memory
|
|
Create a sprite with it's gfx. This is the simple version of the function
|
|
Create a sprite with it's gfx. This is the complex version of the function
|
|
Create a sprite with it's gfx. This is the complex version of the function
|
|
Create a sprite with it's gfx. This is the simple version of the function
|
|
Delete a given Gfx. If a sprite uses this gfx, it'll become invisible
|
|
Delete a given sprite. If it is the only one to use it's gfx, it'll be deleted too.
|
|
Get a sprite's pixel color
|
|
Initialise a sprite to be able to draw on it !
|
|
Rotate and zoom a sprite
|
|
Zoom a sprite without rotating. It's a bit faster than the normal PA_SetRotset function
|
|
Rotate a sprite without zooming. It's a bit faster than the normal PA_SetRotset function
|
|
Set the animation frame for a given sprite. Same as PA_SetSpriteAnimEx, but a bit slower and easier to use...
|
|
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...
|
|
Set a sprite's pixel to a given palette color
|
|
Set the X and Y position of a sprite on screen
|
|
Draw on a given Drawable sprite... Must be used every frame, or else use PA_SpriteDrawNot if you are not drawing...
|