aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/include/psxpad.h
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-04-06 10:11:07 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-04-06 10:11:07 +0800
commitf3e040230772f978540a71aea43dfde200992922 (patch)
treebd8ca31b72dd01e24980b073854e263589530f56 /libpsn00b/include/psxpad.h
downloadpsn00bsdk-f3e040230772f978540a71aea43dfde200992922.tar.gz
First commit
Diffstat (limited to 'libpsn00b/include/psxpad.h')
-rw-r--r--libpsn00b/include/psxpad.h108
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