From 3195dbc28278b692e40eec0c88f4694f70b80909 Mon Sep 17 00:00:00 2001 From: kyoubate-haruka <46010460+kyoubate-haruka@users.noreply.github.com> Date: Tue, 30 Sep 2025 22:17:54 +0200 Subject: [PATCH] sekito: get terminal to work --- dist/sekito/config_hook.json | 3 +++ dist/sekito/launch_terminal.bat | 2 +- dist/sekito/segatools_satellite.ini | 4 ---- dist/sekito/segatools_terminal.ini | 1 + games/sekitohook/dllmain.c | 15 +++++++-------- games/sekitohook/jvs.c | 22 ++++++++++++++-------- games/sekitoio/config.c | 5 +---- games/sekitoio/config.h | 5 +---- games/sekitoio/keyboard.c | 4 ++++ games/sekitoio/sekitoio.h | 1 + 10 files changed, 33 insertions(+), 29 deletions(-) diff --git a/dist/sekito/config_hook.json b/dist/sekito/config_hook.json index 6319f45..e8758e7 100644 --- a/dist/sekito/config_hook.json +++ b/dist/sekito/config_hook.json @@ -9,5 +9,8 @@ }, "allnet_auth": { "type": "1.0" + }, + "aime": { + "firmware_path": [] } } \ No newline at end of file diff --git a/dist/sekito/launch_terminal.bat b/dist/sekito/launch_terminal.bat index f569dae..4c3314a 100644 --- a/dist/sekito/launch_terminal.bat +++ b/dist/sekito/launch_terminal.bat @@ -1,5 +1,5 @@ @echo off -set SEGATOOLS_CONFIG_PATH=.\segatools_satellite.ini +set SEGATOOLS_CONFIG_PATH=.\segatools_terminal.ini pushd %~dp0 diff --git a/dist/sekito/segatools_satellite.ini b/dist/sekito/segatools_satellite.ini index d9d5eb6..180bd3a 100644 --- a/dist/sekito/segatools_satellite.ini +++ b/dist/sekito/segatools_satellite.ini @@ -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 diff --git a/dist/sekito/segatools_terminal.ini b/dist/sekito/segatools_terminal.ini index 7004632..78c49c6 100644 --- a/dist/sekito/segatools_terminal.ini +++ b/dist/sekito/segatools_terminal.ini @@ -143,6 +143,7 @@ mode=keyboard cancel=0x53 decide=0x41 +reserve=0x45 up=0x26 right=0x27 diff --git a/games/sekitohook/dllmain.c b/games/sekitohook/dllmain.c index 2c13566..d703f8f 100644 --- a/games/sekitohook/dllmain.c +++ b/games/sekitohook/dllmain.c @@ -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)) { diff --git a/games/sekitohook/jvs.c b/games/sekitohook/jvs.c index 42c4293..a7c2c0e 100644 --- a/games/sekitohook/jvs.c +++ b/games/sekitohook/jvs.c @@ -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; + } + } } diff --git a/games/sekitoio/config.c b/games/sekitoio/config.c index 7f900c3..bdd94bd 100644 --- a/games/sekitoio/config.c +++ b/games/sekitoio/config.c @@ -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); diff --git a/games/sekitoio/config.h b/games/sekitoio/config.h index 96d4826..9bfeed7 100644 --- a/games/sekitoio/config.h +++ b/games/sekitoio/config.h @@ -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; diff --git a/games/sekitoio/keyboard.c b/games/sekitoio/keyboard.c index c4c0dc9..d6060d4 100644 --- a/games/sekitoio/keyboard.c +++ b/games/sekitoio/keyboard.c @@ -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; } diff --git a/games/sekitoio/sekitoio.h b/games/sekitoio/sekitoio.h index de58daf..2e19653 100644 --- a/games/sekitoio/sekitoio.h +++ b/games/sekitoio/sekitoio.h @@ -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