PA_SpriteDual.h

Aller à la documentation de ce fichier.
00001 #ifndef _PA_SpriteDual
00002 #define _PA_SpriteDual
00003 
00004 extern s16 DualSpriteX[128];
00005 
00012 #include "PA_Sprite.h"
00013 
00014 
00029 extern inline void PA_SetScreenSpace(s16 ScreenSpace){
00030        PA_ScreenSpace = 192 + ScreenSpace;
00031 }
00032 
00033 
00045 extern inline void PA_DualSetSpriteX(u8 obj, s16 x){
00046        PA_obj[0][obj].atr1 = PA_obj[1][obj].atr1 = (PA_obj[0][obj].atr1 & ALL_BUT(PA_OBJ_X)) + ((x) & PA_OBJ_X);
00047        DualSpriteX[obj] = x;  // Memorize X, as moving out will be used to hide sprites
00048 }
00049 
00050 
00051 
00052 
00064 extern inline void PA_DualSetSpriteY(u8 obj, s16 y){ 
00065        if (y < 192) {
00066               PA_SetSpriteY(1, obj, y);
00067               PA_SetSpriteX(1, obj, DualSpriteX[obj]);
00068        }
00069        else PA_SetSpriteX(1, obj, 256); // hide sprite if not on screen...
00070        if (y > PA_ScreenSpace-64) {
00071               PA_SetSpriteY(0, obj, y - PA_ScreenSpace);
00072               PA_SetSpriteX(0, obj, DualSpriteX[obj]);
00073        }
00074        else PA_SetSpriteX(0, obj, 256);
00075 }
00076 
00077 
00078 
00079 
00080 
00095 extern inline void PA_DualSetSpriteXY(u8 sprite, s16 x, s16 y) {
00096        PA_DualSetSpriteX(sprite, x); 
00097        PA_DualSetSpriteY(sprite, y);
00098 }
00099 
00100 
00101 
00102 
00132 extern 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) {
00133        PA_CreateSprite(0, obj_number, obj_data, obj_shape, obj_size, color_mode, palette, x, 192);
00134        PA_CreateSprite(1, obj_number, obj_data, obj_shape, obj_size, color_mode, palette, x, 192);       
00135 PA_DualSetSpriteXY(obj_number, x, y);
00136 };
00137 
00185 extern 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){
00186        PA_CreateSpriteEx(0, obj_number, obj_data, obj_shape, obj_size, color_mode, palette, obj_mode, mosaic, hflip, vflip, prio, dblsize, x, 192);
00187        PA_CreateSpriteEx(1, obj_number, obj_data, obj_shape, obj_size, color_mode, palette, obj_mode, mosaic, hflip, vflip, prio, dblsize, x, 192);
00188 PA_DualSetSpriteXY(obj_number, x, y);
00189 }
00190 
00191 
00192 
00193 
00194 
00233 extern 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){
00234 u16 mem_size = PA_obj_sizes[obj_size][obj_shape] << 1;
00235 u16 *gfx = (u16*)malloc(mem_size);
00236 mem_size = mem_size >> 1;
00237 s32 i;
00238 u16 *data = (u16*)obj_data;
00239 for (i = 0; i < mem_size; i++) gfx[i] = data[i] + (1 << 15);
00240 
00241    PA_obj[0][obj_number].atr2 = PA_CreateGfx(0, gfx, obj_shape, obj_size, 2) + (prio << 10) + (15 << 12);
00242    PA_obj[1][obj_number].atr2 = PA_CreateGfx(1, gfx, obj_shape, obj_size, 2) + (prio << 10) + (15 << 12);   
00243    PA_obj[1][obj_number].atr0 = PA_obj[0][obj_number].atr0 = (192 & PA_OBJ_Y) + (dblsize << 9) + (3 << 10) + (mosaic << 12) + (0 << 13) + (obj_shape << 14);
00244    PA_obj[1][obj_number].atr1 = PA_obj[0][obj_number].atr1 = (x & PA_OBJ_X) + (hflip << 12) + (vflip << 13) + (obj_size << 14);
00245 PA_DualSetSpriteXY(obj_number, x, y);
00246 
00247 free(gfx);
00248 }
00249 
00250 
00251 
00275 extern inline void PA_DualCreate16bitSprite(u8 obj_number, void* obj_data, u8 obj_shape, u8 obj_size, s16 x, s16 y){
00276 PA_DualCreate16bitSpriteEx(obj_number, obj_data, obj_shape, obj_size, 0, 0, 0, 0, 0, x, y);
00277 }
00278 
00279 
00280 
00281 
00311 extern 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) {
00312    PA_CreateSpriteFromGfx(0, obj_number, obj_gfx[0], obj_shape, obj_size, color_mode, palette, x, 192);
00313    PA_CreateSpriteFromGfx(1, obj_number, obj_gfx[1], obj_shape, obj_size, color_mode, palette, x, 192);  
00314 PA_DualSetSpriteXY(obj_number, x, y);
00315 }
00316 
00364 extern 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) {
00365 PA_CreateSpriteExFromGfx(0, obj_number, obj_gfx[0], obj_shape, obj_size, color_mode, palette, obj_mode, mosaic, hflip, vflip, prio, dblsize, x, 192);
00366 PA_CreateSpriteExFromGfx(1, obj_number, obj_gfx[1], obj_shape, obj_size, color_mode, palette, obj_mode, mosaic, hflip, vflip, prio, dblsize, x, 192);
00367 PA_DualSetSpriteXY(obj_number, x, y);
00368 }
00369 
00370 
00382 extern inline void PA_DualUpdateSpriteGfx(u8 obj_number, void *obj_data){
00383        PA_UpdateSpriteGfx(0, obj_number, obj_data);
00384        PA_UpdateSpriteGfx(1, obj_number, obj_data);
00385 }
00386 
00387 
00399 extern inline void PA_DualUpdateGfx(u16 gfx_number, void *obj_data){
00400        PA_UpdateGfx(0, gfx_number, obj_data);
00401        PA_UpdateGfx(1, gfx_number, obj_data);    
00402 }
00403 
00404 
00405 
00406 
00415 extern inline void PA_DualDeleteSprite(u8 obj_number){
00416        PA_DeleteSprite(0, obj_number);
00417        PA_DeleteSprite(1, obj_number);    
00418 }
00419 
00420 
00421 
00433 extern inline void PA_DualSetSpriteRotEnable(u8 sprite, u8 rotset){
00434        PA_SetSpriteRotEnable(0, sprite, rotset);
00435        PA_SetSpriteRotEnable(1, sprite, rotset); 
00436 }
00437 
00438 
00439 
00448 extern inline void PA_DualSetSpriteRotDisable(u8 sprite){
00449        PA_SetSpriteRotDisable(0, sprite);
00450        PA_SetSpriteRotDisable(1, sprite); 
00451 }
00452 
00471 extern inline void PA_DualSetRotset(u8 rotset, s16 angle, u16 zoomx, u16 zoomy) {
00472 u8 obj_num = (rotset << 2);
00473        PA_obj[0][obj_num].atr3 = PA_obj[1][obj_num].atr3 = (PA_Cos(angle) * zoomx) >> 8;
00474        PA_obj[0][obj_num + 1].atr3 = PA_obj[1][obj_num + 1].atr3 = (-PA_Sin(angle) * zoomy) >> 8;
00475        PA_obj[0][obj_num + 2].atr3 = PA_obj[1][obj_num + 2].atr3 = (PA_Sin(angle) * zoomx) >> 8;
00476        PA_obj[0][obj_num + 2].atr3 = PA_obj[1][obj_num + 2].atr3 = (PA_Sin(angle) * zoomx) >> 8;
00477        PA_obj[0][obj_num + 3].atr3 = PA_obj[1][obj_num + 3].atr3 = (PA_Cos(angle) * zoomy) >> 8;
00478 }
00479 
00491 extern inline void PA_DualSetRotsetNoZoom(u8 rotset, s16 angle)   {
00492 u8 obj_num = (rotset << 2);
00493        PA_obj[0][obj_num].atr3 = PA_obj[1][obj_num].atr3 = PA_Cos(angle);
00494        PA_obj[0][obj_num + 1].atr3 = PA_obj[1][obj_num + 1].atr3 = -PA_Sin(angle);
00495        PA_obj[0][obj_num + 2].atr3 = PA_obj[1][obj_num + 2].atr3 = PA_Sin(angle);
00496        PA_obj[0][obj_num + 3].atr3 = PA_obj[1][obj_num + 3].atr3 = PA_Cos(angle);
00497 }
00498 
00499 
00514 extern inline void PA_DualSetRotsetNoAngle(u8 rotset, u16 zoomx, u16 zoomy) {
00515 u8 obj_num = (rotset << 2);
00516        PA_obj[0][obj_num].atr3 = PA_obj[1][obj_num].atr3 = zoomx;
00517        PA_obj[0][obj_num + 1].atr3 = PA_obj[1][obj_num + 1].atr3 = 0;
00518        PA_obj[0][obj_num + 2].atr3 = PA_obj[1][obj_num + 2].atr3 = 0;
00519        PA_obj[0][obj_num + 3].atr3 = PA_obj[1][obj_num + 3].atr3 = zoomy;
00520 }
00521 
00522 
00523 
00524 
00525 
00537 extern inline void PA_DualSetSpritePal(u8 obj, u8 pal){
00538        PA_SetSpritePal(0, obj, pal);
00539        PA_SetSpritePal(1, obj, pal);      
00540 }
00541 
00542 
00543 
00555 extern inline void PA_DualSetSpriteDblsize(u8 obj, u8 dblsize){
00556        PA_SetSpriteDblsize(0, obj, dblsize);
00557        PA_SetSpriteDblsize(1, obj, dblsize);
00558 }
00559 
00560 
00561 
00562 
00574 extern inline void PA_DualSetSpriteColors(u8 sprite, u8 n_colors){
00575        PA_SetSpriteColors(0, sprite, n_colors);
00576        PA_SetSpriteColors(1, sprite, n_colors);
00577 
00578 }
00579 
00580 
00581 
00582 
00594 extern inline void PA_DualSetSpriteMode(u8 sprite, u8 obj_mode){
00595        PA_SetSpriteMode(0, sprite, obj_mode);
00596        PA_SetSpriteMode(1, sprite, obj_mode);
00597 }
00598 
00599 
00600 
00601 
00602 
00603 
00615 extern inline void PA_DualSetSpriteMosaic(u8 obj, u8 mosaic){
00616        PA_SetSpriteMosaic(0, obj, mosaic);
00617        PA_SetSpriteMosaic(1, obj, mosaic);
00618 }
00619 
00620 
00621 
00622 
00623 
00624 
00636 extern inline void PA_DualSetSpriteHflip(u8 obj, u8 hflip){
00637        PA_SetSpriteHflip(0, obj, hflip);
00638        PA_SetSpriteHflip(1, obj, hflip);
00639 }      
00640 
00641 
00642 
00643 
00655 extern inline void PA_DualSetSpriteVflip(u8 obj, u8 vflip){
00656        PA_SetSpriteVflip(0, obj, vflip);
00657        PA_SetSpriteVflip(1, obj, vflip);
00658 }      
00659 
00660 
00661 
00662 
00663 
00664 
00676 extern inline void PA_DualSetSpriteGfx(u8 obj, u16 *gfx){
00677        PA_SetSpriteGfx(0, obj, gfx[0]);
00678        PA_SetSpriteGfx(1, obj, gfx[1]);
00679 }
00680 
00681 
00682 
00683 
00684 
00696 extern inline void PA_DualSetSpritePrio(u8 obj, u8 prio){
00697        PA_SetSpritePrio(0, obj, prio);
00698        PA_SetSpritePrio(1, obj, prio);
00699 }      
00700 
00701 
00702 
00703 
00704 
00716 extern inline void PA_DualCloneSprite(u8 obj, u8 target){
00717        PA_CloneSprite(0, obj, target);
00718        PA_CloneSprite(1, obj, target);
00719 }
00720 
00721 
00722 
00723 
00724 
00725 
00726 
00747 extern inline void PA_DualSetSpriteAnimEx(u8 sprite, u8 lx, u8 ly, u8 ncolors, s16 animframe){
00748        PA_SetSpriteAnimEx(0, sprite, lx, ly, ncolors, animframe);
00749        PA_SetSpriteAnimEx(1, sprite, lx, ly, ncolors, animframe);     
00750 }
00751 
00752 
00753 
00765 extern inline void PA_DualSetSpriteAnim(u8 sprite, s16 animframe){
00766 u8 lx = PA_GetSpriteLx(0, sprite); u8 ly = PA_GetSpriteLy(0, sprite);
00767 u8 ncolors = PA_GetSpriteColors(0, sprite);
00768        PA_SetSpriteAnimEx(0, sprite, lx, ly, ncolors, animframe);
00769        PA_SetSpriteAnimEx(1, sprite, lx, ly, ncolors, animframe);     
00770 }
00771 
00772 
00773 
00774 
00798 extern inline void PA_DualStartSpriteAnimEx(u8 sprite, s16 firstframe, s16 lastframe, s16 speed, u8 type, s16 ncycles){
00799        PA_StartSpriteAnimEx(0, sprite, firstframe, lastframe, speed, type, ncycles);
00800        PA_StartSpriteAnimEx(1, sprite, firstframe, lastframe, speed, type, ncycles);
00801 }
00802 
00803 
00804 
00822 extern inline void PA_DualStartSpriteAnim(u8 sprite, s16 firstframe, s16 lastframe, s16 speed){
00823        PA_StartSpriteAnim(0, sprite, firstframe, lastframe, speed);
00824        PA_StartSpriteAnim(1, sprite, firstframe, lastframe, speed);   
00825 }
00826 
00827 
00828 
00837 extern inline void PA_DualStopSpriteAnim(u8 sprite)
00838 {
00839        PA_StopSpriteAnim(0, sprite);
00840        PA_StopSpriteAnim(1, sprite);
00841 }
00842 
00843 
00855 extern inline void PA_DualSetSpriteAnimFrame(u8 sprite, u16 frame)
00856 {
00857        PA_SetSpriteAnimFrame(0, sprite, frame);
00858        PA_SetSpriteAnimFrame(1, sprite, frame);
00859 }
00860 
00861 
00870 extern inline u16 PA_DualGetSpriteAnimFrame(u8 sprite)
00871 {
00872        return spriteanims[0][sprite].currentframe;
00873 }
00874 
00875 
00876 
00888 extern inline void PA_DualSetSpriteAnimSpeed(u8 sprite, s16 speed)
00889 {
00890        PA_SetSpriteAnimSpeed(0, sprite, speed);
00891        PA_SetSpriteAnimSpeed(1, sprite, speed);  
00892 }
00893 
00894 
00895 
00896 
00905 extern inline u16 PA_DualGetSpriteAnimSpeed(u8 sprite)
00906 {
00907        return spriteanims[0][sprite].speed;
00908 }
00909 
00910 
00911 
00923 extern inline void PA_DualSpriteAnimPause(u8 sprite, u8 pause)
00924 {
00925        PA_SpriteAnimPause(0, sprite, pause);
00926        PA_SpriteAnimPause(1, sprite, pause);     
00927 }
00928 
00929 
00930 
00931 
00932 
00933 /*
00957 extern inline void PA_DualSetSpritePixelEx(u8 sprite, u8 hsize, u8 n_colors, u8 x, u8 y, u8 color){
00958        PA_SetSpritePixelEx(0, sprite, hsize, n_colors, x, y, color);
00959        PA_SetSpritePixelEx(1, sprite, hsize, n_colors, x, y, color);  
00960 }*/
00961 
00962 
00963 
00964 
00965 
00966 /*
00984 extern inline void PA_DualSetSpritePixel(u8 sprite, s16 x, s16 y, u8 color){
00985 PA_DualSetSpritePixelEx(sprite, PA_GetSpriteLx(0, sprite), PA_GetSpriteColors(0, sprite), x, y, color);
00986 }*/
00987 
00988 
00989 
00990 
00991 
00992  // end of Sprite
00994 
00995 
00996 
00997 
00998 
00999 
01000 
01001 
01002 
01003 
01004 
01005 
01006 
01007 #endif
01008 
01009 

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