forked from TeamTofuShop/segatools
In this PR, I have added the `mai2` touch and `led15070` hooks to provide an example for handling custom peripherals. This change allows users to implement the touch and `led15070` logic by writing appropriate `mai2io` scripts. #### **Touch Hook**: - The touch hook simulates touch points based on keyboard combinations. For example, to trigger the A1 touch point, the user must press the A and 1 keys on the keyboard. Input for the 1p requires Caps Lock to be off, while 2p requires Caps Lock to be on. - The hook allows for independent control of whether device simulation is enabled for "1p" and "2p" and whether keyboard input mapping is enabled. - **Note**: The current touch hook is not yet functional as it requires modifications to the `capnhook` for proper completion of the `sinmai` hook. #### **LED15070 Hook**: - This hook implements basic device simulation. Peripherals requiring lighting data should complete the logic as needed. - **Note**: The LED data refresh can flood the console logs, so I’ve added a `DEBUG` flag to control whether the debug logging is enabled or not. #### **Other Changes**: - In certain versions of `sinmai`, key inputs for 1p and 2p can be directly read from the keyboard without requiring simulation via the `amdaemon io4` hook. I’ve added a switch to control this behavior to prevent redundant input. - **Benefit**: This ensures that key input is only read when `sinmai` is in the foreground. If you'd like to learn more about the touch and `led15070` features, my research findings are available here: [Mai2Touch](https://github.com/Sucareto/Mai2Touch) Co-authored-by: Sucareto <28331534+Sucareto@users.noreply.github.com> Reviewed-on: TeamTofuShop/segatools#55 Co-authored-by: Mahuyo <mahuyo@noreply.gitea.tendokyu.moe> Co-committed-by: Mahuyo <mahuyo@noreply.gitea.tendokyu.moe>
139 lines
3.6 KiB
Meson
139 lines
3.6 KiB
Meson
project(
|
|
'segatools',
|
|
'c',
|
|
version: '0.1.0',
|
|
default_options: [
|
|
'werror=true',
|
|
],
|
|
)
|
|
|
|
add_project_arguments(
|
|
'-DCOBJMACROS',
|
|
'-DDIRECTINPUT_VERSION=0x0800',
|
|
'-DWIN32_LEAN_AND_MEAN',
|
|
'-D_WIN32_WINNT=_WIN32_WINNT_WIN7',
|
|
'-DMINGW_HAS_SECURE_API=1',
|
|
# '-ggdb', # Add debug information
|
|
language: 'c',
|
|
)
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
if cc.get_id() != 'msvc'
|
|
add_project_arguments(
|
|
'-ffunction-sections',
|
|
'-fdata-sections',
|
|
'-Wno-unused',
|
|
language: 'c',
|
|
)
|
|
|
|
add_project_link_arguments(
|
|
'-Wl,--enable-stdcall-fixup',
|
|
'-Wl,--exclude-all-symbols',
|
|
'-Wl,--gc-sections',
|
|
'-static-libgcc',
|
|
# '-ggdb', # Add debug information
|
|
'-lcrypt32', # Bcrypt needed for prashook
|
|
'-lws2_32', # WSAHtons / WSANtohs needed for porthook
|
|
# '-Wl,-s', # Strip debug symbols
|
|
language: 'c',
|
|
)
|
|
endif
|
|
|
|
if get_option('log_all') or get_option('log_jvs')
|
|
add_project_arguments('-DLOG_JVS', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_io3')
|
|
add_project_arguments('-DLOG_IO3', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_led15070')
|
|
add_project_arguments('-DLOG_LED15070', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_led15093')
|
|
add_project_arguments('-DLOG_LED15093', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_nfc')
|
|
add_project_arguments('-DLOG_NFC', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_carol_control_bd')
|
|
add_project_arguments('-DLOG_CAROL_CONTROL_BD', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_carol_led_bd')
|
|
add_project_arguments('-DLOG_CAROL_LED_BD', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_carol_touch')
|
|
add_project_arguments('-DLOG_CAROL_TOUCH', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_mai2_touch')
|
|
add_project_arguments('-DLOG_MAI2_TOUCH', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_chuni_slider')
|
|
add_project_arguments('-DLOG_CHUNI_SLIDER', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_chusan_slider')
|
|
add_project_arguments('-DLOG_CHUSAN_SLIDER', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_diva_slider')
|
|
add_project_arguments('-DLOG_DIVA_SLIDER', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_mercury_slider')
|
|
add_project_arguments('-DLOG_MERCURY_SLIDER', language: 'c')
|
|
endif
|
|
if get_option('log_all') or get_option('log_clock')
|
|
add_project_arguments('-DLOG_CLOCK', language: 'c')
|
|
endif
|
|
|
|
shlwapi_lib = cc.find_library('shlwapi')
|
|
dinput8_lib = cc.find_library('dinput8')
|
|
dxguid_lib = cc.find_library('dxguid')
|
|
xinput_lib = cc.find_library('xinput')
|
|
pathcch_lib = cc.find_library('pathcch')
|
|
imagehlp_lib = cc.find_library('imagehlp')
|
|
|
|
inc = include_directories('.')
|
|
capnhook = subproject('capnhook')
|
|
|
|
subdir('amex')
|
|
subdir('iccard')
|
|
subdir('board')
|
|
subdir('hooklib')
|
|
subdir('jvs')
|
|
subdir('platform')
|
|
subdir('util')
|
|
|
|
subdir('gfxhook')
|
|
subdir('unityhook')
|
|
|
|
subdir('aimeio')
|
|
subdir('chuniio')
|
|
subdir('divaio')
|
|
subdir('carolio')
|
|
subdir('idzio')
|
|
subdir('idacio')
|
|
subdir('swdcio')
|
|
subdir('mu3io')
|
|
subdir('mai2io')
|
|
subdir('cmio')
|
|
subdir('mercuryio')
|
|
subdir('cxbio')
|
|
subdir('tokyoio')
|
|
subdir('fgoio')
|
|
subdir('kemonoio')
|
|
|
|
subdir('chunihook')
|
|
subdir('divahook')
|
|
subdir('carolhook')
|
|
subdir('idzhook')
|
|
subdir('idachook')
|
|
subdir('swdchook')
|
|
subdir('minihook')
|
|
subdir('chusanhook')
|
|
subdir('mu3hook')
|
|
subdir('mai2hook')
|
|
subdir('cmhook')
|
|
subdir('mercuryhook')
|
|
subdir('cxbhook')
|
|
subdir('tokyohook')
|
|
subdir('fgohook')
|
|
subdir('kemonohook')
|