8#ifndef __LIBDRAGON_JOYBUS_COMMANDS_H
9#define __LIBDRAGON_JOYBUS_COMMANDS_H
54#define JOYBUS_COMMAND_SKIP_SIZE 1
58#define JOYBUS_COMMAND_METADATA_SIZE 2
62#define JOYBUS_COMMAND_OFFSET_SEND_LEN 0
66#define JOYBUS_COMMAND_OFFSET_RECV_LEN 1
70#define JOYBUS_COMMAND_OFFSET_COMMAND_ID 2
79#define JOYBUS_COMMAND_ID_RESET 0xFF
81#define JOYBUS_COMMAND_ID_IDENTIFY 0x00
83#define JOYBUS_COMMAND_ID_N64_CONTROLLER_READ 0x01
85#define JOYBUS_COMMAND_ID_N64_ACCESSORY_READ 0x02
87#define JOYBUS_COMMAND_ID_N64_ACCESSORY_WRITE 0x03
89#define JOYBUS_COMMAND_ID_EEPROM_READ_BLOCK 0x04
91#define JOYBUS_COMMAND_ID_EEPROM_WRITE_BLOCK 0x05
93#define JOYBUS_COMMAND_ID_RTC_IDENTIFY 0x06
95#define JOYBUS_COMMAND_ID_RTC_READ_BLOCK 0x07
97#define JOYBUS_COMMAND_ID_RTC_WRITE_BLOCK 0x08
99#define JOYBUS_COMMAND_ID_N64_RANDNET_KEYBOARD_READ 0x13
101#define JOYBUS_COMMAND_ID_64GB_LINK_CABLE_READ 0x13
103#define JOYBUS_COMMAND_ID_GBA_LINK_CABLE_READ 0x14
105#define JOYBUS_COMMAND_ID_64GB_LINK_CABLE_WRITE 0x14
107#define JOYBUS_COMMAND_ID_GBA_LINK_CABLE_WRITE 0x15
114#define JOYBUS_COMMAND_ID_PIXELFX_N64_GAME_ID 0x1D
116#define JOYBUS_COMMAND_ID_GCN_CONTROLLER_READ 0x40
118#define JOYBUS_COMMAND_ID_GCN_CONTROLLER_ORIGIN 0x41
124#define JOYBUS_COMMAND_ID_GCN_CONTROLLER_RECALIBRATE 0x42
131#define JOYBUS_COMMAND_ID_GCN_CONTROLLER_READ_LONG 0x43
143typedef struct __attribute__((packed)) joybus_cmd_n64_accessory_read_port_s
146 struct __attribute__((packed))
151 uint16_t addr_checksum;
154 struct __attribute__((packed))
186typedef struct __attribute__((packed)) joybus_cmd_n64_accessory_write_port_s
189 struct __attribute__((packed))
194 uint16_t addr_checksum;
200 struct __attribute__((packed))
230typedef struct __attribute__((packed)) joybus_cmd_identify_port_s
233 struct __attribute__((__packed__))
239 struct __attribute__((__packed__))
262typedef struct __attribute__((packed)) joybus_cmd_eeprom_read_block_s
265 struct __attribute__((packed))
273 struct __attribute__((packed))
275 union __attribute__((packed))
301typedef struct __attribute__((packed)) joybus_cmd_eeprom_write_block_s
304 struct __attribute__((packed))
310 union __attribute__((packed))
319 struct __attribute__((packed))
340typedef struct __attribute__((packed)) joybus_cmd_pixelfx_n64_game_id_s
343 struct __attribute__((__packed__))
353 uint64_t rom_check_code;
355 uint8_t media_format;
373typedef struct __attribute__((packed)) joybus_cmd_n64_controller_read_port_s
376 struct __attribute__((__packed__))
382 struct __attribute__((__packed__))
391 unsigned d_right : 1;
399 unsigned c_right : 1;
410typedef struct __attribute__((packed)) joybus_cmd_gcn_controller_read_port_s
413 struct __attribute__((__packed__))
423 struct __attribute__((__packed__))
426 unsigned check_origin : 1;
432 unsigned use_origin : 1;
438 unsigned d_right : 1;
440 unsigned stick_x : 8;
441 unsigned stick_y : 8;
442 unsigned cstick_x : 8;
443 unsigned cstick_y : 8;
444 unsigned analog_l : 8;
445 unsigned analog_r : 8;
454typedef struct __attribute__((packed)) joybus_cmd_gcn_controller_read_long_port_s
457 struct __attribute__((__packed__))
463 struct __attribute__((__packed__))
466 unsigned check_origin : 1;
472 unsigned use_origin : 1;
478 unsigned d_right : 1;
480 unsigned stick_x : 8;
481 unsigned stick_y : 8;
482 unsigned cstick_x : 8;
483 unsigned cstick_y : 8;
484 unsigned analog_l : 8;
485 unsigned analog_r : 8;
486 unsigned analog_a : 8;
487 unsigned analog_b : 8;
uint8_t recv
(unused)
Definition joybus_commands.h:365
joybus_cmd_gcn_controller_read_long_port_t joybus_cmd_gcn_controller_origin_port_t
"GameCube Controller Read Origins" Joybus command structure.
Definition joybus_commands.h:507
joybus_cmd_identify_port_t joybus_cmd_reset_port_t
"Reset" Joybus command structure.
Definition joybus_commands.h:255
joybus_cmd_eeprom_write_block_t joybus_cmd_rtc_write_block_t
"RTC Write Block" Joybus command structure.
Definition joybus_commands.h:333
joybus_cmd_eeprom_read_block_t joybus_cmd_rtc_read_block_t
"RTC Read Block" Joybus command structure.
Definition joybus_commands.h:294
joybus_cmd_gcn_controller_read_long_port_t joybus_cmd_gcn_controller_recalibrate_port_t
"GameCube Controller Recalibrate" Joybus command structure.
Definition joybus_commands.h:498
joybus_cmd_n64_accessory_write_port_t joybus_cmd_64gb_link_cable_write_port_t
"64GB Link Cable Write" Joybus command structure.
Definition joybus_commands.h:214
joybus_cmd_n64_accessory_write_port_t joybus_cmd_gba_link_cable_write_port_t
"GBA Link Cable Write" Joybus command structure.
Definition joybus_commands.h:223
joybus_cmd_n64_accessory_read_port_t joybus_cmd_64gb_link_cable_read_port_t
"64GB Link Cable Read" Joybus command structure.
Definition joybus_commands.h:170
joybus_cmd_n64_accessory_read_port_t joybus_cmd_gba_link_cable_read_port_t
"GBA Link Cable Read" Joybus command structure.
Definition joybus_commands.h:179
"EEPROM Read Block" Joybus command structure.
Definition joybus_commands.h:263
"EEPROM Write Block" Joybus command structure.
Definition joybus_commands.h:302
"GameCube Controller Long Read" Joybus command structure.
Definition joybus_commands.h:455
"GameCube Controller Read" Joybus command structure.
Definition joybus_commands.h:411
"Identify" Joybus command structure.
Definition joybus_commands.h:231
"N64 Accessory Read" Joybus command structure.
Definition joybus_commands.h:144
"N64 Accessory Write" Joybus command structure.
Definition joybus_commands.h:187
"N64 Controller Read" Joybus command structure.
Definition joybus_commands.h:374
"PixelFX N64 Game ID" Joybus command structure.
Definition joybus_commands.h:341
#define JOYBUS_ACCESSORY_DATA_SIZE
Size of a Joybus N64 accessory read/write payload in bytes.
Definition joybus.h:76