PAlib: Normal Tiled Background Modes

Page principale | Modules | Liste des fichiers | Portée globale | Rechercher

# Normal Tiled Background Modes

## Macros

#define | PA_HideBg(screen, bg_select) _REG16(REG_BGSCREEN(screen)) &= ~(0x100 << (bg_select))
| Cacher un fond.
#define | PA_ShowBg(screen, bg_select) _REG16(REG_BGSCREEN(screen)) |= (0x100 << (bg_select))
| Afficher un fond auparavant caché.
#define | PA_ResetBg(screen) _REG16(REG_BGSCREEN(screen)) &= ~(0xF00)
| Reinitialiser les fonds d'un écran. En fait ca ne fait que cacher tous les fonds
#define | PA_LoadBgTiles(screen, bg_select, bg_tiles) PA_LoadBgTilesEx(screen, bg_select, (void*)bg_tiles, SIZEOF_16BIT(bg_tiles))
| Charger un tileset en mémoire
#define | PA_LoadTiledBg(screen, bg_number, bg_name)
| On ne pourra jamais rendre ca plus simple... Charge un fond de type TiledBg converti avec PAGfx, en mettant les tiles, la map, et meme la palette ! Seulement en mode 256 couleurs
#define | PA_LoadSimpleBg(screen, bg_select, bg_tiles, bg_map, bg_size, wraparound, color_mode)
| Facon simple de cahrger un fond. Combine PA_InitBg, PA_LoadBgTiles, et PA_LoadBgMap
#define | PA_LoadBg(screen, bg_select, bg_tiles, tile_size, bg_map, bg_size, wraparound, color_mode)
| Facon la plus simple de cahrger un fond. Combine PA_InitBg, PA_LoadBgTiles, et PA_LoadBgMap
#define | PA_BGScrollX(screen, bg_number, x) _REG16(REG_BGSCROLLX + ((screen) * 0x1000) + ((bg_number) << 2)) = (x)&1023
| Scroll horizontal de n'importe quel fond
#define | PA_BGScrollY(screen, bg_number, y) _REG16(REG_BGSCROLLY + ((screen) * 0x1000) + ((bg_number) << 2)) = (y)&1023
| Scroll vertical de n'importe quel fond
#define | PA_BGScrollXY(screen, bg_number, x, y) {PA_BGScrollX(screen, bg_number, x); PA_BGScrollY(screen, bg_number, y);}
| Scroll horizontal et vertical de n'importe quel fond
#define | PA_SetMapTileAll(screen, bg_select, x, y, tile_info) *(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) = (tile_info)
| Change les infos tiles utilisée pour une tile donnée dans la map
#define | PA_SetMapTileHflip(screen, bg_select, x, y, hflip) {*(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) &= ALL_BUT(TILE_HFLIP); *(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) |= ((hflip) << 10);}
| Flipper une tile de la carte, horizontalement
#define | PA_SetMapTileVflip(screen, bg_select, x, y, vflip) {*(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) &= ALL_BUT(TILE_VFLIP); *(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) |= ((vflip) << 11);}
| Flipper une tile de la carte, verticalement
#define | PA_SetMapTilePal(screen, bg_select, x, y, palette_number) {*(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) &= ALL_BUT(TILE_PAL); *(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) |= ((palette_number) << 12);}
| Changer la palette de 16 couleurs utilisée par une tile de la carte. Marche uniquement en mode 16 couleurs pour le Bg.

## Fonctions

void | PA_ResetBgSys (void)
| Reinitialise le systeme de fonds
void | PA_InitBg (u8 screen, u8 bg_select, u8 bg_size, u8 wraparound, u8 color_mode)
| Initialise un fond. A faire uniquement après avoir chargé un tileset et une map.
void | PA_LoadBgTilesEx (u8 screen, u8 bg_select, void *bg_tiles, u16 size)
| Charger un tileset en mémoire avec une taille donnée
void | PA_ReLoadBgTiles (u8 screen, u8 bg_select, void *bg_tiles)
| ReCharger un tileset en mémoire
void | PA_DeleteTiles (u8 screen, u8 bg_select)
| Effacer un tileset en mémoire. A noter que charger un tileset efface automatiquement le tileset précédent, donc on n'aura pas souvent besoin de cette fonction...
void | PA_DeleteMap (u8 screen, u8 bg_select)
| Effacer une map en mémoire. A noter que charger une map efface automatiquement la map précédent, donc on n'aura pas souvent besoin de cette fonction...
void | PA_DeleteBg (u8 screen, u8 bg_select)
| Effacer un fond complètement (tiles + map + cacher)
void | PA_LoadBgMap (u8 screen, u8 bg_select, void *bg_map, u8 bg_size)
| Charge la carte d'un fond
void | PA_SetMapTile (u8 screen, u8 bg_select, s16 x, s16 y, s16 tile_number)
| Change la tile gfx utilisée pour une tile donnée dans la map
void | PA_SetLargeMapTile (u8 screen, u8 bg_select, s32 x, s32 y, u32 tile_info)
| Change les infos tiles utilisée pour une tile donnée dans la map, seulement pour les grands fonds (512 de large ou haut)
void | PA_SetMapTileEx (u8 screen, u8 bg_select, s16 x, s16 y, u16 tile_number, u8 hflip, u8 vflip, u8 palette_number)
void | PA_SetBgPrio (u8 screen, u8 bg, u8 prio)
| Changer la priorité d'un fond
void | PA_CreateBgFromTiles (u8 screen, u8 bg_select, u8 bg_tiles, void *bg_map, u8 bg_size)
void | PA_ClearBg (u8 screen, u8 bg_select)
| Effacer un fond donné (juste la map)

## Description détaillée

Load a background, scroll it, etc...

## Documentation des macro

#define PA_BGScrollX | ( | screen,
|  | bg_number,
|  | x |  | ) | _REG16(REG_BGSCROLLX + ((screen) * 0x1000) + ((bg_number) << 2)) = (x)&1023

Scroll horizontal de n'importe quel fond

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_number | Numéro du fond que l'on veut tourner (0-3)
  | x | Valeur X à déplacer, horizontalement...

#define PA_BGScrollXY | ( | screen,
|  | bg_number,
|  | x,
|  | y |  | ) | {PA_BGScrollX(screen, bg_number, x); PA_BGScrollY(screen, bg_number, y);}

Scroll horizontal et vertical de n'importe quel fond

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_number | Numéro du fond que l'on veut tourner (0-3)
  | x | Valeur X à déplacer, horizontalement...
  | y | Valeur Y à déplacer, verticalement...

#define PA_BGScrollY | ( | screen,
|  | bg_number,
|  | y |  | ) | _REG16(REG_BGSCROLLY + ((screen) * 0x1000) + ((bg_number) << 2)) = (y)&1023

Scroll vertical de n'importe quel fond

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_number | Numéro du fond que l'on veut tourner (0-3)
  | y | Valeur Y à déplacer, verticalement...

#define PA_HideBg | ( | screen,
|  | bg_select |  | ) | _REG16(REG_BGSCREEN(screen)) &= ~(0x100 << (bg_select))

Cacher un fond.

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)

#define PA_LoadBg | ( | screen,
|  | bg_select,
|  | bg_tiles,
|  | tile_size,
|  | bg_map,
|  | bg_size,
|  | wraparound,
|  | color_mode |  | ) |

Valeur:

    {\
    PA_LoadBgTilesEx(screen, bg_select, (void*)bg_tiles, tile_size); \
    PA_LoadBgMap(screen, bg_select, (void*)bg_map, bg_size); \
    PA_InitBg(screen, bg_select, bg_size, 0, color_mode);\
    PA_BGScrollXY(screen, bg_select, 0, 0);}

Facon la plus simple de cahrger un fond. Combine PA_InitBg, PA_LoadBgTiles, et PA_LoadBgMap

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)
  | bg_tiles | Nom du tableau contenant les tiles (exemple: ship_Tiles)
  | tile_size | Taille du tilset
  | bg_map | Nom du tableau contenant les infos sur la map (exemple : ship_Map)
  | bg_size | Taille du fond. Ceci est très important, car ça détermine aussi si le Bg est rotatif ou non. Pour un fond normal, on utilise les macros BG_256X256, BG_256X512, etc... Por un fond rotatif, il suffit d'utiliser BG_ROT_128X128...
  | wraparound | Si le fond boucle ou non. C'est plus important pour les fonds rotatifs...
  | color_mode | Nombre de couleurs : 0 pour 16 couleurs, 1 pour 256

#define PA_LoadBgTiles | ( | screen,
|  | bg_select,
|  | bg_tiles |  | ) | PA_LoadBgTilesEx(screen, bg_select, (void*)bg_tiles, SIZEOF_16BIT(bg_tiles))

Charger un tileset en mémoire

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)
  | bg_tiles | Nom du tableau contenant les tiles (exemple: ship_Tiles)

#define PA_LoadSimpleBg | ( | screen,
|  | bg_select,
|  | bg_tiles,
|  | bg_map,
|  | bg_size,
|  | wraparound,
|  | color_mode |  | ) |

Valeur:

    {\
    PA_DeleteBg(screen, bg_select);\
    PA_LoadBgTiles(screen, bg_select, bg_tiles); \
    PA_LoadBgMap(screen, bg_select, (void*)bg_map, bg_size); \
    PA_InitBg(screen, bg_select, bg_size, 0, color_mode);\
    PA_BGScrollXY(screen, bg_select, 0, 0);}

Facon simple de cahrger un fond. Combine PA_InitBg, PA_LoadBgTiles, et PA_LoadBgMap

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)
  | bg_tiles | Nom du tableau contenant les tiles (exemple: ship_Tiles)
  | bg_map | Nom du tableau contenant les infos sur la map (exemple : ship_Map)
  | bg_size | Taille du fond. Pour un fond normal, on utilise les macros BG_256X256, BG_256X512, etc...
  | wraparound | Si le fond boucle ou non. C'est plus important pour les fonds rotatifs...
  | color_mode | Nombre de couleurs : 0 pour 16 couleurs, 1 pour 256

#define PA_LoadTiledBg | ( | screen,
|  | bg_number,
|  | bg_name |  | ) |

Valeur:

    {\
           PA_LoadBgPal(screen, bg_number, (void*)bg_name##_Pal); \
           PA_LoadSimpleBg(screen, bg_number, bg_name##_Tiles, bg_name##_Map, PA_GetPAGfxBgSize(bg_name##_Width, bg_name##_Height), 0, 1);}

On ne pourra jamais rendre ca plus simple... Charge un fond de type TiledBg converti avec PAGfx, en mettant les tiles, la map, et meme la palette ! Seulement en mode 256 couleurs

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_number | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)
  | bg_name | Nom du fond, comme bg0

#define PA_ResetBg | ( | screen |  | ) | _REG16(REG_BGSCREEN(screen)) &= ~(0xF00)

Reinitialiser les fonds d'un écran. En fait ca ne fait que cacher tous les fonds

Paramètres:

  | screen | Choix de l'écran (0 ou 1)

#define PA_SetMapTileAll | ( | screen,
|  | bg_select,
|  | x,
|  | y,
|  | tile_info |  | ) | *(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) = (tile_info)

Change les infos tiles utilisée pour une tile donnée dans la map

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut tourner (0-3)
  | x | Valeur X de la tile à changer
  | y | Valeur Y de la tile à changer dans la carte
  | tile_info | Nouveau numéro de tile que l'on veut mettre (tile + palette + flips...)

#define PA_SetMapTileHflip | ( | screen,
|  | bg_select,
|  | x,
|  | y,
|  | hflip |  | ) | {*(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) &= ALL_BUT(TILE_HFLIP); *(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) |= ((hflip) << 10);}

Flipper une tile de la carte, horizontalement

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut tourner (0-3)
  | x | Valeur X de la tile à changer
  | y | Valeur Y de la tile à changer dans la carte
  | hflip | Mettre la tile de la carte en flip horizontal

#define PA_SetMapTilePal | ( | screen,
|  | bg_select,
|  | x,
|  | y,
|  | palette_number |  | ) | {*(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) &= ALL_BUT(TILE_PAL); *(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) |= ((palette_number) << 12);}

Changer la palette de 16 couleurs utilisée par une tile de la carte. Marche uniquement en mode 16 couleurs pour le Bg.

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut tourner (0-3)
  | x | Valeur X de la tile à changer
  | y | Valeur Y de la tile à changer dans la carte
  | palette_number | Numéro de la palette (0-15)

#define PA_SetMapTileVflip | ( | screen,
|  | bg_select,
|  | x,
|  | y,
|  | vflip |  | ) | {*(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) &= ALL_BUT(TILE_VFLIP); *(u16*)(PA_bgmap[screen][bg_select] + ((x) << 1) + ((y) << 6)) |= ((vflip) << 11);}

Flipper une tile de la carte, verticalement

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut tourner (0-3)
  | x | Valeur X de la tile à changer
  | y | Valeur Y de la tile à changer dans la carte
  | vflip | Mettre la tile de la carte en flip vertical

#define PA_ShowBg | ( | screen,
|  | bg_select |  | ) | _REG16(REG_BGSCREEN(screen)) |= (0x100 << (bg_select))

Afficher un fond auparavant caché.

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)

## Documentation des fonctions

inline void PA_ClearBg | ( | u8 | screen,
|  | u8 | bg_select
| ) | `[inline]`

Effacer un fond donné (juste la map)

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Fond...

inline void PA_DeleteBg | ( | u8 | screen,
|  | u8 | bg_select
| ) | `[inline]`

Effacer un fond complètement (tiles + map + cacher)

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)

void PA_DeleteMap | ( | u8 | screen,
|  | u8 | bg_select
| ) |

Effacer une map en mémoire. A noter que charger une map efface automatiquement la map précédent, donc on n'aura pas souvent besoin de cette fonction...

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)

void PA_DeleteTiles | ( | u8 | screen,
|  | u8 | bg_select
| ) |

Effacer un tileset en mémoire. A noter que charger un tileset efface automatiquement le tileset précédent, donc on n'aura pas souvent besoin de cette fonction...

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)

void PA_InitBg | ( | u8 | screen,
|  | u8 | bg_select,
|  | u8 | bg_size,
|  | u8 | wraparound,
|  | u8 | color_mode
| ) |

Initialise un fond. A faire uniquement après avoir chargé un tileset et une map.

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)
  | bg_size | Taille du fond. Ceci est très important, car ça détermine aussi si le Bg est rotatif ou non. Pour un fond normal, on utilise les macros BG_256X256, BG_256X512, etc... Pour un fond rotatif, il suffit d'utiliser BG_ROT_128X128...
  | wraparound | Si le fond boucle ou non. C'est plus important pour les fonds rotatifs...
  | color_mode | Nombre de couleurs : 0 pour 16 couleurs, 1 pour 256

void PA_LoadBgMap | ( | u8 | screen,
|  | u8 | bg_select,
|  | void * | bg_map,
|  | u8 | bg_size
| ) |

Charge la carte d'un fond

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)
  | bg_map | Nom du tableau contenant les infos sur la map (exemple : (void*)ship_Map) n'oublie pas le void...
  | bg_size | Taille du fond. Ceci est très important, car ça détermine aussi si le Bg est rotatif ou non. Pour un fond normal, on utilise les macros BG_256X256, BG_256X512, etc...

void PA_LoadBgTilesEx | ( | u8 | screen,
|  | u8 | bg_select,
|  | void * | bg_tiles,
|  | u16 | size
| ) |

Charger un tileset en mémoire avec une taille donnée

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)
  | bg_tiles | Nom du tableau contenant les tiles (exemple: ship_Tiles)
  | size | Taille en 16 bits...

void PA_ReLoadBgTiles | ( | u8 | screen,
|  | u8 | bg_select,
|  | void * | bg_tiles
| ) |

ReCharger un tileset en mémoire

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut charger (de 0 à 3 en mode 0, uniquement 2 et 3 en mode 2)
  | bg_tiles | Nom du tableau contenant les tiles (exemple: ship_Tiles)

inline void PA_SetBgPrio | ( | u8 | screen,
|  | u8 | bg,
|  | u8 | prio
| ) | `[inline]`

Changer la priorité d'un fond

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg | Numéro du fond...
  | prio | Niveau de priorité, de 0 à 3, 0 étant priorité la plus élevée

inline void PA_SetLargeMapTile | ( | u8 | screen,
|  | u8 | bg_select,
|  | s32 | x,
|  | s32 | y,
|  | u32 | tile_info
| ) | `[inline]`

Change les infos tiles utilisée pour une tile donnée dans la map, seulement pour les grands fonds (512 de large ou haut)

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut tourner (0-3)
  | x | Valeur X de la tile à changer
  | y | Valeur Y de la tile à changer dans la carte
  | tile_info | Nouveau numéro de tile que l'on veut mettre (tile + palette + flips...)

inline void PA_SetMapTile | ( | u8 | screen,
|  | u8 | bg_select,
|  | s16 | x,
|  | s16 | y,
|  | s16 | tile_number
| ) | `[inline]`

Change la tile gfx utilisée pour une tile donnée dans la map

Paramètres:

  | screen | Choix de l'écran (0 ou 1)
  | bg_select | Numéro du fond que l'on veut tourner (0-3)
  | x | Valeur X de la tile à changer
  | y | Valeur Y de la tile à changer dans la carte
  | tile_number | Nouveau numéro de tile que l'on veut mettre