Files
TeamTofuShop_segatools/dist/diva/segatools.ini
T
kyoubate-haruka 0e76dd832a diva: input rewrite, dinput/xinput, button alternation, auto-slide, wintouch, printer (#129)
* Rewrote the input handler

Added support for dinput and xinput, full keyboard slider cell binding (#127), hold-takeovers, button alternation and auto-sliding (PS4 behaviour). See segatools.ini for a detailed description about everything.

* Split touch handling into backends and added Wintouch touch emulation

Now you can use actual touchscreens as well as mouse emulation was not the greatest when trying to use an actual touchscreen.

* Fixed input issues

gamebtns was always uninitialized, so good luck trying to do anything. How did nobody ever complain about this? lol

* Fixed resolution issues caused by chaining both gfx hooks

The diva-specific hook is the only one we need. Stacking both has strange effects.

* Added support for the MITSUBISHI CP9550DS printer

Q: Why?
A: /shrug

![https://puu.sh/KQlev/ce2ef0efed.bmp](https://puu.sh/KQlev/ce2ef0efed.bmp)

I am not particularly good at this game (or the pass requirements are insane, 23+12 misses out of ~550 is a fail!?), so if someone could test how this feels as opposed to the PS4 version, that would help a lot!

![https://puu.sh/KQldU/fa4c848ff9.png](https://puu.sh/KQldU/fa4c848ff9.png)

Also something that happens but that I can't reliably reproduce is that my aime card reader randomly becomes NG after a dozen game starts until I delete eeprom.bin.
If that is the case, the only packet sent is SEND_HEX_DATA.

Reviewed-on: https://gitea.tendokyu.moe/TeamTofuShop/segatools/pulls/129
Co-authored-by: kyoubate-haruka <46010460+kyoubate-haruka@users.noreply.github.com>
Co-committed-by: kyoubate-haruka <46010460+kyoubate-haruka@users.noreply.github.com>
2026-08-10 15:41:40 +00:00

283 lines
9.7 KiB
INI

; -----------------------------------------------------------------------------
; Path settings
; -----------------------------------------------------------------------------
[vfs]
; Insert the path to the game AMFS directory here (contains ICF1 and ICF2)
amfs=
; Insert the path to the game Option (mdata) directory here (contains Mxxx directories)
option=
; Create an empty directory somewhere and insert the path here.
; This directory may be shared between multiple SEGA games.
; NOTE: This has nothing to do with Windows %APPDATA%.
appdata=
; -----------------------------------------------------------------------------
; Device settings
; -----------------------------------------------------------------------------
[aime]
; Enable Aime card reader assembly emulation. Disable to use a real SEGA Aime
; reader.
enable=1
aimePath=DEVICE\aime.txt
; Virtual-key code. If this button is **held** then the emulated IC card reader
; 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. Default is the Return key.
scan=0x0D
; -----------------------------------------------------------------------------
; Network settings
; -----------------------------------------------------------------------------
[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.
default=127.0.0.1
[netenv]
; Simulate an ideal LAN environment. This may interfere with head-to-head play.
; Chunithm is extremely picky about its LAN environment, so leaving this
; setting enabled is strongly recommended.
enable=1
; The final octet of the local host's IP address on the virtualized subnet (so,
; if the keychip subnet is `192.168.32.0` and this value is set to `11`, then the
; local host's virtualized LAN IP is `192.168.32.11`).
addrSuffix=11
; -----------------------------------------------------------------------------
; Board settings
; -----------------------------------------------------------------------------
[gpio]
; Emulated Nu DIP switch for Distribution Server setting.
;
; If multiple machines are present on the same LAN then set this to 1 on
; exactly one machine and set this to 0 on all others.
dipsw1=1
; Chassis Test button virtual-key code. Default is the F4 key.
sw1=0x73
; Chassis Service button virtual-key code. Default is the F5 key.
sw2=0x74
[keychip]
; Keychip serial number. Keychip serials observed in the wild follow this
; pattern: `A\d{2}(E|X)-(01|20)[ABCDU]\d{8}`.
id=A69E-01A88888888
; The /24 LAN subnet that the emulated keychip will tell the game to expect.
; If you disable netenv then you must set this to your LAN's IP subnet, and
; that subnet must start with 192.168.
subnet=192.168.78.0
[pcbid]
; Set the Windows host name. This should be an ALLS MAIN ID, without the
; hyphen (which is not a valid character in a Windows host name).
serialNo=ACAE01A99999999
; -----------------------------------------------------------------------------
; Misc. hooks settings
; -----------------------------------------------------------------------------
[touch]
; Enable/Disable Elo Touchsystems 2701 (SEGA 838-14772) emulation.
enable=1
; Touchscreen input type, use "mouse" for mouse or "wintouch" for touchscreen.
mode=mouse
[gfx]
; Enables the graphics hook. If you use a third-party render hook, this
; should be turned off.
enable=1
; Force the game to run windowed.
windowed=0
; Add a frame to the game window if running windowed.
framed=0
[printer]
; MITSUBISHI CP9550DS printer emulation setting.
enable=1
; Insert the path to the image output directory here.
printerOutPath="DEVICE\print"
; Change the printer serial number here. Maximum 6 characters.
serialNo=FAKEPR
; Printing time in seconds. Set to 0 to instantly complete.
printTime=35
; -----------------------------------------------------------------------------
; Custom IO settings
; -----------------------------------------------------------------------------
[aimeio]
; To use a custom card reader IO DLL enter its path here.
; Leave empty if you want to use Segatools built-in keyboard input.
; If empty, SEGATOOLS_AIMEIO_PATH is used if set, followed by
; SEGATOOLS_IO_ROOT\aimeio.dll.
path=
[divaio]
; To use a custom Project DIVA Arcade IO DLL enter its path here.
; Leave empty if you want to use Segatools built-in gamepad/wheel input.
; If empty, SEGATOOLS_DIVAIO_PATH is used if set, followed by
; SEGATOOLS_IO_ROOT\divaio.dll.
path=
; -----------------------------------------------------------------------------
; Input settings
; -----------------------------------------------------------------------------
; Keyboard bindings are specified as hexadecimal (prefixed with 0x) or decimal
; (not prefixed with 0x) virtual-key codes, a list of which can be found here:
;
; https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
;
; This is, admittedly, not the most user-friendly configuration method in the
; world. An improved solution will be provided later.
[io3]
; Test button virtual-key code. Default is the F1 key.
test=0x70
; Service button virtual-key code. Default is the F2 key.
service=0x71
; Keyboard button to increment coin counter. Default is the F3 key.
coin=0x72
; Minimum time in milliseconds a button needs to be pressed down for a hold-transfer.
;
; On the console versions, you can quickly press a button by alternating the primary
; and the extra button of the same symbol. This still works while the first button is
; being registered as down. The arcade version does not know this concept, so we need
; to trick a little to get this to work.
;
; For example: If you are pressing Cross, and you are pressing D-Pad Down while Cross
; is still being registered as pressed, DivaIO will release Cross for a single frame
; to make sure the second press registers as a press.
;
; Unfortunately this will break "hold transfers", i.e. pressing and holding Cross for
; a HOLD note and then pressing D-Pad Down while also holding Cross and then releasing
; Cross so you do not break the hold note. Therefore you can specify here a timeout
; range when switching from a button of the same symbol while both are being registered
; as pressed to keep it being held down instead of releasing it for one frame.
;
; The default timeline looks as follow:
; <---DOUBLETAP---><-----------HOLD-TRANSFER-----------><DOUBLETAP (RE-TAP)--------......>
; | | | | |
; 0s 0.5s 1s 2s 3s
; 1st Tap
;
; These settings work regardless of input mode.
; Please note that the resolution of the timer used is in the 10-16ms range.
; If you do not want to use hold-transfers (and always re-tap), set both values to 0.
holdTransferTimeMin=500
holdTransferTimeMax=2000
;doubleTapReleaseDelayFrames=1
; Input mode. Use "keyboard" for keyboard, "dinput" for DirectInput or
; "xinput" for XInput.
mode=keyboard
[slider]
; Enable slider emulation. If you have real AC slider, set this to 0.
; Slider serial port must be COM11.
;enable=1
; Key bindings for automatic sliding. When the specified key is held down,
; the slider is constantly swiped into that direction. If both are pressed,
; two swipes into opposite directions are performed. This is PS4 behaviour.
; By default, this is left shift and right shift.
autoSlideLeft=0xA0
autoSlideRight=0xA1
; Key bindings for each of the 32 touch cells, if auto-sliding is not used.
; The default key map, depicted in left-to-right order, is as follows:
;
; QQQQWWWWEEEERRRRUUUUIIIIOOOOPPPP
;
;cell1=0x51
;cell2=0x51
; ...
;cell31=0x50
;cell32=0x50
[keyboard]
; Defaults:
;
; Triangle: Up Arrow
; Square: Left Arrow
; Cross: Down Arrow
; Circle: Right Arrow
; Start: Space
triangle=0x27
square=0x28
cross=0x25
circle=0x26
start=0x20
[dinput]
; Name of the DirectInput device to use (or any text that occurs in its name)
; Example: Wireless Controller
;
; If this is left blank then the first DirectInput device will be used.
deviceName=
; DirectInput button numbers to map to menu inputs. Note that buttons are
; numbered from 1; some software numbers buttons from 0.
; Use 0 to disable a button. The defaults are for a PS4 controller.
test=9
service=14
triangle=4
square=1
cross=2
circle=3
start=10
; Secondary bindings for the game buttons. These can be used for alternating
; or hold-transfers like in the PS4 version. If your controller reports
; directional buttons as a hat switch, you don't need to bind these.
extraTriangle=0
extraSquare=0
extraCross=0
extraCircle=0
; Bindings for automatic sliding. When the specified button is held down,
; the slider is constantly swiped into that direction. If both are pressed,
; two swipes into opposite directions are performed. This is PS4 behaviour.
autoSlideLeftButton=5
autoSlideRightButton=6
; Axes to use for auto-sliding. Valid axis names are:
;
; X, Y, Z, RX, RY, RZ, U, V
;
; (U and V are old names for Slider 1 and Slider 2 - DirectInput sliders,
; not the Project Diva slider device)
;
; By default, the positive direction will slide to the right, and the
; negative direction will slide to the left. This can be inverted if desired.
; PS4 behaviour is axis1 being the left stick and axis2 being the right stick.
autoSlideAxis1=X
autoSlideAxis2=Z
autoSlideAxis1Invert=0
autoSlideAxis2Invert=0
[xinput]
; On XInput controllers, buttons are fixed depending on their position.
; A / Pad Down = Cross
; B / Pad Right = Circle
; X / Pad Left = Square
; Y / Pad Up = Triangle
; Start = Start
; Left Stick Horizontal = Auto-Slide 1
; Right Stick Horizontal = Auto-Slide 2
; LB / LT = Auto-Slide 1
; RB / RT = Auto-Slide 2
; Enables SELECT to be used as TEST.
useSelect=0