diff options
| author | John Wilbert M. Villamor <lameguy64@gmail.com> | 2019-04-06 10:11:07 +0800 |
|---|---|---|
| committer | John Wilbert M. Villamor <lameguy64@gmail.com> | 2019-04-06 10:11:07 +0800 |
| commit | f3e040230772f978540a71aea43dfde200992922 (patch) | |
| tree | bd8ca31b72dd01e24980b073854e263589530f56 /libpsn00b/include/psxpad.h | |
| download | psn00bsdk-f3e040230772f978540a71aea43dfde200992922.tar.gz | |
First commit
Diffstat (limited to 'libpsn00b/include/psxpad.h')
| -rw-r--r-- | libpsn00b/include/psxpad.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/libpsn00b/include/psxpad.h b/libpsn00b/include/psxpad.h new file mode 100644 index 0000000..09d17b1 --- /dev/null +++ b/libpsn00b/include/psxpad.h @@ -0,0 +1,108 @@ +/* Controller support header + * Part of PSn00bSDK + * 2019 Lameguy64 / Meido-Tek Productions + * + * Currently only provides a bunch of definitions and a few structs but no + * handling functions yet. Use the code in pad.s in one of the sample + * programs for the meantime instead. + * + * Work in progress, subject to change significantly in future releases. + */ + +#ifndef _PSXPAD_H +#define _PSXPAD_H + +// Pad button definitions for digital pad, joystick, dual analog, +// Dualshock and Jogcon +#define PAD_SELECT 1 +#define PAD_L3 2 +#define PAD_R3 4 +#define PAD_START 8 +#define PAD_UP 16 +#define PAD_RIGHT 32 +#define PAD_DOWN 64 +#define PAD_LEFT 128 +#define PAD_L2 256 +#define PAD_R2 512 +#define PAD_L1 1024 +#define PAD_R1 2048 +#define PAD_TRIANGLE 4096 +#define PAD_CIRCLE 8192 +#define PAD_CROSS 16384 +#define PAD_SQUARE 32768 + +// Mouse button definitions +#define MOUSE_RIGHT 1024 +#define MOUSE_LEFT 2048 + +// neGcon button definitions +#define NCON_START 8 +#define NCON_UP 16 +#define NCON_RIGHT 32 +#define NCON_DOWN 64 +#define NCON_LEFT 128 +#define NCON_R 256 +#define NCON_B 512 +#define NCON_A 1024 + +// Guncon button definitions +#define GCON_A 8 +#define GCON_TRIGGER 8192 +#define GCON_B 16384 + +// Struct for digital, joystick, dual analog and Dualshock controllers +typedef struct { + unsigned char stat; // Status + unsigned char len:4; // Data length (in halfwords) + unsigned char type:4; // Device type: + // 0x4 - digital pad + // 0x5 - analog joystick + // 0x7 - dual analog & Dualshock + unsigned short btn; // Button states + unsigned char rs_x,rs_y; // Right stick coordinates + unsigned char ls_x,ls_y; // Left stick coordinates +} PADTYPE; + +// Struct for a mouse controller +typedef struct { + unsigned char stat; + unsigned char len:4; + unsigned char type:4; // Device type (0x1) + unsigned char btn; + char x_mov; // X movement of mouse + char y_mov; // Y movement of mouse +} MOUSETYPE; + +// Struct for a neGcon controller (for Namco neGcon) +typedef struct { + unsigned char stat; + unsigned char len:4; + unsigned char type:4; // (0x2) + unsigned short btn; + unsigned char twist; // Controller twist + unsigned char btn_i; // I button value + unsigned char btn_ii; // II button value + unsigned char trg_l; // L trigger value +} NCONTYPE; + +// Struct for a Jogcon controller (for Namco Jogcon) +typedef struct { + unsigned char stat; + unsigned char len:4; + unsigned char type:4; // (0xE) + unsigned short btn; + unsigned short jog_rot; // Jog rotation +} JCONTYPE; + +// Struct for a Gun-Con controller (for Namco Gun-Con) +typedef struct { + unsigned char status; + unsigned char len:4; + unsigned char type:4; // (0x6) + unsigned short btn; + unsigned short gun_x; // Gun X position in dotclocks + unsigned short gun_y; // Gun Y position in scanlines +} GCONTYPE; + + +#endif
\ No newline at end of file |
