1 /*---------------------------------------------------------------------------*
2   Project:  RevolutionSDK Extension
3   File:     demokpad.h
4 
5   Copyright 2006 Nintendo. All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Log: demokpad.h,v $
14   Revision 1.5  2007/10/23 13:41:53  seiki_masashi
15   added REXDEMOGetAnyKPadHold
16 
17   Revision 1.4  2007/06/16 06:17:10  hirose_kazuki
18   Added GC Pad-related features.
19 
20   Revision 1.3  2006/09/05 10:55:40  yosizaki
21   Added REXDEMOGetAnyKPadTrigger.
22 
23   Revision 1.2  2006/08/29 07:19:20  adachi_hiroaki
24   Changed prefix. Cleaned up code elsewhere.
25 
26   Revision 1.1  2006/08/10 12:09:06  adachi_hiroaki
27   Changed the header file position.
28 
29   Revision 1.1  2006/08/09 13:28:49  yasu
30   Added library for using KPAD.
31 
32   $NoKeywords: $
33  *---------------------------------------------------------------------------*/
34 #ifndef DEMOS_SHARE_DEMOKPAD_H_
35 #define DEMOS_SHARE_DEMOKPAD_H_
36 
37 #include <revolution/types.h>
38 #include <revolution/kpad.h>
39 #include <revolution/pad.h>
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 void REXDEMOKPadInit(void);
46 void REXDEMOKPadRead(void);
47 
48 extern KPADStatus   REXDEMOKPadStatus[WPAD_MAX_CONTROLLERS];
49 extern PADStatus    REXDEMOPadStatus[PAD_MAX_CONTROLLERS];
50 
51 // Inline functions for getting each component
REXDEMOKPadGetButton(u32 i)52 static inline u32   REXDEMOKPadGetButton(u32 i)    { return REXDEMOKPadStatus[i].hold;     }
REXDEMOKPadGetButtonUp(u32 i)53 static inline u32   REXDEMOKPadGetButtonUp(u32 i)  { return REXDEMOKPadStatus[i].release;  }
REXDEMOKPadGetButtonDown(u32 i)54 static inline u32   REXDEMOKPadGetButtonDown(u32 i){ return REXDEMOKPadStatus[i].trig;     }
REXDEMOKPadGetPos(u32 i)55 static inline Vec2  REXDEMOKPadGetPos(u32 i)       { return REXDEMOKPadStatus[i].pos;      }
REXDEMOKPadGetErr(u32 i)56 static inline s8    REXDEMOKPadGetErr(u32 i)       { return REXDEMOKPadStatus[i].wpad_err; }
57 
REXDEMOPadGetButton(u32 i)58 static inline u16   REXDEMOPadGetButton(u32 i)     { return REXDEMOPadStatus[i].button;    }
REXDEMOPadGetStickX(u32 i)59 static inline s16   REXDEMOPadGetStickX(u32 i)     { return REXDEMOPadStatus[i].stickX;    }
REXDEMOPadGetStickY(u32 i)60 static inline s16   REXDEMOPadGetStickY(u32 i)     { return REXDEMOPadStatus[i].stickY;    }
REXDEMOPadGetSubStickX(u32 i)61 static inline s16   REXDEMOPadGetSubStickX(u32 i)  { return REXDEMOPadStatus[i].substickX; }
REXDEMOPadGetSubStickY(u32 i)62 static inline s16   REXDEMOPadGetSubStickY(u32 i)  { return REXDEMOPadStatus[i].substickY; }
63 
64 u32 REXDEMOGetAnyKPadTrigger( void );
65 u32 REXDEMOGetAnyMixedPadTrigger( void );
66 u32 REXDEMOGetAnyKPadHold( void );
67 u32 REXDEMOGetAnyMixedPadHold( void );
68 
69 #ifdef __cplusplus
70 }
71 #endif
72 #endif  /* DEMOS_SHARE_DEMOKPAD_H_ */
73