#ifndef M_CONTROLLER_H #define M_CONTROLLER_H #include "types.h" #include "game_h.h" #ifdef __cplusplus extern "C" { #endif #define CHECK_BTN_ALL(state, combo) (~((state) | ~(combo)) == 0) /* sizeof(struct controller_s) == 0x38 */ typedef struct controller_s { /* 0x00 */ f32 move_pX; /* 0x04 */ f32 move_pY; /* 0x08 */ f32 move_pR; /* 0x0C */ s16 move_angle; /* 0x10 */ f32 last_move_pX; /* 0x14 */ f32 last_move_pY; /* 0x18 */ f32 last_move_pR; /* 0x1C */ s16 last_move_angle; /* 0x20 */ f32 adjusted_pX; /* 0x24 */ f32 adjusted_pY; /* 0x28 */ f32 adjusted_pR; /* 0x2C */ f32 last_adjusted_pX; /* 0x30 */ f32 last_adjusted_pY; /* 0x34 */ f32 last_adjusted_pR; } MCON; #define STICK_MIN 9.899495f #define STICK_MAX 61.0f #define STICK_UNCORRECTED_SCALE (1.0f / STICK_MAX) #define STICK_CORRECTED_SCALE (1.0f / (STICK_MAX - STICK_MIN)) extern void mCon_ct(); extern void mCon_dt(); extern void mCon_calc(MCON* mcon, f32 stick_x, f32 stick_y); extern void mCon_main(GAME* game); extern int chkButton(u16 button); extern u16 getButton(); extern int chkTrigger(u16 button); extern u16 getTrigger(); extern int getJoystick_X(); extern int getJoystick_Y(); #ifdef __cplusplus } #endif #endif