28#include <joybus/bus.h>
29#include <joybus/target/n64_pak.h>
34#define JOYBUS_TARGET_N64_PAK_CONTROLLER(pak) ((struct joybus_target_n64_pak_controller *)(pak))
#define JOYBUS_N64_PAK_BLOCK_SIZE
Size of a pak read or write block in bytes.
Definition n64_pak.h:10
void joybus_target_n64_pak_controller_set_written_cb(struct joybus_target_n64_pak_controller *pak, joybus_target_n64_pak_controller_written_cb callback)
Set the block written callback for the controller pak.
Definition n64_pak_controller.c:140
void joybus_target_n64_pak_controller_init(struct joybus_target_n64_pak_controller *pak, uint8_t banks)
Initialize a controller pak.
Definition n64_pak_controller.c:106
void joybus_target_n64_pak_controller_set_storage(struct joybus_target_n64_pak_controller *pak, joybus_target_n64_pak_controller_read_cb read, joybus_target_n64_pak_controller_write_cb write, void *user_data)
Set the storage behind the pak.
Definition n64_pak_controller.c:119
int(* joybus_target_n64_pak_controller_read_cb)(struct joybus_target_n64_pak_controller *pak, uint8_t bank, uint16_t addr, uint8_t buf[JOYBUS_N64_PAK_BLOCK_SIZE])
Callback type for reading a block of a bank.
Definition n64_pak_controller.h:48
void(* joybus_target_n64_pak_controller_written_cb)(struct joybus_target_n64_pak_controller *pak, uint8_t bank, uint16_t addr)
Callback type for block written events, fired after storage has taken a write.
Definition n64_pak_controller.h:87
int(* joybus_target_n64_pak_controller_write_cb)(struct joybus_target_n64_pak_controller *pak, uint8_t bank, uint16_t addr, const uint8_t buf[JOYBUS_N64_PAK_BLOCK_SIZE])
Callback type for writing a block of a bank.
Definition n64_pak_controller.h:65
void joybus_target_n64_pak_controller_set_memory(struct joybus_target_n64_pak_controller *pak, uint8_t *memory)
Back the pak with memory, banks x JOYBUS_N64_PAK_BANK_SIZE bytes owned by the caller.
Definition n64_pak_controller.c:128
void(* joybus_target_n64_pak_controller_select_cb)(struct joybus_target_n64_pak_controller *pak, uint8_t bank)
Callback type for bank select events.
Definition n64_pak_controller.h:76
void joybus_target_n64_pak_controller_set_select_cb(struct joybus_target_n64_pak_controller *pak, joybus_target_n64_pak_controller_select_cb callback)
Set the bank select callback for the controller pak.
Definition n64_pak_controller.c:134
N64 Controller Pak pak.
Definition n64_pak_controller.h:93
joybus_target_n64_pak_controller_written_cb on_written
Callback for block written events.
Definition n64_pak_controller.h:110
joybus_target_n64_pak_controller_write_cb write
Callback that writes a block to storage, the pak answers busy until set.
Definition n64_pak_controller.h:101
void * user_data
Pointer handed to the storage callbacks.
Definition n64_pak_controller.h:104
struct joybus_target_n64_pak base
Base pak interface.
Definition n64_pak_controller.h:95
uint8_t selected
Bank the console has selected, always 0 on a one bank pak.
Definition n64_pak_controller.h:116
joybus_target_n64_pak_controller_read_cb read
Callback that reads a block from storage, the pak answers busy until set.
Definition n64_pak_controller.h:98
joybus_target_n64_pak_controller_select_cb on_select
Callback for bank select events.
Definition n64_pak_controller.h:107
uint8_t banks
Banks the pak presents, 1 for an original pak.
Definition n64_pak_controller.h:113
An N64 pak, such as a Rumble Pak or Controller Pak.
Definition n64_pak.h:94