8#ifndef __LIBDRAGON_JOYPAD_H
9#define __LIBDRAGON_JOYPAD_H
86#define JOYPAD_PORT_COUNT 4
89#define JOYPAD_PORT_FOREACH(iterator_token) \
91 joypad_port_t iterator_token = JOYPAD_PORT_1; \
92 iterator_token < JOYPAD_PORT_COUNT; \
159typedef union joypad_buttons_u
164 struct __attribute__((packed))
233typedef struct __attribute__((packed)) joypad_inputs_s
361#define JOYPAD_RANGE_N64_STICK_MAX 90
365#define JOYPAD_RANGE_GCN_STICK_MAX 100
369#define JOYPAD_RANGE_GCN_CSTICK_MAX 76
373#define JOYPAD_RANGE_GCN_TRIGGER_MAX 200
uint16_t joybus_identifier_t
Joypad Identifier type.
Definition joybus.h:96
int8_t stick_y
Position of the analog joystick Y axis. (-127, +127)
Definition joypad.h:284
unsigned b
State of the B button.
Definition joypad.h:170
int8_t cstick_y
Position of the analog "C-Stick" Y axis. (-127, +127)
Definition joypad.h:316
unsigned c_down
State of the C-Down button.
Definition joypad.h:212
unsigned d_right
State of the D-Pad Right button.
Definition joypad.h:182
uint16_t raw
Raw button data as a 16-bit value.
Definition joypad.h:162
unsigned z
State of the Z button.
Definition joypad.h:172
unsigned d_left
State of the D-Pad Left button.
Definition joypad.h:180
unsigned c_left
State of the C-Left button.
Definition joypad.h:219
unsigned r
State of the digital R trigger.
Definition joypad.h:198
unsigned y
State of the Y button.
Definition joypad.h:188
unsigned d_up
State of the D-Pad Up button.
Definition joypad.h:176
int8_t cstick_x
Position of the analog "C-Stick" X axis. (-127, +127)
Definition joypad.h:300
unsigned c_right
State of the C-Right button.
Definition joypad.h:226
unsigned d_down
State of the D-Pad Down button.
Definition joypad.h:178
uint8_t analog_r
Position of the analog R trigger. (0, 255)
Definition joypad.h:350
unsigned c_up
State of the C-Up button.
Definition joypad.h:205
int8_t stick_x
Position of the analog joystick X axis. (-127, +127)
Definition joypad.h:261
unsigned start
State of the Start button.
Definition joypad.h:174
joypad_buttons_t btn
Structure containing digital button inputs state.
Definition joypad.h:238
unsigned a
State of the A button.
Definition joypad.h:168
unsigned x
State of the X button.
Definition joypad.h:194
unsigned l
State of the digital L trigger.
Definition joypad.h:196
uint8_t analog_l
Position of the analog L trigger. (0, 255)
Definition joypad.h:333
void joypad_set_rumble_active(joypad_port_t port, bool active)
Activate or deactivate rumble on a Joypad port.
Definition joypad.c:918
joypad_axis_t
Joypad Axis enumeration values.
Definition joypad.h:382
int joypad_get_axis_held(joypad_port_t port, joypad_axis_t axis)
Get the direction that an axis is held on a Joypad port.
Definition joypad.c:1052
joypad_8way_t joypad_get_direction(joypad_port_t port, joypad_2d_t axes)
Get the 8-way direction for a Joypad port's directional axes.
Definition joypad.c:1106
int joypad_get_axis_pressed(joypad_port_t port, joypad_axis_t axis)
Get the direction of a "press" of an axis on a Joypad port.
Definition joypad.c:1034
joypad_2d_t
Joypad 2D axes enumeration.
Definition joypad.h:403
bool joypad_is_connected(joypad_port_t port)
Whether a Joybus device is plugged in to a Joypad port.
Definition joypad.c:851
joypad_buttons_t joypad_get_buttons(joypad_port_t port)
Get the current Joypad buttons state for a Joypad port.
Definition joypad.c:948
joypad_style_t joypad_get_style(joypad_port_t port)
Get the Joypad style for a Joypad port.
Definition joypad.c:869
joypad_accessory_type_t
Joypad Accessories enumeration.
Definition joypad.h:141
bool joypad_get_rumble_active(joypad_port_t port)
Is rumble active for a Joypad port?
Definition joypad.c:911
joypad_inputs_t joypad_get_inputs(joypad_port_t port)
Get the current Joypad inputs state for a Joypad port.
Definition joypad.c:940
bool joypad_get_rumble_supported(joypad_port_t port)
Is rumble supported for a Joypad port?
Definition joypad.c:904
joypad_accessory_type_t joypad_get_accessory_type(joypad_port_t port)
Get the Joypad accessory type for a Joypad port.
Definition joypad.c:876
void joypad_init(void)
Initialize the Joypad subsystem.
Definition joypad.c:713
joypad_buttons_t joypad_get_buttons_released(joypad_port_t port)
Get the Joypad buttons that were released since the last time Joypads were read for a Joypad port.
Definition joypad.c:964
void joypad_poll(void)
Fetch the current Joypad input state.
Definition joypad.c:750
int joypad_get_axis_released(joypad_port_t port, joypad_axis_t axis)
Get the direction of a "release" of an axis on a Joypad port.
Definition joypad.c:1043
void joypad_close(void)
Close the Joypad subsystem.
Definition joypad.c:737
joypad_buttons_t joypad_get_buttons_held(joypad_port_t port)
Get the Joypad buttons that are held down since the last time Joypads were read for a Joypad port.
Definition joypad.c:973
joypad_8way_t
Joypad 8-way directional enumeration.
Definition joypad.h:420
joypad_port_t
Joypad Port Numbers.
Definition joypad.h:74
joypad_buttons_t joypad_get_buttons_pressed(joypad_port_t port)
Get the Joypad buttons that were pressed since the last time Joypads were read for a Joypad port.
Definition joypad.c:955
joypad_style_t
Joypad Styles enumeration.
Definition joypad.h:98
joybus_identifier_t joypad_get_identifier(joypad_port_t port)
Get the Joybus device identifier for a Joypad port.
Definition joypad.c:862
@ JOYPAD_AXIS_STICK_Y
Joypad stick Y axis.
Definition joypad.h:386
@ JOYPAD_AXIS_ANALOG_L
Joypad analog L trigger axis.
Definition joypad.h:392
@ JOYPAD_AXIS_ANALOG_R
Joypad analog R trigger axis.
Definition joypad.h:394
@ JOYPAD_AXIS_STICK_X
Joypad stick X axis.
Definition joypad.h:384
@ JOYPAD_AXIS_CSTICK_X
Joypad C-stick X axis.
Definition joypad.h:388
@ JOYPAD_AXIS_CSTICK_Y
Joypad C-stick Y axis.
Definition joypad.h:390
@ JOYPAD_2D_ANY
Any 2D axes: Analog stick, D-Pad, or C buttons.
Definition joypad.h:415
@ JOYPAD_2D_RH
Right-Hand 2D axes: Analog stick or C buttons.
Definition joypad.h:413
@ JOYPAD_2D_STICK
Analog stick 2D axes.
Definition joypad.h:405
@ JOYPAD_2D_LH
Left-Hand 2D axes: Analog stick or D-Pad.
Definition joypad.h:411
@ JOYPAD_2D_DPAD
D-Pad 2D axes.
Definition joypad.h:407
@ JOYPAD_2D_C
C buttons 2D axes.
Definition joypad.h:409
@ JOYPAD_ACCESSORY_TYPE_SNAP_STATION
Pokemon Snap Station accessory.
Definition joypad.h:155
@ JOYPAD_ACCESSORY_TYPE_CONTROLLER_PAK
Controller Pak accessory.
Definition joypad.h:147
@ JOYPAD_ACCESSORY_TYPE_NONE
No accessory.
Definition joypad.h:143
@ JOYPAD_ACCESSORY_TYPE_UNKNOWN
Unknown or malfunctioning accessory.
Definition joypad.h:145
@ JOYPAD_ACCESSORY_TYPE_BIO_SENSOR
Bio Sensor accessory.
Definition joypad.h:153
@ JOYPAD_ACCESSORY_TYPE_RUMBLE_PAK
Rumble Pak accessory.
Definition joypad.h:149
@ JOYPAD_ACCESSORY_TYPE_TRANSFER_PAK
Transfer Pak accessory.
Definition joypad.h:151
@ JOYPAD_8WAY_DOWN_LEFT
8-way down-left direction.
Definition joypad.h:434
@ JOYPAD_8WAY_UP_LEFT
8-way up-left direction.
Definition joypad.h:430
@ JOYPAD_8WAY_UP_RIGHT
8-way up-right direction.
Definition joypad.h:426
@ JOYPAD_8WAY_LEFT
8-way left direction.
Definition joypad.h:432
@ JOYPAD_8WAY_DOWN_RIGHT
8-way down-right direction.
Definition joypad.h:438
@ JOYPAD_8WAY_DOWN
8-way down direction.
Definition joypad.h:436
@ JOYPAD_8WAY_RIGHT
8-way right direction.
Definition joypad.h:424
@ JOYPAD_8WAY_NONE
8-way no direction.
Definition joypad.h:422
@ JOYPAD_8WAY_UP
8-way up direction.
Definition joypad.h:428
@ JOYPAD_PORT_3
Joypad Port 3.
Definition joypad.h:80
@ JOYPAD_PORT_1
Joypad Port 1.
Definition joypad.h:76
@ JOYPAD_PORT_4
Joypad Port 4.
Definition joypad.h:82
@ JOYPAD_PORT_2
Joypad Port 2.
Definition joypad.h:78
@ JOYPAD_STYLE_GCN
GameCube Joypad Style.
Definition joypad.h:128
@ JOYPAD_STYLE_MOUSE
Mouse Joypad Style.
Definition joypad.h:136
@ JOYPAD_STYLE_N64
Nintendo 64 Joypad Style.
Definition joypad.h:114
@ JOYPAD_STYLE_NONE
Unsupported Joypad Style.
Definition joypad.h:100