mirror of
https://gitea.tendokyu.moe/TeamTofuShop/taitools.git
synced 2026-09-22 22:28:06 +03:00
26 lines
1.1 KiB
C
26 lines
1.1 KiB
C
#pragma once
|
|
#include <windows.h>
|
|
#include <stdint.h>
|
|
|
|
#pragma pack(push, 1)
|
|
struct fastio_node {
|
|
struct fastio_node *next;
|
|
uint8_t board_no;
|
|
// Unlike JVS, FastIO comms are done on the game side through
|
|
// DMA register reads and writes, meaning we need to have
|
|
// indivitual functions here instead of just "transact"
|
|
void (*digital_in)(void* ctx, uint32_t *out); // Digital button inputs
|
|
void (*analog_in)(void* ctx, uint16_t *out); // Analog stick inputs (WIP)
|
|
void (*coins_in)(void* ctx, uint8_t slot, uint32_t *out); // Number of unprocessed coins
|
|
void (*digital_out)(void* ctx, uint16_t channel, uint16_t val); // Digital outputs
|
|
void (*analog_out)(void* ctx, uint16_t channel, uint16_t val); // Analog outputs (WIP)
|
|
void (*coins_out)(void* ctx, uint8_t slot, uint16_t removed); // Remove coins from the count
|
|
};
|
|
#pragma pack(pop)
|
|
|
|
typedef HRESULT (*fastio_provider_t)(struct fastio_node *root);
|
|
|
|
HRESULT fastio_hook_init(fastio_provider_t main, fastio_provider_t sub);
|
|
void fastio_digital_read(void* ctx, uint8_t board_no, uint32_t *out);
|
|
void fastio_coins_in(void* ctx, uint8_t board_no, uint8_t slot_no, uint32_t *out);
|