PA_BgLargeMap.h

Aller à la documentation de ce fichier.
00001 #ifndef _PA_BGLARGEMAP
00002 #define _PA_BGLARGEMAP
00003 
00004 
00005 #include "PA_BgTiles.h"
00006 
00007 // Tile engine functions, do not use !
00008 #define PA_TileNumber(x, y) (PA_Modulo((x)+1, 36)+(PA_Modulo((y)+1, 28)*36)) // Used by the tile engine
00009 
00010 
00011 #define PA_LoadTileEngine(screen, bg_select, bg_tiles) {\
00012 PA_DeleteBg(screen, bg_select);\
00013 PA_LoadBgTilesEx(screen, bg_select, (void*)Blank, (1008<<5));\
00014 PA_BgInfo[screen][bg_select].Tiles = (void*)bg_tiles;\
00015 PA_LoadBgMap(screen, bg_select, Blank, BG_512X256); \
00016 PA_InitBg(screen, bg_select, BG_512X256, 0, 1);\
00017 PA_BGScrollXY(screen, bg_select, 0, 0);}
00018 
00019 
00020 #define INF_JUSTTILE 268435455
00021 #define MAX_TILES 1008
00022 
00023 void PA_InfTilesScrollX(u8 screen, u8 bg_select, s32 x);
00024 void PA_InfTilesScrollY(u8 screen, u8 bg_select, s32 y);
00025 void PA_InfLargeScrollXN(u8 screen, u8 bg_select, s32 x);
00026 void PA_InfLargeScrollYN(u8 screen, u8 bg_select, s32 y);
00027 void PA_LargeScrollXN(u8 screen, u8 bg_select, s32 x);
00028 void PA_LargeScrollYN(u8 screen, u8 bg_select, s32 y);
00029 
00030 
00031 
00032 
00082 #define PA_LoadLargeBg(screen, bg_select, bg_tiles, bg_map, color_mode, lx, ly) {\
00083 PA_BgInfo[screen][bg_select].NTiles = SIZEOF_16BIT(bg_tiles)>>5;\
00084 if (PA_BgInfo[screen][bg_select].NTiles < MAX_TILES) {PA_LoadSimpleBg(screen, bg_select, bg_tiles, Blank, BG_512X256, 0, color_mode);}\
00085 else{PA_LoadTileEngine(screen, bg_select, (void*)bg_tiles);}\
00086 PA_InitLargeBg(screen, bg_select, lx, ly, (void*)bg_map);}
00087 
00088 
00089 
00090 
00091 
00092 
00108 #define PA_LoadPAGfxLargeBg(screen, bg_number, bg_name){\
00109        PA_LoadBgPal(screen, bg_number, (void*)bg_name##_Pal); \
00110        PA_LoadLargeBg(screen, bg_number, bg_name##_Tiles, bg_name##_Map, 1, (bg_name##_Info[1]) >> 3, (bg_name##_Info[2]) >> 3);}
00111 
00112 
00113 
00144 #define PA_LoadLargeBgEx(screen, bg_select, bg_tiles, tile_size, bg_map, color_mode, lx, ly) {\
00145 PA_BgInfo[screen][bg_select].NTiles = SIZEOF_16BIT(bg_tiles)>>5;\
00146 if (PA_BgInfo[screen][bg_select].NTiles < MAX_TILES) {PA_LoadBg(screen, bg_select, bg_tiles, tile_size, Blank, BG_512X256, 0, color_mode);}\
00147 else{PA_LoadTileEngine(screen, bg_select, bg_tiles);}\
00148 PA_InitLargeBg(screen, bg_select, lx, ly, (void*)bg_map);}
00149 
00150 
00151 
00152 
00169 extern inline void PA_InfLargeScrollX(u8 screen, u8 bg_select, s32 x){ // Autoselect
00170        if (PA_BgInfo[screen][bg_select].NTiles < MAX_TILES) PA_InfLargeScrollXN(screen, bg_select, x);
00171        else PA_InfTilesScrollX(screen, bg_select, x);
00172        PA_BgInfo[screen][bg_select].ScrollX = x;
00173 }
00174 
00190 extern inline void PA_InfLargeScrollY(u8 screen, u8 bg_select, s32 y){ // Autoselect
00191        if (PA_BgInfo[screen][bg_select].NTiles < MAX_TILES) PA_InfLargeScrollYN(screen, bg_select, y);
00192        else PA_InfTilesScrollY(screen, bg_select, y);
00193        PA_BgInfo[screen][bg_select].ScrollY = y;
00194 }
00195 
00196 
00215 extern inline void PA_InfLargeScrollXY(u8 screen, u8 bg_select, s32 x, s32 y){
00216        PA_InfLargeScrollX(screen, bg_select, x);
00217        PA_InfLargeScrollY(screen, bg_select, y);
00218 }
00219 
00235 extern inline void PA_LargeScrollX(u8 screen, u8 bg_select, s32 x){ // Autoselect
00236        if (PA_BgInfo[screen][bg_select].NTiles < MAX_TILES) {
00237               PA_LargeScrollXN(screen, bg_select, x);
00238               if (x < 0) x = 0;   else if (x >= (s32)(PA_BgInfo[screen][bg_select].Infos.Width-256)) x = PA_BgInfo[screen][bg_select].Infos.Width - 257;
00239        }
00240        else {
00241               PA_InfTilesScrollX(screen, bg_select, x);
00242        }      
00243        PA_BgInfo[screen][bg_select].ScrollX = x; 
00244 }
00245 
00261 extern inline void PA_LargeScrollY(u8 screen, u8 bg_select, s32 y){ // Autoselect
00262        if (PA_BgInfo[screen][bg_select].NTiles < MAX_TILES) {
00263               PA_LargeScrollYN(screen, bg_select, y);
00264               if (y < 0) y = 0;   else if (y >= (s32)(PA_BgInfo[screen][bg_select].Infos.Height-192)) y = PA_BgInfo[screen][bg_select].Infos.Height - 193;
00265        }
00266        else PA_InfTilesScrollY(screen, bg_select, y);
00267        PA_BgInfo[screen][bg_select].ScrollY = y;
00268 }
00269 
00270 
00289 extern inline void PA_LargeScrollXY(u8 screen, u8 bg_select, s32 x, s32 y){
00290        PA_LargeScrollX(screen, bg_select, x);
00291        PA_LargeScrollY(screen, bg_select, y);
00292 }
00293 
00294 
00295 
00317 extern inline void PA_InitParallaxX(u8 screen, s32 bg0, s32 bg1, s32 bg2, s32 bg3) {
00318         PA_parallaxX[screen][0] = bg0;
00319         PA_parallaxX[screen][1] = bg1;
00320         PA_parallaxX[screen][2] = bg2;
00321         PA_parallaxX[screen][3] = bg3;
00322 }
00323 
00345 extern inline void PA_InitParallaxY(u8 screen, s32 bg0, s32 bg1, s32 bg2, s32 bg3) {
00346         PA_parallaxY[screen][0] = bg0;
00347         PA_parallaxY[screen][1] = bg1;
00348         PA_parallaxY[screen][2] = bg2;
00349         PA_parallaxY[screen][3] = bg3;
00350 }
00351 
00352 
00353 
00366 extern inline void PA_ParallaxScrollX(u8 screen, s32 x){
00367 u8 i;
00368        for(i = 0; i < 4; i++) {
00369               if (PA_parallaxX[screen][i])  {
00370                      if(scrollpos[screen][i].infscroll) PA_EasyBgScrollX(screen, i, (PA_parallaxX[screen][i] * x) >> 8); // Si bg en scrolling infini
00371                      else PA_BGScrollX(screen, i, (PA_parallaxX[screen][i] * x) >> 8); // Sinon scrolling normal
00372               }
00373        }
00374 }
00375 
00376 
00389 extern inline void PA_ParallaxScrollY(u8 screen, s32 y){
00390 u8 i;
00391        for(i = 0; i < 4; i++) {
00392               if (PA_parallaxY[screen][i])  {
00393                      if(scrollpos[screen][i].infscroll) PA_EasyBgScrollY(screen, i, (PA_parallaxY[screen][i] * y) >> 8); // Si bg en scrolling infini
00394                      else PA_BGScrollY(screen, i, (PA_parallaxY[screen][i] * y) >> 8); // Sinon scrolling normal
00395               }
00396        }
00397 }
00398 
00399 
00415 extern inline void PA_ParallaxScrollXY(u8 screen, s32 x, s32 y){
00416        PA_ParallaxScrollX(screen, x);
00417        PA_ParallaxScrollY(screen, y);
00418 }
00419 
00420  // end of BgLargeMap
00422 
00423 
00424 
00425 // Pas utilisé en direct par le programmaeur
00426 void PA_InitLargeBg(u8 screen, u8 bg_select, s32 lx, s32 ly, void* bg_map);
00427 
00428 
00429 
00430 #endif
00431 

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