8#ifndef __LIBDRAGON_JOYBUS_ACCESSORY_INTERNAL_H
9#define __LIBDRAGON_JOYBUS_ACCESSORY_INTERNAL_H
29#define JOYBUS_ACCESSORY_TRANSFER_BANK_SIZE 0x4000
33#define JOYBUS_ACCESSORY_TRANSFER_BANK_MASK 0x3FFF
43#define JOYBUS_ACCESSORY_ADDR_MASK_OFFSET 0xFFE0
47#define JOYBUS_ACCESSORY_ADDR_MASK_CHECKSUM 0x001F
58#define JOYBUS_ACCESSORY_ADDR_LABEL 0x0000
62#define JOYBUS_ACCESSORY_ADDR_PROBE 0x8000
66#define JOYBUS_ACCESSORY_ADDR_RUMBLE_MOTOR 0xC000
70#define JOYBUS_ACCESSORY_ADDR_BIO_PULSE 0xC000
74#define JOYBUS_ACCESSORY_ADDR_SNAP_STATE 0xC000
78#define JOYBUS_ACCESSORY_ADDR_TRANSFER_BANK 0xA000
82#define JOYBUS_ACCESSORY_ADDR_TRANSFER_STATUS 0xB000
86#define JOYBUS_ACCESSORY_ADDR_TRANSFER_CART 0xC000
102#define JOYBUS_ACCESSORY_PROBE_ABSENT 0x00
106#define JOYBUS_ACCESSORY_PROBE_RUMBLE_PAK 0x80
110#define JOYBUS_ACCESSORY_PROBE_BIO_SENSOR 0x81
122#define JOYBUS_ACCESSORY_PROBE_TRANSFER_PAK_ON 0x84
126#define JOYBUS_ACCESSORY_PROBE_SNAP_STATION 0x85
134#define JOYBUS_ACCESSORY_PROBE_TRANSFER_PAK_OFF 0xFE
143#define JOYBUS_SNAP_STATION_STATE_IDLE 0x00
145#define JOYBUS_SNAP_STATION_STATE_PRE_SAVE 0xCC
147#define JOYBUS_SNAP_STATION_STATE_POST_SAVE 0x33
149#define JOYBUS_SNAP_STATION_STATE_RESET_CONSOLE 0x5A
151#define JOYBUS_SNAP_STATION_STATE_PRE_ROLL 0x01
153#define JOYBUS_SNAP_STATION_STATE_CAPTURE_PHOTO 0x02
155#define JOYBUS_SNAP_STATION_STATE_POST_ROLL 0x04
157#define JOYBUS_SNAP_STATION_STATE_BUSY 0x08
166#define JOYBUS_TRANSFER_PAK_STATUS_ACCESS (1<<0)
168#define JOYBUS_TRANSFER_PAK_STATUS_BOOTING (1<<2)
170#define JOYBUS_TRANSFER_PAK_STATUS_RESET (1<<3)
172#define JOYBUS_TRANSFER_PAK_STATUS_CART_PULLED (1<<6)
174#define JOYBUS_TRANSFER_PAK_STATUS_POWER (1<<7)
190 struct __attribute__((packed))
unsigned booting
Transfer Pak "Booting" status bit.
Definition joybus_accessory_internal.h:197
unsigned cart_pulled
Transfer Pak "Cart Pulled" status bit.
Definition joybus_accessory_internal.h:202
unsigned reset
Transfer Pak "Reset" status bit.
Definition joybus_accessory_internal.h:199
unsigned power
Transfer Pak "Powered-On" status bit.
Definition joybus_accessory_internal.h:204
uint8_t raw
Transfer Pak raw status byte.
Definition joybus_accessory_internal.h:188
unsigned access
Transfer Pak "Access" status bit.
Definition joybus_accessory_internal.h:194
uint16_t joybus_accessory_calculate_addr_checksum(uint16_t addr)
Applies the checksum to a Joybus N64 accessory read/write address.
Definition joybus_accessory.c:17
uint8_t joybus_accessory_calculate_data_crc(const uint8_t *data)
Calculates the CRC8 checksum for a Joybus N64 accessory read/write data block.
Definition joybus_accessory.c:38
void joybus_accessory_write_async(int port, uint16_t addr, const uint8_t *data, joybus_callback_t callback, void *ctx)
Asynchronously perform a Joybus N64 accessory write command.
Definition joybus_accessory.c:103
joybus_accessory_io_status_t
Joybus accessory read/write status values.
Definition joybus_accessory.h:24
joybus_accessory_io_status_t joybus_accessory_compare_data_crc(const uint8_t *data, uint8_t data_crc)
Calculates the CRC8 checksum for an accessory read/write data block and compares it against the provi...
Definition joybus_accessory.c:59
void(* joybus_callback_t)(uint64_t *out_dwords, void *ctx)
Callback function signature for joybus_exec_async.
Definition joybus.h:260
void joybus_accessory_read_async(int port, uint16_t addr, joybus_callback_t callback, void *ctx)
Asynchronously perform a Joybus N64 accessory read command.
Definition joybus_accessory.c:76
Joybus N64 Transfer Pak Status wrapper.
Definition joybus_accessory_internal.h:186
Joybus accessory utilities.