PAlib: Référence du fichier PA_Keys.h

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

# Référence du fichier PA_Keys.h

Everything concerning the keys and stylus. Plus de détails...

Aller au code source de ce fichier.

## Structures de données

struct | PA_Pad
struct | PA_Stylus
struct | Pads
struct | PA_movingsprite

## Macros

#define | PA_BACKSPACE 1
#define | PA_CAPS 2
#define | PA_ENTER '\n'
#define | PA_SHIFT 4
#define | PA_RIEN 0
#define | PA_TAB 3
#define | PA_BUTTONS (*(volatile u16*)0x04000130)
#define | REG_KEYCNT (*(volatile u16*)0x04000132)
#define | BUTTON_A 1
#define | BUTTON_B 2
#define | BUTTON_SELECT 4
#define | BUTTON_START 8
#define | BUTTON_RIGHT 16
#define | BUTTON_LEFT 32
#define | BUTTON_UP 64
#define | BUTTON_DOWN 128
#define | BUTTON_R 256
#define | BUTTON_L 512
#define | BUTTON_X 1024
#define | BUTTON_Y 2048
#define | UPDATEPAD(type, pad)
#define | COPYPAD(new, old)
#define | PA_MoveSprite(sprite) PA_MoveSpriteEx(PA_Screen, sprite, PA_GetSpriteLx(0, sprite), PA_GetSpriteLy(0, sprite))

Déplacer un sprite en fonction du stylet. Le sprite sera accroché si le stylet passe aud-dessus, puis il sera déplacé en fonction... Donne 1 si on a déplacé ce sprite, sinon 0. On peut ensuite récupérer des infos avec PA_MovedSprite.Moving (1 si on déplace un sprite), .Sprite (numéro du sprite déplacé), .X (position X du centre du sprite), .Y (position Y du centre du sprite déplacé), .Vx (vitesse horizontale du sprite déplacé !! Utile si l'on veut que le sprite continue à se déplacer par la suite...), et .Vy

#define | PA_StylusInZone(x1, y1, x2, y2) ((Stylus.X>=x1)&&(Stylus.Y>=y1)&&(Stylus.X<x2)&&(Stylus.Y<y2))
| Vérifie si le stylet est dans une zone délimitée donnée... Renvoie 1 si oui, 0 sinon

## Fonctions

void | PA_UpdatePad (void)

Permet de mettre à jour les touches appuyées. A utilisé une fois par frame (genre dans le vbl). On a ensuite accès aux touches pressées avec Pad.Held.A (ou Up, Down, L...), aux touches nouvellement pressées avec Pad.Newpress.R, et aux touches tout juste relachées avec Pad.Released.Up...

void | PA_UpdateStylus (void)
| Mettre à jour la position du stylet. On peut vérifier si le stylet est actuellement sur l'écran (Stylus.Held), tout just appuyé (Stylus.Newpress), ou relaché (Stylus.Released), et obtenir sa position (Stylus.X, Stylus.Y).
bool | PA_MoveSpritePix (u8 sprite)

Déplacer un sprite en fonction du stylet, avec détection au pixel pret. Ceci est comme PA_MoveSprite, mais un peu plus lent, et nécessite PA_InitSpriteDraw(screen, sprite). Le sprite sera accroché si le stylet passe aud-dessus, puis il sera déplacé en fonction... Donne 1 si on a déplacé ce sprite, sinon 0. On peut ensuite récupérer des infos avec PA_MovedSprite.Moving (1 si on déplace un sprite), .Sprite (numéro du sprite déplacé), .X (position X du coin sup gauche du sprite), .Y (position Y du point sup gauche du sprite déplacé), .Vx (vitesse horizontale du sprite déplacé !! Utile si l'on veut que le sprite continue à se déplacer par la suite...), et .Vy

bool | PA_MoveSpriteEx (bool screen, u8 sprite, u8 lx, u8 ly)

Déplacer un sprite en fonction du stylet. Voir PA_MoveSprite pour plus de détails. La différence est qu'ici on précise la largeur et la hauteur du sprite, utile si le sprite ne fait pas vraiment la meme taille que la taille standard DS (genre si c'est un sprite de 20x20). Ceci limitera donc aussi la distance d'accrochage

bool | PA_MoveSpriteDistance (u8 sprite, u8 distance)
| Déplacer un sprite en fonction du stylet. Voir PA_MoveSprite pour plus de détails. La différence est qu'ici on précise la distance d'accrochage, en pixels
void | PA_UpdateMoveSprite (void)
| Met à jour les infos de déplacement de sprites... Si on ne met pas ca dans le VBL (c'est déjà dans PA_InitVBL), alors on risque de ne pas pouvoir déplacer d'autre sprite...
bool | PA_SpriteTouchedEx (u8 sprite, u8 lx, u8 ly)
| Vérifie si l'on touche un sprite donné. Renvoie 1 si touché... On peut choisir la hauteur et la largeur autour du sprite
bool | PA_SpriteTouched (u8 sprite)
| Vérifie si l'on touche un sprite donné. Renvoie 1 si touché...
bool | PA_SpriteTouchedPix (u8 sprite)

## Variables

PA_Stylus | Stylus
Pads | Pad
PA_Pad * | PadPointer
PA_movingsprite | PA_MovedSprite
bool | PA_MoveSpriteType
u16 | CompletePad
u16 | ExPad
u16 | TempPad

## Description détaillée

Everything concerning the keys and stylus.

Update the keys and stylus inputs

## Documentation des macro

#define COPYPAD | ( | new,
|  | old |  | ) |

Valeur:

    new.A = old.A;\
       new.B = old.B;\
       new.Select = old.Select;\
       new.Start = old.Start;\
       new.Right = old.Right;\
       new.Left = old.Left;\
       new.Up = old.Up;\
       new.Down = old.Down;\
       new.R = old.R;\
       new.L =  old.L;\
       new.X = old.X;\
       new.Y = old.Y;

#define UPDATEPAD | ( | type,
|  | pad |  | ) |

Valeur:

    type.A = pad & BUTTON_A;\
       type.B = (pad & BUTTON_B) >> 1;\
       type.Select = (pad & BUTTON_SELECT) >> 2;\
       type.Start = (pad & BUTTON_START) >> 3;\
       type.Right = (pad & BUTTON_RIGHT) >> 4;\
       type.Left = (pad & BUTTON_LEFT) >> 5;\
       type.Up = (pad & BUTTON_UP) >> 6;\
       type.Down = (pad & BUTTON_DOWN) >> 7;\
       type.R = (pad & BUTTON_R) >> 8;\
       type.L = (pad & BUTTON_L) >> 9;\
       type.X = (pad & BUTTON_X) >> 10;\
       type.Y = (pad & BUTTON_Y) >> 11;