mai2: update all LED boards to use two boards

This commit is contained in:
2025-03-02 00:01:45 +01:00
parent a1611afffc
commit 4cb76dd1ee
43 changed files with 273 additions and 265 deletions

View File

@ -96,7 +96,8 @@ void led15093_config_load(struct led15093_config *cfg, const wchar_t *filename)
memset(cfg->boot_chip_number, ' ', sizeof(cfg->boot_chip_number));
cfg->enable = GetPrivateProfileIntW(L"led15093", L"enable", 1, filename);
cfg->port_no = 0;
cfg->port_no[0] = GetPrivateProfileIntW(L"led15093", L"portNo1", 0, filename);
cfg->port_no[1] = GetPrivateProfileIntW(L"led15093", L"portNo2", 0, filename);
cfg->high_baudrate = GetPrivateProfileIntW(L"led15093", L"highBaud", 0, filename);
cfg->fw_ver = GetPrivateProfileIntW(L"led15093", L"fwVer", 0x90, filename);
cfg->fw_sum = GetPrivateProfileIntW(L"led15093", L"fwSum", 0xadf7, filename);

View File

@ -22,32 +22,23 @@
COM4: 837-15396 "Gen 3" Aime Reader
*/
#include <windows.h>
#include <stddef.h>
#include <stdlib.h>
#include <windows.h>
#include "amex/amex.h"
#include "board/sg-reader.h"
#include "board/vfd.h"
#include "chuniio/chuniio.h"
#include "chusanhook/config.h"
#include "chusanhook/io4.h"
#include "chusanhook/slider.h"
#include "chuniio/chuniio.h"
#include "hook/process.h"
#include "gfxhook/d3d9.h"
#include "gfxhook/gfx.h"
#include "hook/process.h"
#include "hooklib/serial.h"
#include "hooklib/spike.h"
#include "platform/platform.h"
#include "util/dprintf.h"
#include "util/env.h"
@ -55,8 +46,7 @@ static HMODULE chusan_hook_mod;
static process_entry_t chusan_startup;
static struct chusan_hook_config chusan_hook_cfg;
static DWORD CALLBACK chusan_pre_startup(void)
{
static DWORD CALLBACK chusan_pre_startup(void) {
HMODULE d3dc;
HMODULE dbghelp;
HRESULT hr;
@ -88,7 +78,7 @@ static DWORD CALLBACK chusan_pre_startup(void)
chusan_hook_config_load(&chusan_hook_cfg, get_config_path());
/* Hook Win32 APIs */
dvd_hook_init(&chusan_hook_cfg.dvd, chusan_hook_mod);
gfx_hook_init(&chusan_hook_cfg.gfx);
gfx_d3d9_hook_init(&chusan_hook_cfg.gfx, chusan_hook_mod);
@ -154,19 +144,31 @@ static DWORD CALLBACK chusan_pre_startup(void)
}
}
if ( chuni_dll.led_init == NULL || chuni_dll.led_set_leds == NULL )
{
dprintf("IO DLL doesn't support led_init/led_set_leds, cannot start LED15093 hook\n");
unsigned int led_port_no[2];
if (is_cvt) {
led_port_no[0] = 2;
led_port_no[1] = 3;
} else {
hr = led15093_hook_init(&chusan_hook_cfg.led15093,
chuni_dll.led_init, chuni_dll.led_set_leds, first_port, 2, 2, 1);
led_port_no[0] = 20;
led_port_no[1] = 21;
}
if (chuni_dll.led_init == NULL || chuni_dll.led_set_leds == NULL) {
dprintf(
"IO DLL doesn't support led_init/led_set_leds, cannot start "
"LED15093 hook\n");
} else {
hr = led15093_hook_init(&chusan_hook_cfg.led15093, chuni_dll.led_init,
chuni_dll.led_set_leds, led_port_no);
if (FAILED(hr)) {
goto fail;
}
}
hr = sg_reader_hook_init(&chusan_hook_cfg.aime, 4, is_cvt ? 2: 3, chusan_hook_mod);
hr = sg_reader_hook_init(&chusan_hook_cfg.aime, 4, is_cvt ? 2 : 3,
chusan_hook_mod);
if (FAILED(hr)) {
goto fail;
@ -186,8 +188,7 @@ fail:
ExitProcess(EXIT_FAILURE);
}
BOOL WINAPI DllMain(HMODULE mod, DWORD cause, void *ctx)
{
BOOL WINAPI DllMain(HMODULE mod, DWORD cause, void *ctx) {
HRESULT hr;
if (cause != DLL_PROCESS_ATTACH) {
@ -199,7 +200,7 @@ BOOL WINAPI DllMain(HMODULE mod, DWORD cause, void *ctx)
hr = process_hijack_startup(chusan_pre_startup, &chusan_startup);
if (!SUCCEEDED(hr)) {
dprintf("Failed to hijack process startup: %x\n", (int) hr);
dprintf("Failed to hijack process startup: %x\n", (int)hr);
}
return SUCCEEDED(hr);