#include #include #include "jvs/jvs-bus.h" #include "idmac/fastio.h" #include "board/io3.h" #include "sivahook/fastio.h" #include "sivahook/siva-dll.h" #include "util/dprintf.h" static uint16_t coins; static uint16_t services; static void siva_fastio_digital_read(void *ctx, uint32_t *out); static void siva_fastio_coin_read(void *ctx, uint8_t slot_no, uint32_t *out); HRESULT siva_fastio_init(struct fastio_node *out) { HRESULT hr; assert(out != NULL); out->next = NULL; out->digital_in = siva_fastio_digital_read; out->coins_in = siva_fastio_coin_read; dprintf("Siva Nesica Fastio: Init\n"); siva_dll.init(); return S_OK; } static void siva_fastio_digital_read(void *ctx, uint32_t *out) { uint8_t btn = 0; uint8_t stick = 0; *out = 0; assert(siva_dll.get_btns != NULL); siva_dll.get_btns(&btn, &stick); if (btn & BTN_TEST) { *out |= SIVA_SWITCH_SYS_TEST; } if (btn & BTN_SERVICE) { *out |= SIVA_SWITCH_SYS_SERVICE; } } static void siva_fastio_coin_read(void *ctx, uint8_t slot_no, uint32_t *out) { uint16_t coin = 0; uint16_t service = 0; assert(siva_dll.get_btns != NULL); if (slot_no != 1) { *out = 0; return; } siva_dll.read_coin_counter(&coin, &service); *out += coin; *out += service; }