sekito: get terminal to work

This commit is contained in:
2025-09-30 22:17:54 +02:00
parent 67d0513273
commit 3195dbc282
10 changed files with 33 additions and 29 deletions

View File

@ -9,5 +9,8 @@
},
"allnet_auth": {
"type": "1.0"
},
"aime": {
"firmware_path": []
}
}

View File

@ -1,5 +1,5 @@
@echo off
set SEGATOOLS_CONFIG_PATH=.\segatools_satellite.ini
set SEGATOOLS_CONFIG_PATH=.\segatools_terminal.ini
pushd %~dp0

View File

@ -169,7 +169,6 @@ start=0x42
stratagem=0x43
stratagem_lock=0x44
hougu=0x45
ryuuha=0x46
tenkey_0=0x60
tenkey_1=0x61
@ -184,9 +183,6 @@ tenkey_9=0x69
tenkey_clear=0x6E
tenkey_enter=0x0D
vol_up=0x21
vol_down=0x22
trackball_up=0x26
trackball_right=0x27
trackball_down=0x28

View File

@ -143,6 +143,7 @@ mode=keyboard
cancel=0x53
decide=0x41
reserve=0x45
up=0x26
right=0x27

View File

@ -4,18 +4,18 @@
Devices
USB: 837-14572 "Type 3" I/O Board
COM12: Aime
COM12: 837-15084 "Gen 2" Aime Reader
[Satellite]
USB: Printer
USB: Sinfonia CHC-C320 Printer
COM1: 837-15093-06 LED Controller Board
COM10: 601-13160-01 "Flat Panel Reader" Y3CR BD SIE F720MM Board
COM11: Printer Camera
[Terminal]
COM1: Aime
COM1: 837-15084 "Gen 2" Aime Reader
COM11: 837-15093-06 LED Controller Board
*/
@ -106,7 +106,7 @@ static DWORD CALLBACK sekito_pre_startup(void)
goto fail;
}
// LED: terminal uses COM 11 and satellite use COM 2
// LED: terminal uses COM 11 and satellite use COM 1
unsigned int led_port_no[2] = {is_terminal ? 11 : 1, 0};
hr = sekito_dll_init(&sekito_hook_cfg.dll, sekito_hook_mod);
@ -122,7 +122,7 @@ static DWORD CALLBACK sekito_pre_startup(void)
goto fail;
}
hr = sg_reader_hook_init(&sekito_hook_cfg.aime, 12, 3,
hr = sg_reader_hook_init(&sekito_hook_cfg.aime, 12, 2,
sekito_hook_mod);
if (FAILED(hr)) {
@ -130,14 +130,12 @@ static DWORD CALLBACK sekito_pre_startup(void)
}
if (is_terminal) {
hr = sg_reader_hook_init(&sekito_hook_cfg.aime, 1, 3,
hr = sg_reader_hook_init(&sekito_hook_cfg.aime, 1, 2,
sekito_hook_mod);
if (FAILED(hr)) {
goto fail;
}
}
sekito_jvs_set_terminal(is_terminal);
@ -146,6 +144,7 @@ static DWORD CALLBACK sekito_pre_startup(void)
if (FAILED(hr)) {
goto fail;
}
hr = amvideo_hook_init(&sekito_hook_cfg.amvideo, sekito_hook_mod);
if (FAILED(hr)) {

View File

@ -51,6 +51,7 @@ HRESULT sekito_jvs_init(struct jvs_node** out) {
}
void sekito_jvs_set_terminal(bool is_terminal) {
dprintf("JVS I/O: Terminal: %d\n", is_terminal);
io_is_terminal = is_terminal;
}
@ -185,36 +186,41 @@ static void sekito_jvs_read_switches(void* ctx, struct io3_switch_state* out) {
if (io_is_terminal) {
if (gamebtn & SEKITO_IO_GAMEBTN_TERMINAL_CANCEL) {
out->p2 |= 1 << 0;
out->p2 |= 1 << 8;
}
if (gamebtn & SEKITO_IO_GAMEBTN_TERMINAL_DECIDE) {
out->p2 |= 1 << 1;
out->p2 |= 1 << 9;
}
if (gamebtn & SEKITO_IO_GAMEBTN_TERMINAL_LEFT) {
out->p1 |= 1 << 3;
out->p1 |= 1 << 11;
}
if (gamebtn & SEKITO_IO_GAMEBTN_TERMINAL_UP) {
out->p1 |= 1 << 5;
out->p1 |= 1 << 13;
}
if (gamebtn & SEKITO_IO_GAMEBTN_TERMINAL_RIGHT) {
out->p1 |= 1 << 2;
out->p1 |= 1 << 10;
}
if (gamebtn & SEKITO_IO_GAMEBTN_TERMINAL_DOWN) {
out->p1 |= 1 << 4;
out->p1 |= 1 << 12;
}
if (gamebtn & SEKITO_IO_GAMEBTN_TERMINAL_LEFT_2) {
out->p2 |= 1 << 3;
out->p2 |= 1 << 11;
}
if (gamebtn & SEKITO_IO_GAMEBTN_TERMINAL_RIGHT_2) {
out->p2 |= 1 << 2;
out->p2 |= 1 << 10;
}
if (gamebtn & SEKITO_IO_GAMEBTN_TERMINAL_RESERVE) {
out->p2 |= 1 << 3;
}
}
}

View File

@ -18,7 +18,6 @@ void sekito_kb_config_load(
cfg->vk_stratagem = GetPrivateProfileIntW(L"keyboard", L"stratagem", 'D', filename);
cfg->vk_stratagem_lock = GetPrivateProfileIntW(L"keyboard", L"stratagem_lock", 'F', filename);
cfg->vk_hougu = GetPrivateProfileIntW(L"keyboard", L"hougu", 'G', filename);
cfg->vk_ryuuha = GetPrivateProfileIntW(L"keyboard", L"ryuuha", 'H', filename);
cfg->vk_tenkey_0 = GetPrivateProfileIntW(L"keyboard", L"tenkey_0", VK_NUMPAD0, filename);
cfg->vk_tenkey_1 = GetPrivateProfileIntW(L"keyboard", L"tenkey_1", VK_NUMPAD1, filename);
@ -33,9 +32,6 @@ void sekito_kb_config_load(
cfg->vk_tenkey_clear = GetPrivateProfileIntW(L"keyboard", L"tenkey_clear", VK_DECIMAL, filename);
cfg->vk_tenkey_enter = GetPrivateProfileIntW(L"keyboard", L"tenkey_enter", VK_RETURN, filename);
cfg->vk_vol_down = GetPrivateProfileIntW(L"keyboard", L"vol_down", VK_NEXT, filename);
cfg->vk_vol_up = GetPrivateProfileIntW(L"keyboard", L"vol_up", VK_PRIOR, filename);
cfg->vk_terminal_decide = GetPrivateProfileIntW(L"keyboard", L"decide", 'A', filename);
cfg->vk_terminal_cancel = GetPrivateProfileIntW(L"keyboard", L"cancel", 'S', filename);
cfg->vk_terminal_up = GetPrivateProfileIntW(L"keyboard", L"up", VK_UP, filename);
@ -44,6 +40,7 @@ void sekito_kb_config_load(
cfg->vk_terminal_left = GetPrivateProfileIntW(L"keyboard", L"left", VK_LEFT, filename);
cfg->vk_terminal_left_2 = GetPrivateProfileIntW(L"keyboard", L"left2", 'Q', filename);
cfg->vk_terminal_right_2 = GetPrivateProfileIntW(L"keyboard", L"right2", 'W', filename);
cfg->vk_terminal_reserve = GetPrivateProfileIntW(L"keyboard", L"reserve", 'E', filename);
cfg->x_down = GetPrivateProfileIntW(L"keyboard", L"trackball_left", VK_LEFT, filename);
cfg->x_up = GetPrivateProfileIntW(L"keyboard", L"trackball_right", VK_RIGHT, filename);

View File

@ -11,7 +11,6 @@ struct sekito_kb_config {
uint8_t vk_stratagem;
uint8_t vk_stratagem_lock;
uint8_t vk_hougu;
uint8_t vk_ryuuha;
uint8_t vk_tenkey_0;
uint8_t vk_tenkey_1;
@ -26,15 +25,13 @@ struct sekito_kb_config {
uint8_t vk_tenkey_clear;
uint8_t vk_tenkey_enter;
uint8_t vk_vol_down;
uint8_t vk_vol_up;
uint8_t vk_terminal_up;
uint8_t vk_terminal_right;
uint8_t vk_terminal_down;
uint8_t vk_terminal_left;
uint8_t vk_terminal_left_2;
uint8_t vk_terminal_right_2;
uint8_t vk_terminal_reserve;
uint8_t vk_terminal_cancel;
uint8_t vk_terminal_decide;

View File

@ -141,6 +141,10 @@ static void sekito_kb_get_gamebtns(uint32_t* gamebtn_out) {
gamebtn |= SEKITO_IO_GAMEBTN_TERMINAL_RIGHT_2;
}
if (GetAsyncKeyState(config.vk_terminal_reserve) & 0x8000) {
gamebtn |= SEKITO_IO_GAMEBTN_TERMINAL_RESERVE;
}
*gamebtn_out = gamebtn;
}

View File

@ -38,6 +38,7 @@ enum {
SEKITO_IO_GAMEBTN_TERMINAL_RIGHT_2 = 0x8000000,
SEKITO_IO_GAMEBTN_TERMINAL_DECIDE = 0x10000000,
SEKITO_IO_GAMEBTN_TERMINAL_CANCEL = 0x20000000,
SEKITO_IO_GAMEBTN_TERMINAL_RESERVE = 0x40000000,
};
/* Get the version of the Eiketsu Taisen IO API that this DLL supports. This