forked from Dniel97/segatools
kemono: fix LED hooking, add button LEDs
This commit is contained in:
parent
f18d074c5f
commit
599d5e3211
@ -21,6 +21,12 @@ static const struct hook_symbol kemono_kernel32_syms[] = {
|
||||
};
|
||||
|
||||
void kemono_extra_hooks_init(){
|
||||
HMODULE serialportapi = LoadLibraryA("Parade_Data/Plugins/SerialPortAPI.dll"); // HACK??
|
||||
if (serialportapi != NULL){
|
||||
iohook_apply_hooks(serialportapi);
|
||||
serial_hook_apply_hooks(serialportapi);
|
||||
dprintf("Kemono: Successfully pre-loaded SerialPortAPI\n");
|
||||
}
|
||||
}
|
||||
|
||||
void kemono_extra_hooks_load(HMODULE mod, const wchar_t* target_module) {
|
||||
|
@ -25,10 +25,12 @@ static void kemono_jvs_read_coin_counter(
|
||||
void *ctx,
|
||||
uint8_t slot_no,
|
||||
uint16_t *out);
|
||||
static void kemono_jvs_write_gpio(void *ctx, uint32_t state);
|
||||
|
||||
static const struct io3_ops kemono_jvs_io3_ops = {
|
||||
.read_switches = kemono_jvs_read_switches,
|
||||
.read_coin_counter = kemono_jvs_read_coin_counter,
|
||||
.write_gpio = kemono_jvs_write_gpio
|
||||
};
|
||||
|
||||
static struct io3 kemono_jvs_io3;
|
||||
@ -131,3 +133,7 @@ static void kemono_jvs_read_coin_counter(
|
||||
|
||||
kemono_dll.jvs_read_coin_counter(out);
|
||||
}
|
||||
|
||||
static void kemono_jvs_write_gpio(void *ctx, uint32_t state){
|
||||
kemono_dll.jvs_write_gpio(state);
|
||||
}
|
@ -28,6 +28,10 @@ const struct dll_bind_sym kemono_dll_syms[] = {
|
||||
{
|
||||
.sym = "kemono_io_led_set_colors",
|
||||
.off = offsetof(struct kemono_dll, led_set_leds),
|
||||
},
|
||||
{
|
||||
.sym = "kemono_io_jvs_write_gpio",
|
||||
.off = offsetof(struct kemono_dll, jvs_write_gpio),
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -16,6 +16,8 @@ struct kemono_dll {
|
||||
HRESULT (*led_init)(void);
|
||||
|
||||
void (*led_set_leds)(uint8_t board, uint8_t *rgb);
|
||||
|
||||
void (*jvs_write_gpio)(uint32_t state);
|
||||
};
|
||||
|
||||
struct kemono_dll_config {
|
||||
|
@ -17,6 +17,7 @@ EXPORTS
|
||||
kemono_io_poll
|
||||
kemono_io_led_init
|
||||
kemono_io_led_set_colors
|
||||
kemono_io_jvs_write_gpio
|
||||
fwdlusb_open
|
||||
fwdlusb_close
|
||||
fwdlusb_listupPrinter
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
#include <util/dprintf.h>
|
||||
|
||||
#include "kemonoio/kemonoio.h"
|
||||
#include "kemonoio/config.h"
|
||||
@ -102,3 +103,7 @@ HRESULT kemono_io_led_init(void) {
|
||||
void kemono_io_led_set_colors(uint8_t board, uint8_t *rgb) {
|
||||
|
||||
}
|
||||
|
||||
void kemono_io_jvs_write_gpio(uint32_t state){
|
||||
|
||||
}
|
@ -57,10 +57,25 @@ void kemono_io_jvs_read_coin_counter(uint16_t *out);
|
||||
|
||||
All subsequent calls may originate from arbitrary threads and some may
|
||||
overlap with each other. Ensuring synchronization inside your IO DLL is
|
||||
your responsibility. */
|
||||
your responsibility.
|
||||
|
||||
Minimum API version: 0x0100 */
|
||||
HRESULT kemono_io_led_init(void);
|
||||
|
||||
/* Update the RGB LEDs.
|
||||
|
||||
Exact layout is TBD. */
|
||||
The left side LED bar are indices 0 to 32.
|
||||
The right side LED bar are indices 33 to 65.
|
||||
|
||||
Minimum API version: 0x0100 */
|
||||
void kemono_io_led_set_colors(uint8_t board, uint8_t *rgb);
|
||||
|
||||
/* Update the button LEDs.
|
||||
|
||||
Button R: Bit 15
|
||||
Button G: Bit 1
|
||||
Button B: Bit 13
|
||||
Start Button: Bit 11
|
||||
|
||||
Minimum API version: 0x0100 */
|
||||
void kemono_io_jvs_write_gpio(uint32_t state);
|
Loading…
Reference in New Issue
Block a user