added VFD toggle to config

This commit is contained in:
Dniel97 2024-02-06 12:34:11 +01:00
parent dae3018411
commit 451a7ec49d
Signed by: Dniel97
GPG Key ID: 6180B3C768FB2E08
33 changed files with 111 additions and 15 deletions

View File

@ -8,6 +8,7 @@
#include "board/aime-dll.h"
#include "board/config.h"
#include "board/sg-reader.h"
#include "board/vfd.h"
#include "util/dprintf.h"
@ -82,3 +83,11 @@ void io4_config_load(struct io4_config *cfg, const wchar_t *filename)
cfg->enable = GetPrivateProfileIntW(L"io4", L"enable", 1, filename);
}
void vfd_config_load(struct vfd_config *cfg, const wchar_t *filename)
{
assert(cfg != NULL);
assert(filename != NULL);
cfg->enable = GetPrivateProfileIntW(L"vfd", L"enable", 1, filename);
}

View File

@ -5,6 +5,8 @@
#include "board/io4.h"
#include "board/sg-reader.h"
#include "board/vfd.h"
void aime_config_load(struct aime_config *cfg, const wchar_t *filename);
void io4_config_load(struct io4_config *cfg, const wchar_t *filename);
void vfd_config_load(struct vfd_config *cfg, const wchar_t *filename);

View File

@ -27,14 +27,22 @@ static struct uart vfd_uart;
static uint8_t vfd_written[512];
static uint8_t vfd_readable[512];
HRESULT vfd_hook_init(unsigned int port_no)
HRESULT vfd_hook_init(const struct vfd_config *cfg, unsigned int port_no)
{
assert(cfg != NULL);
if (!cfg->enable) {
return S_FALSE;
}
uart_init(&vfd_uart, port_no);
vfd_uart.written.bytes = vfd_written;
vfd_uart.written.nbytes = sizeof(vfd_written);
vfd_uart.readable.bytes = vfd_readable;
vfd_uart.readable.nbytes = sizeof(vfd_readable);
dprintf("VFD: hook enabled.\n");
return iohook_push_handler(vfd_handle_irp);
}

View File

@ -2,4 +2,9 @@
#include <windows.h>
HRESULT vfd_hook_init(unsigned int port_no);
struct vfd_config {
bool enable;
};
HRESULT vfd_hook_init(const struct vfd_config *cfg, unsigned int port_no);

View File

@ -160,6 +160,7 @@ void chusan_hook_config_load(
dvd_config_load(&cfg->dvd, filename);
io4_config_load(&cfg->io4, filename);
gfx_config_load(&cfg->gfx, filename);
vfd_config_load(&cfg->vfd, filename);
chuni_dll_config_load(&cfg->dll, filename);
slider_config_load(&cfg->slider, filename);
led15093_config_load(&cfg->led15093, filename);

View File

@ -20,6 +20,7 @@ struct chusan_hook_config {
struct dvd_config dvd;
struct io4_config io4;
struct gfx_config gfx;
struct vfd_config vfd;
struct chuni_dll_config dll;
struct slider_config slider;
struct led15093_config led15093;

View File

@ -122,7 +122,7 @@ static DWORD CALLBACK chusan_pre_startup(void)
unsigned int first_port = is_cvt ? 2 : 20;
if (!is_cvt) {
hr = vfd_hook_init(2);
hr = vfd_hook_init(&chusan_hook_cfg.vfd, 2);
if (FAILED(hr)) {
goto fail;

View File

@ -37,6 +37,7 @@ void cm_hook_config_load(
aime_config_load(&cfg->aime, filename);
dvd_config_load(&cfg->dvd, filename);
io4_config_load(&cfg->io4, filename);
vfd_config_load(&cfg->vfd, filename);
touch_screen_config_load(&cfg->touch, filename);
cm_dll_config_load(&cfg->dll, filename);
}

View File

@ -16,6 +16,7 @@ struct cm_hook_config {
struct aime_config aime;
struct dvd_config dvd;
struct io4_config io4;
struct vfd_config vfd;
struct cm_dll_config dll;
struct touch_screen_config touch;
};

View File

@ -60,7 +60,7 @@ static DWORD CALLBACK cm_pre_startup(void)
goto fail;
}
hr = vfd_hook_init(2);
hr = vfd_hook_init(&cm_hook_cfg.vfd, 2);
if (FAILED(hr)) {
goto fail;

View File

@ -9,12 +9,18 @@ option=
appdata=
[aime]
; Enable aime reader emulation.
; Enable Aime card reader assembly emulation. Disable to use a real SEGA Aime
; reader.
enable=1
aimePath=DEVICE\aime.txt
; Enable high baud rate.
;highBaud=1
[vfd]
; Enable VFD emulation (currently just stubbed). Disable to use a real VFD
; GP1232A02A FUTABA assembly.
enable=1
[aimeio]
; Uncomment this if you have custom (x64) aime implementation.
; Leave empty if you want to use Segatools built-in keyboard input.

View File

@ -9,10 +9,16 @@ option=
appdata=
[aime]
; Enable aime reader emulation.
; Enable Aime card reader assembly emulation. Disable to use a real SEGA Aime
; reader.
enable=1
aimePath=DEVICE\aime.txt
[vfd]
; Enable VFD emulation (currently just stubbed). Disable to use a real VFD
; GP1232A02A FUTABA assembly.
enable=1
[dns]
; Insert the hostname or IP address of the server you wish to use here.
; Note that 127.0.0.1, localhost etc are specifically rejected.

View File

@ -9,10 +9,16 @@ option=
appdata=
[aime]
; Controls emulation of the Aime card reader assembly.
; Enable Aime card reader assembly emulation. Disable to use a real SEGA Aime
; reader.
enable=1
aimePath=DEVICE\aime.txt
[vfd]
; Enable VFD emulation (currently just stubbed). Disable to use a real VFD
; GP1232A02A FUTABA assembly.
enable=1
[dns]
; Insert the hostname or IP address of the server you wish to use here.
; Note that 127.0.0.1, localhost etc are specifically rejected.

View File

@ -9,10 +9,16 @@ option=
appdata=
[aime]
; Enable aime reader emulation.
; Enable Aime card reader assembly emulation. Disable to use a real SEGA Aime
; reader.
enable=1
aimePath=DEVICE\aime.txt
[vfd]
; Enable VFD emulation (currently just stubbed). Disable to use a real VFD
; GP1232A02A FUTABA assembly.
enable=1
[dns]
; Insert the hostname or IP address of the server you wish to use here.
; Note that 127.0.0.1, localhost etc are specifically rejected.

View File

@ -7,6 +7,17 @@ amfs=amfs
appdata=appdata
option=option
[aime]
; Enable Aime card reader assembly emulation. Disable to use a real SEGA Aime
; reader.
enable=1
aimePath=DEVICE\aime.txt
[vfd]
; Enable VFD emulation (currently just stubbed). Disable to use a real VFD
; GP1232A02A FUTABA assembly.
enable=1
[dns]
; Insert the hostname or IP address of the server you wish to use here.
; Note that 127.0.0.1, localhost etc are specifically rejected.

View File

@ -9,10 +9,16 @@ option=
appdata=
[aime]
; Controls emulation of the Aime card reader assembly.
; Enable Aime card reader assembly emulation. Disable to use a real SEGA Aime
; reader.
enable=1
aimePath=DEVICE\aime.txt
[vfd]
; Enable VFD emulation (currently just stubbed). Disable to use a real VFD
; GP1232A02A FUTABA assembly.
enable=1
[dns]
; Insert the hostname or IP address of the server you wish to use here.
; Note that 127.0.0.1, localhost etc are specifically rejected.

View File

@ -9,10 +9,16 @@ option=
appdata=appdata
[aime]
; Controls emulation of the Aime card reader assembly.
; Enable Aime card reader assembly emulation. Disable to use a real SEGA Aime
; reader.
enable=1
aimePath=DEVICE\aime.txt
[vfd]
; Enable VFD emulation (currently just stubbed). Disable to use a real VFD
; GP1232A02A FUTABA assembly.
enable=1
[dns]
; Insert the hostname or IP address of the server you wish to use here.
; Note that 127.0.0.1, localhost etc are specifically rejected.

View File

@ -84,6 +84,17 @@ emulates an IC card in its proximity. A variety of different IC cards can be
emulated; the exact choice of card that is emulated depends on the presence or
absence of the configured card ID files.
## `[vfd]`
Controls emulation of the VFD GP1232A02A FUTABA assembly.
### `enable`
Default: `1`
Enable VFD emulation (currently just stubbed). Disable to use a real VFD
GP1232A02A FUTABA assembly (COM port number varies by game).
## `[amvideo]`
Controls the `amvideo.dll` stub built into Segatools. This is a DLL that is

View File

@ -116,6 +116,7 @@ void fgo_hook_config_load(
aime_config_load(&cfg->aime, filename);
dvd_config_load(&cfg->dvd, filename);
io4_config_load(&cfg->io4, filename);
vfd_config_load(&cfg->vfd, filename);
touch_screen_config_load(&cfg->touch, filename);
printer_config_load(&cfg->printer, filename);
fgo_deck_config_load(&cfg->deck, filename);

View File

@ -20,6 +20,7 @@ struct fgo_hook_config {
struct aime_config aime;
struct dvd_config dvd;
struct io4_config io4;
struct vfd_config vfd;
struct touch_screen_config touch;
struct printer_config printer;
struct deck_config deck;

View File

@ -67,7 +67,7 @@ static DWORD CALLBACK fgo_pre_startup(void)
goto fail;
}
hr = vfd_hook_init(1);
hr = vfd_hook_init(&fgo_hook_cfg.vfd, 1);
if (FAILED(hr)) {
goto fail;

View File

@ -37,5 +37,6 @@ void mai2_hook_config_load(
aime_config_load(&cfg->aime, filename);
dvd_config_load(&cfg->dvd, filename);
io4_config_load(&cfg->io4, filename);
vfd_config_load(&cfg->vfd, filename);
mai2_dll_config_load(&cfg->dll, filename);
}

View File

@ -15,6 +15,7 @@ struct mai2_hook_config {
struct aime_config aime;
struct dvd_config dvd;
struct io4_config io4;
struct vfd_config vfd;
struct mai2_dll_config dll;
};

View File

@ -57,7 +57,7 @@ static DWORD CALLBACK mai2_pre_startup(void)
goto fail;
}
hr = vfd_hook_init(2);
hr = vfd_hook_init(&mai2_hook_cfg.vfd, 2);
if (FAILED(hr)) {
goto fail;

View File

@ -68,6 +68,7 @@ void mercury_hook_config_load(
dvd_config_load(&cfg->dvd, filename);
io4_config_load(&cfg->io4, filename);
gfx_config_load(&cfg->gfx, filename);
vfd_config_load(&cfg->vfd, filename);
mercury_dll_config_load(&cfg->dll, filename);
touch_config_load(&cfg->touch, filename);
elisabeth_config_load(&cfg->elisabeth, filename);

View File

@ -19,6 +19,7 @@ struct mercury_hook_config {
struct dvd_config dvd;
struct io4_config io4;
struct gfx_config gfx;
struct vfd_config vfd;
struct mercury_dll_config dll;
struct touch_config touch;
struct elisabeth_config elisabeth;

View File

@ -64,7 +64,7 @@ static DWORD CALLBACK mercury_pre_startup(void)
goto fail;
}
hr = vfd_hook_init(2);
hr = vfd_hook_init(&mercury_hook_cfg.vfd, 2);
if (FAILED(hr)) {
goto fail;

View File

@ -40,5 +40,6 @@ void mu3_hook_config_load(
dvd_config_load(&cfg->dvd, filename);
io4_config_load(&cfg->io4, filename);
gfx_config_load(&cfg->gfx, filename);
vfd_config_load(&cfg->vfd, filename);
mu3_dll_config_load(&cfg->dll, filename);
}

View File

@ -20,6 +20,7 @@ struct mu3_hook_config {
struct io4_config io4;
struct gfx_config gfx;
// struct led15093_config led15093;
struct vfd_config vfd;
struct mu3_dll_config dll;
};

View File

@ -76,7 +76,7 @@ static DWORD CALLBACK mu3_pre_startup(void)
goto fail;
}
hr = vfd_hook_init(2);
hr = vfd_hook_init(&mu3_hook_cfg.vfd, 2);
if (FAILED(hr)) {
goto fail;

View File

@ -42,6 +42,7 @@ void swdc_hook_config_load(
zinput_config_load(&cfg->zinput, filename);
dvd_config_load(&cfg->dvd, filename);
io4_config_load(&cfg->io4, filename);
vfd_config_load(&cfg->vfd, filename);
}
void zinput_config_load(struct zinput_config *cfg, const wchar_t *filename)

View File

@ -17,6 +17,7 @@ struct swdc_hook_config {
struct aime_config aime;
struct dvd_config dvd;
struct io4_config io4;
struct vfd_config vfd;
struct swdc_dll_config dll;
struct zinput_config zinput;
};

View File

@ -64,7 +64,7 @@ static DWORD CALLBACK swdc_pre_startup(void)
goto fail;
}
hr = vfd_hook_init(4);
hr = vfd_hook_init(&swdc_hook_cfg.vfd, 4);
if (FAILED(hr)) {
return hr;