00001 #ifndef _PA_KEYS
00002 #define _PA_KEYS
00003
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007
00008 #include "PA9.h"
00014
00015
00017
00018
00019 #define PA_BACKSPACE 1 // On va dire que la touche backspace a pour valeur 1...
00020 #define PA_CAPS 2 // 2 pour CAPS
00021 #define PA_ENTER '\n' // 3 pour Enter
00022 #define PA_SHIFT 4 // etc
00023 #define PA_RIEN 0 // Si y'a rien, faudra faire comme si on appuye sur rien
00024 #define PA_TAB 3 // tab...
00025
00026
00027
00028 typedef struct {
00029 u8 A, B, X, Y, L, R, Up, Down, Right, Left, Start, Select, Anykey;
00030 } PA_Pad;
00031
00032 typedef struct {
00033 PA_Pad Held, Released, Newpress;
00034 } Pads;
00035
00036 typedef struct {
00037 u8 Held, Released, Newpress, Newpress0;
00038 s16 X, Y, altX, altY, Pressure, Vx, Vy, oldVx, oldVy, Downtime, Uptime, DblClick;
00039 } PA_Stylus;
00040
00041
00042 extern PA_Stylus Stylus;
00043
00044 extern Pads Pad;
00045 extern PA_Pad* PadPointer;
00046
00047
00048 typedef struct {
00049 u8 Moving;
00050 u8 Sprite;
00051 s16 X, Y, Vx, Vy, NextVx, NextVy;
00052 u8 Time;
00053 } PA_movingsprite;
00054
00055 extern PA_movingsprite PA_MovedSprite;
00056
00057 extern u8 PA_MoveSpriteType;
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00099 void PA_UpdatePad(void);
00100
00101
00102
00109 void PA_UpdateStylus(void);
00110
00111
00120 u8 PA_MoveSpritePix(u8 sprite);
00121
00122
00123
00124
00125
00126
00127
00136 #define PA_MoveSprite(sprite) PA_MoveSpriteEx(PA_Screen, sprite, PA_GetSpriteLx(0, sprite), PA_GetSpriteLy(0, sprite))
00137
00138
00139
00157 u8 PA_MoveSpriteEx(u8 screen, u8 sprite, u8 lx, u8 ly);
00158
00159
00171 extern inline u8 PA_MoveSpriteDistance(u8 sprite, u8 distance){
00172 PA_MoveSpriteType = 1;
00173 u8 touched = PA_MoveSpriteEx(PA_Screen, sprite, distance, distance);
00174 PA_MoveSpriteType = 0;
00175 return touched;
00176 }
00177
00184
00185
00186
00187
00188
00189
00190
00191
00192
00208 extern inline u8 PA_SpriteStylusOverEx(u8 sprite, u8 lx, u8 ly){
00209 return ((Stylus.X > PA_GetSpriteX(PA_Screen, sprite)) && (Stylus.X < PA_GetSpriteX(PA_Screen, sprite) + lx)&& (Stylus.Y > PA_GetSpriteY(PA_Screen, sprite)) && (Stylus.Y < PA_GetSpriteY(PA_Screen, sprite) + ly));
00210 }
00211
00212
00213
00229 extern inline u8 PA_SpriteTouchedEx(u8 sprite, u8 lx, u8 ly){
00230 return (Stylus.Held && PA_SpriteStylusOverEx(sprite, lx, ly));
00231 }
00232
00233
00234
00243 extern inline u8 PA_SpriteTouched(u8 sprite) {
00244 return PA_SpriteTouchedEx(sprite, PA_GetSpriteLx(PA_Screen, sprite), PA_GetSpriteLy(PA_Screen, sprite));
00245 }
00246
00247
00248
00257 extern inline u8 PA_SpriteStylusOver(u8 sprite) {
00258 return PA_SpriteStylusOverEx(sprite, PA_GetSpriteLx(PA_Screen, sprite), PA_GetSpriteLy(PA_Screen, sprite));
00259 }
00260
00261
00262
00263 extern inline u8 PA_SpriteTouchedPix(u8 sprite){
00264 s16 spritex = PA_GetSpriteX(PA_Screen, sprite);
00265 s16 spritey = PA_GetSpriteY(PA_Screen, sprite);
00266 if (spritex >= 458) spritex -=511;
00267 if (spritey >= 220) spritey -=256;
00268 u16 x = Stylus.X - spritex;
00269 u16 y = Stylus.Y - spritey;
00270
00271 return (Stylus.Held && (x < spriteanims[PA_Screen][sprite].lx) && (y < spriteanims[PA_Screen][sprite].ly) && PA_GetSpritePixel(PA_Screen, sprite, x, y));
00272 }
00273
00274
00275 extern inline u8 PA_Sprite16cTouchedPix(u8 sprite){
00276 s16 spritex = PA_GetSpriteX(PA_Screen, sprite);
00277 s16 spritey = PA_GetSpriteY(PA_Screen, sprite);
00278 if (spritex >= 458) spritex -=511;
00279 if (spritey >= 220) spritey -=256;
00280 u16 x = Stylus.X - spritex;
00281 u16 y = Stylus.Y - spritey;
00282
00283 return (Stylus.Held && (x < spriteanims[PA_Screen][sprite].lx) && (y < spriteanims[PA_Screen][sprite].ly) && PA_GetSprite16cPixel(PA_Screen, sprite, x, y));
00284 }
00285
00303 #define PA_StylusInZone(x1, y1, x2, y2) ((Stylus.X>=x1)&&(Stylus.Y>=y1)&&(Stylus.X<x2)&&(Stylus.Y<y2))
00304
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318 #ifdef __cplusplus
00319 }
00320 #endif
00321 #endif