## Link to GitHub Issue, if one exists
n/a
## Description of change
This would save a handful of instructions at best but it was bothering
me
## Testing
Tested with two controllers + naive with ddr
## Link to GitHub Issue, if one exists
n/a
## Description of change
`acmFormatSuggest` is known to cause significant perf issues on Linux;
add a hook to return cached results.
The fix is only active in the Linux variant.
For discussion, see
* https://codeberg.org/nixac/spicetools/issues/2
* https://codeberg.org/nixac/spicetools/issues/4
## Testing
I've only tested this on Windows, checking if iidx and popn can boot,
play songs without audio issues.
## Link to GitHub Issue, if one exists
n/a
## Description of change
In cases where the subscreen overlay window does not have anything to
show (either via misconfiguration or an error), ensure that the window
border is shown with the close button. Additionally, add a small button
to close the dialog to help the user.
## Testing
manual validation
## Link to GitHub Issue, if one exists
n/a
## Description of change
If `SCardGetStatusChange` returns `SCARD_E_SERVICE_STOPPED`, stop
polling.
Add some sleep if it fails for other reasons to prevent busy loops.
## Testing
Tested with ACR122U reader.
## Link to GitHub Issue, if one exists
#345
## Description of change
Most games will fail show a network error if there is no network adapter
with a valid IPv4 address
Detect this case in netfix code and show a warning message in log +
deferred error message.
## Testing
Tested with no network adapters, with IPv6 only adapter, and a
disconnected NIC.
## Link to GitHub Issue, if one exists
#442
## Description of change
Adds a new option that intentionally fails the recording functionality.
## Testing
Tested on iidx32.
## Link to GitHub Issue, if one exists
fixes#442
## Description of change
New NVIDIA driver update (591.44) dropped support for older NVENC API.
Specifically,
* TDJ uses `NV_ENC_PRESET_HQ_GUID` but this is no longer supported; must
be swapped with new encoder presets
* `NvEncGetEncodePresetConfig` does not take new encoder presets, the
-Ex version must be used
All of this happens because bm2dx.dll takes code from an older NVENC
sample.
To address this,
* Install additional hooks for NVENC API
* Hijack calls to `NvEncGetEncodePresetConfig` and instead swap with
`NvEncGetEncodePresetConfigEx` (only if the initial call fails, which is
how we detect old vs new driver), replacing `NV_ENC_PRESET_HQ_GUID` with
`NV_ENC_PRESET_P4_GUID` and `NV_ENC_TUNING_INFO_HIGH_QUALITY`
(functionally equivalent according to NVIDIA docs -
https://docs.nvidia.com/video-technologies/video-codec-sdk/11.1/nvenc-preset-migration-guide/index.html)
* When calling `nvEncInitializeEncoder`, hijack and swap in the preset
GUID again.
## Testing
Tested on 591.44 driver on a RTX 4070.
The resulting videos were compared as well, and they are practically
identical from encoder perspective.
## Link to GitHub Issue, if one exists
#345
## Description of change
Add some descriptive error message for the case where we couldn't find
softid in prop files.
## Testing
manual
## Link to GitHub Issue, if one exists
n/a
## Description of change
Add the raw device handle string to tooltip.
Add `Reset` button that clears all values.
## Testing
manual testing
## Link to GitHub Issue, if one exists
Fixes#432
## Description of change
Newer versions of iidx33+ reintroduces `SOUND_OUTPUT_DEVICE` env var.
iidx module must account for its return
## Testing
## Link to GitHub Issue, if one exists
#345
## Description of change
Warn user via warning message in log + auto-troubleshooter entry when
-monitor option is used in full screen with TDJ and UFC mode.
This covers yet another case where TDJ subscreen does not respond to
mouse clicks (because the game expects them to come through the primary
display). For UFC, -monitor usually results in a failure to create DX
adapter.
## Testing
Manual verification with TDJ/UFC modes and two monitors.
## Link to GitHub Issue, if one exists
For #345
Similar idea as https://github.com/spice2x/spice2x.github.io/pull/350
## Description of change
Disable camera access by default by setting `CONNECT_CAMERA` environment
var to 0 before launching. This was one of those "required" things
people clicked on, but now it's done automatically to reduce friction
for new users.
On cab setups (i.e., running without -iidx module), cameras will remain
on, unless user overrides it.
On franken setups (partial I/O) - user will need to specify what they
want via the new option, we can't guess correctly.
## Testing
## Link to GitHub Issue, if one exists
n/a
## Description of change
Combo boxes for options were not highlighting the currently selected
item. Also, when there were no description provided for an option, it
was still showing the empty `()` in the selected value.
## Testing
## Description of change
To redirect confused users why no one is developing a remote patch
server for PolCho
## Testing
checked spicecfg in working vs non-working games
## Link to GitHub Issue, if one exists
n/a
## Description of change
For HID device descriptor, use the "W" version of Windows API, and make
sure UTF-8 is being used throughout since that's the only format IMGUI
supports.
Before this change, non-Latin characters would have shown up as `HID ???
?????` for a mouse, for example.
Due to the way ImGui loads fonts, only the following languages are
supported:
* Simplified Chinese
* Cyrillic
* Japanese
* Korean
* Thai
* Vietnamese
## Testing
Tested various combination of Windows UI language and non-Unicode
language.
## Link to GitHub Issue, if one exists
user-reported
## Description of change
When the system non-Unicode language is not set to Japanese, TDJ
subscreen katakana keyboard was broken (weird behavior with characters
not erasing, ending with corrupt characters, etc)
To fix this, add a hook for `IsDBCSLeadByte`. `IsDBCSLeadByte` assumes
system ACP (which may not be SHIFT_JIS). Instead, redirect bm2dx.dll to
use `IsDBCSLeadByteEx` instead with SHIFT_JIS explicitly specified as a
parameter.
Presumably the game was using IsDBCSLeadByte to manage the keyboard
typing logic.... which is weird because SDVX doesn't do the same.
## Testing
Tested iidx 31 and tried to do searches.
## Link to GitHub Issue, if one exists
n/a
## Description of change
They moved some DLLs around so MFC wasn't being auto-detected, and I/O
hooks were not being performed. Fix that.
## Testing
The game boots into test menu, some i/o works, touch doesn't, not
playable yet.
## Link to GitHub Issue, if one exists
#345
## Description of change
When `ea3-pos: ea3_report_posev: no such node:` is detected, add a
deferred error message and guide user to the FAQ.
## Testing
Tested SDVX with the missing XML node.
## Link to GitHub Issue, if one exists
#410
## Description of change
When raising fatal errors via `log_fatal`, also show a modal popup.
Update instances of `log_fatal` where the message was too long to fit.
## Testing
Tested various failure conditions.
## Link to GitHub Issue, if one exists
#410
## Description of change
Forcibly minimize all windows before showing the crash dialog. Without
this, the dialog shows "behind" the game when launching multi-monitor
fullscreen games (TDJ, VM)
## Testing
Tested TDJ and VM in fullscreen.
## Link to GitHub Issue, if one exists
#345
## Description of change
Show a MessageBox when signal detects a crash.
## Testing
Tested full screen and windowed games.
## Link to GitHub Issue, if one exists
#345
## Description of change
Add auto-troubleshooter messages for when audio hooks are disabled, and
when 9on12 is turned on by user.
## Testing
Manual verification
## Link to GitHub Issue, if one exists
n/a
## Description of change
Create a "full" version of the archive with api and extra binaries. The
normal archive remains in place with just src and stubs.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Fix font loading - when the code was refactored in #286 I used the wrong
file extension for couple of them.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Add a "Linux" variant of spicecfg/spice/spice64.exe - currently these
are the same as Windows binaries but built without dependency on
WinSCard, which makes it easier to run on WINE.
Split dist archive into two, move api and extras into the new extras
zip.
## Testing
I only checked to see that Linux variants run fine on Windows, and
checked with dumpbin to confirm that the dependency on winscard DLL is
removed. No official support will be provided for Linux builds.
## Link to GitHub Issue, if one exists
Fixes#403
## Description of change
Set CONNECT_CAMERA env var even when iidx module is not enabled, so that
camhook can work without -iidx being set with real IO
## Testing
tested with emulated i/o and real i/o by user (see linked issue)
## Link to GitHub Issue, if one exists
#399
## Description of change
Add image duplication option to screen resize, allowing overflow images
to wrap around the other side.
## Testing
Tested with DDR, IIDX (windowed and full screen TDJ), SDVX (orientation
swap)
## Description of change
Detect and log troubleshooter messages for:
* (early) hook DLL load failure
* data_mods folder without ifs_hook.dll
* spice version (print out current version and add a link to github
download)
## Testing
## Description of change
iidx: 9on12 crashes iidx31+
popn: special message for createdevice failures (resolution issue)
## Testing
manually test both cases
## Description of change
Finally figured out where the deadlock was coming from - it's because
the `dump_to_logger` was writing `SuperstepSound: Audio device is not
available` to the logger which calls back into the log hook, and then
emits another deferred message, trying to acquire the lock again on the
same stack.
## Testing
Tested the superstep sound failure case again.
## Description of change
Various fixes to deferred logger -
* Rename to "auto troubleshooter"
* Fix potential deadlock
* Reword the error messages to fit in a narrower column
## Testing
tested all the error cases
## Link to GitHub Issue, if one exists
n/a
## Description of change
If log level is anything but `misc` or `all`, complain using the
deferred logger.
## Testing
Tested legacy AVS (DDR X2) and newer games.
## Link to GitHub Issue, if one exists
[#390 ](https://github.com/spice2x/spice2x.github.io/pull/390)
## Description of change
Just like the normal logger, deferred logging can be called from any
component at any time, so accessing the vector needs to be guarded.
## Testing
## Link to GitHub Issue, if one exists
#388
## Description of change
Instead of setting flags in `signal` and logging when we crash, create a
class for logging deferred semi-fatal messages, and dump them to the log
immediately before crashing or shutting down.
## Testing
Tested each failure case by injection.
## Link to GitHub Issue, if one exists
#345
## Description of change
Show a block of warning text if the game crashes after CreateDevice(Ex)
fails.
## Testing
Tested by injecting invalid resolution into spicecfg.
## Link to GitHub Issue, if one exists
#345
## Description of change
Add a little warning message that shows when well-known exception codes
are encountered & caught by signal hooks.
## Testing
Tested by injecting bad instructions into the DLL.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Recently distributed iidx data has this enabled in ea3-config.xml by
default, exposing people's PCBID in the logs.
Find the node in the XML and remove it on boot, unless user overrides it
with a new option.
## Testing
Tested using asphyxia.
## Link to GitHub Issue, if one exists
#345
## Description of change
When the directory specified in the mounttable (in avs-config.xml) lead
to bad path, remember this and show a warning message block before the
game crashes.
## Testing
Tested with simulated bad mounttable set up.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Apply this fix automatically when needed -
https://github.com/two-torial/sp2xpatcher/pull/33
## Testing
Tested iidx31 to see that the patch does not apply
Checked -audiohookdisable to see that the logic gets skipped
Tested 2025041500 and 2025082500.
## Link to GitHub Issue, if one exists
#345
## Description of change
For IIDX / SDVX, when the subscreen surface failed to capture, display
an error message, suggesting the user to patch the game as needed.
Prior to this change, the subscreen overlay just showed an invisible
window if this happened.
## Testing
Tested IIDX windowed / full screen, and voltex full screen.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Add lights output for the buttons lamp array. Only implemented the top
row of lights and not all of them, this is good enough.
## Testing
Tested with a Nostroller and also spiceremote.py.
## Link to GitHub Issue, if one exists
#345
## Description of change
If we see SuperstepSound failure during boot, remember it, and when the
game eventually crashes, log a series of warning messages to surface why
the game likely failed to launch.
## Testing
Tested both iidx and sdvx with an audio device set to not allow
exclusive mode.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Add a new option that allows absolute position analog input, such as
SDVX controller knobs and IIDX turntables, to be bound as input for
Polaris Chord faders.
In practice this means turning a knob counter-clockwise results in fader
being held left (relative to velocity), and vice versa.
## Testing
Tested using FauceTwo and a mouse.
## Link to GitHub Issue, if one exists
#345
## Description of change
If `-exec` is specified, log a giant warning.
Also, fix some compiler warnings in MFG.
## Testing
Confirmed message being logged in log.txt.
## Link to GitHub Issue, if one exists
Fixes#364
## Description of change
The game attempts to hook raw input, but raw input API can only be used
by one window per process. Hook `RegisterRawInputDevices` and prevent
the game from registration for raw input notifications.
## Testing
Tested that HID keyboard works with `Bind` option.
## Link to GitHub Issue, if one exists
Fixes#362
## Description of change
Add a hook for `GetLocaleInfoEx` and return `ja-JP` to fix the
"translation not found" issue in XIF.
## Testing
Tested with/without Disable ACP option.
## Link to GitHub Issue, if one exists
Fixes#365
## Description of change
Always check both analog and digital input when calculating fader
offset.
## Testing
Tested with keyboard and xbox one controller.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Change the dark brown colors used in widget backgrounds to dark gray.
Decrease the in-game overlay transparency (more opaque): 80% -> 96%.
## Testing
Tested cfg and in-game overlay.
## Link to GitHub Issue, if one exists
n/a
## Description of change
In an attempt to make the Options tab smaller, move out more options to
advanced / development tabs.
## Testing
n/a
## Link to GitHub Issue, if one exists
#345
## Description of change
Check if the path to codecs directory contains non-ASCII characters, and
display a giant warning. This is to help with troubleshooting, since
registration of xactengine silently fails (creates a bad registry entry)
if the path contains non-ASCII chars.
Log the size of codec DLLs, and log any failures from `regsvr32`.
Detect the case where user specified `-exec gamemdx.dll` for DDR which
seems to be a common pitfall. This doesn't work because gamemdx.dll does
not have a DLL entry, but for some reason people are really tempted to
do this.
## Testing
Validated the error cases.
## Link to GitHub Issue, if one exists
#345
## Description of change
If ea3 xml is missing pcbid node, AND there is no pcbid override, supply
a default value. Useful for quickly getting offline clients up &
running.
## Testing
Tested with/without pcbid override, with/without pcbid node in xml.
## Link to GitHub Issue, if one exists
#345
## Description of change
Account for the path to codec DLL having spaces in it and use wide
chars.
## Testing
Testing 32 and 64 bits.
## Link to GitHub Issue, if one exists
#345
## Description of change
On launch of spice.exe / spice64.exe, call `regsvr32` on known codecs in
the `com` directory.
Add an option to skip this (`-ddrnocodec`) as a chicken bit.
## Testing
Tested 32 and 64 bit DDR.
## Link to GitHub Issue, if one exists
#345
## Description of change
Simplify camera hook in SDVX5/6. Camera hook will always be installed
and return 0 cameras.
Deprecate `-sdvxdisablecams` option as it is no longer needed as a
result of this change.
## Testing
Tested SDVX5 final, SDVX6 year 1, and a recent SDVX6 build.
## Link to GitHub Issue, if one exists
#345
## Description of change
On launch of spice/spice64, dump bindings in Buttons and Analog tab
## Testing
Tested on 32 bit and 64 bit
## Link to GitHub Issue, if one exists
n/a
## Description of change
Allow importing patches for `libshare-pj.dll`
## Testing
Observed patch for the new DLL being attempted to be imported in the
logs.
## Link to GitHub Issue, if one exists
n/a
## Description of change
When an exception is caught during ACIO hook init, print a special
message to suggest the user to disable RTSS and MSI Afterburner, since
they are known to cause issues.
## Testing
Tried with RTSS enabled with High detection and with it disabled. Also
tried to crash the game a different way and check that the message is
not printed and the callstack is shown propeerly.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Fix an issue when clicking on the TDJ windowed subscreen with overlay
active will occasionally drop all future mouse clicks, until the overlay
is completely hidden.
## Testing
Tested TDJ windowed subscreen, with poke, with auto-pin, and with
spicecompanion.
SDVX: this was never an issue for UFC mode, but this change doesn't make
any functional difference either.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Add `Help` menu.
Move Licenses and About dialog under Help.
Add links to the wiki.
Make game selection drop-down slightly wider to make better use of space
that has been freed up.
## Testing
tested in cfg (with/without game), and in-game overlay
## Link to GitHub Issue, if one exists
n/a
## Description of change
Complain if nvcuda.dll, nvcuvid.dll, or nvEncodeAPI64.dll are found in
modules or in root directory. This would complain for spice-provided
stubs as well.
## Testing
## Link to GitHub Issue, if one exists
Fixes#190
## Description of change
When `-cmdoverride` is specified, any command line arguments are taken
first before merging with what is in the config file.
## Testing
Still testing...
## Link to GitHub Issue, if one exists
n/a
## Description of change
Rotate the printer output so that it's the correct orientation
(portrait, not landscape).
## Testing
Tested via test image, and also in-game, for LP and SDVX.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Add a stub for `cpusbxpkm.dll`. The stub doesn't work, it's only enough
to allow the game to load; but that is irrelevant since spice hooks the
printer at runtime.
## Testing
Observed the game boot, and was able to print out the test image from
test menu. Will do more testing on a real server.
## Link to GitHub Issue, if one exists
Fixes#322
## Description of change
Ensure game launches in full screen when windowed mode setting is off.
Before this PR, the game always launched in windowed mode.
## Testing
Seems to run fine in fullscreen with the monitor in portrait mode.
It does seem to run at even lower framerate (around 24fps, vs. 30fps in
windowed) but it might be expected.
Some weirdness with the mouse cursor when the overlay is active (two
cursors).
## Link to GitHub Issue, if one exists
Fixes#320
## Description of change
Replacing the existing logic that searches for game window to hook touch
on.
Eventually, we should fix all the other games that hook touch by
matching on window title with a call to `FindProcessWindowBeginsWith`.
## Testing
Tested with notepad open that was also titled `LovePlusAC`. Game hooked
correctly when the game was in focus during boot, and also when notepad
was in focus.
## Link to GitHub Issue, if one exists
#316
(this does not fix the issue!)
## Description of change
Add an option to omit `-noCamera` option. Doing so allows the game to
boot and search for a compatible camera using KS API, but will likely
fail since we don't know what cameras are compatible. You end up with a
camera error during boot, which can be ignored by flipping a switch in
the test menu to disable the camera.
No hooks are currently done to make the camera work!
## Testing
Tested to see that turning this on triggers the camera error. No known
camera at the moment.
## Link to GitHub Issue, if one exists
Fixes#139
## Description of change
Add an option for detecting window focus when accepting input.
The new default will be to have the following:
* naive bindings will check for window focus
* rawinput binds are not affected, will continue to be accepted
regardless of focus
Other options (always / never choices) can be picked by the user to
tweak the behavior if needed.
Clean up usage of `0xff` constant to represent invalid naive vkey.
## Testing
Still in progress, especially in regards to performance.
On a i7-9700 system, 10000 calls to `superexit::has_focus()` takes
250-350 microseconds, so this should not be a big deal at all.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Dump monitor resolution and refresh rate to the log on launch.
## Testing
Tested with two monitors.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Allow the server to override client's quality options for screen
mirroring.
On Windows / Android versions (flutter-based) clients, this is already
in the options of those apps. However, the iOS version lacks the quality
options.
## Testing
Tested with iOS and Windows clients.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Mark the option as "sensitive" which censors the option value (adapter's
IP address)
Remove the log entry from spice
This isn't perfect because most of the games like to log the IP address
and subnet anyway, but at least spice itself will stop doing it.
## Testing
Tested 64 bit LDJ with parameter set.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Always log the DLL identifier string in patch manager, even if there are
no patches.
## Testing
Tested 32 / 64 bits.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Log a message if d3d9.dll (and friends) are found in the game root or
the modules directory.
This is to help with troubleshooting in cases where the user is unaware
that d3d9 is being used to inject other DLLs (e.g., ifs_layeredfs), or
when DX9 reimplementation is causing issues / crashes (e.g., dxvk).
## Testing
Observed the new messages being logged in both modules / root directory.
## Link to GitHub Issue, if one exists
Fixes#307
## Description of change
Add an option for making TDJ/UFC subscreen window borderless in windowed
mode
Add another option for keeping the subscreen "always on top".
Add size / position arguments to SDVX windowed subscreen, exactly the
same as what is allowed for IIDX.
## Testing
Seems to work....
## Link to GitHub Issue, if one exists
#304
## Description of change
Complain loudly about DLL conflicts. Show warnings for each DLL that
exists in both modules directory and the root.
This is not based on LoadLibrary hooks, just enumerating DLLs via
filesystem access.
Deliberately not using `log_fatal` since these are not necessarily going
to crash the game. Some people just love to have messy installs and if
the game booted fine before, it should continue to boot.
## Testing
Tested with/without `-modules`, with/without duplicate DLLs.
## Link to GitHub Issue, if one exists
n/a
## Description of change
The check to warn the user about potential MAX_PATH violation should be
stricter. Saw a user with 150 characters run into a crash during boot
for SDVX3.
## Testing
Tested paths under 130 / over 130, in both 32/64 bits.
## Link to GitHub Issue, if one exists
n/a
## Description of change
For JSON config files of the following features:
* patch manager
* screen resize
* IIDX camera hook
* card manager
when saving a new file, store them in %appdata%\spice2x instead of
%appdata%.
On load:
1. If the JSON file exists in %appdata%\spice2x, use that (new path)
1. If the JSON file exists in %appdata%, continue to use that (legacy
path)
It's common for people to have mixed versions of spicetools/spice2x so
we'll continue to read from the %appdata% root if the files are there,
but with a preference for the new path. We will not forcibly move files.
spicetools.xml will continue to live in the %appdata% root. Moving this
will confuse a lot of people, so I'm avoiding this.
Also, this fixes `-patchcfgpath` and `-resizecfgpath` to create
directories as needed (previously the parent directory must have existed
first)
## Testing
Tested -
* existing config files are continued to be read from %appdata%
* new files get created in %appdata%\spice2x\... (both in spicecfg and
in overlay)
* can provide custom path for `-patchcfgpath` `-resizecfgpath` and
observe directories + file created in custom path, try absolute or local
relative paths
## Link to GitHub Issue, if one exists
Fixes#280
## Description of change
Introduce a variant of 32bit spice.exe that is large address aware.
## Compiling
👍
## Testing
Minimal testing has been done to see if the LAA variant can boot
existing 32 bit games.
## Link to GitHub Issue, if one exists
Fixes#277
## Description of change
To avoid confusion, temporarily remove `-sdvxlandscape` because of the
issue described in the bug above.
`forceresswap` is still kept, so there is still a way to do exactly what
`-sdvxlandscape` used to do, if someone really wants it.
## Testing
Checked that `-sdvxlandscape` is ignored, and that `-sdvxlandscape`
continues to be honored.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Previously, the artifact produced by the CI action was `spice2x.zip`.
With this change, it will be `spice2x-ci-1234567.zip` where 1234567 is
the first 7 chars of the commit hash.
Note that for PRs, github produces a merge commit before queueing the
action, so the commit hash won't match up with the HEAD of a fork. The
goal is to just generate unique-ish filenames so this is not a huge
deal.
## Compiling
## Testing
Action has been run in the fork.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Change the usage pattern for Card Manager UI.
### Previous behavior
Previously, it was a list of cards that you select, and click a button
to insert as P1 or P2.
This is fine, but users got confused when they pressed `Insert Card`
overlay key and got a different card inserted, or when auto-insert
didn't work as expected.
Additionally, if you play a game without continue (IIDX/DDR for
example), then it's cumbersome to bring up the overlay and click on
insert card every time.
### New behavior
Insert Card overlay now lets you pick a card and *slot* it into P1 or P2
side.
From that point on, the slotted card number is used as the override,
replacing what was previously passed to `-card0` or `-card1`. This means
that `Insert Card` button and auto-insert will pick up the new card and
use that instead.
## Compiling
👍
## Testing
Tested 1p-only game (popn) and 2p games (DDR, IIDX).
## Link to GitHub Issue, if one exists
Fixes#295
## Description of change
Add missing `Start` and `10KEY` lights output, as see in the test menu.
## Compiling
👍
## Testing
Seems fine in museca test mode.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Update tooltip for `-monitor` option. Move to `Graphics (Full Screen)`
to reduce clutter.
## Compilin
👍
## Testing
n/a
## Link to GitHub Issue, if one exists
Fixes#120
## Description of change
Don't call `is_touch_available` in launcher before RawInput stack is
initialized. This causes us to incorrectly fall back to the Win7/Win8
touch handler.
The desired behavior is to use rawinput touch by default for all games,
unless overridden by the user via `-wintouch`.
Add a bunch of logging so we can spot who's calling
`is_touch_available`.
As a side effect, a handful of games that previously used Win7/8 touch
will now use RawInput touch instead. If this causes any issues, they can
turn `-wintouch` on to force Win7/8 touch logic again.
## Compiling
👍
## Testing
Test:
* RB
* -wintouch
* TDJ, UFC subscreen and native touch
* overlay, especially in multi-mon
## Link to GitHub Issue, if one exists
n/a
## Description of change
No one uses this, remove them to reduce clutter. This is in preparation
to migrate from deprecated ImGui IO model to new one, and this is part
of that.
## Compiling
👍
## Testing
## Link to GitHub Issue, if one exists
n/a
## Description of change
Update ImGui to `v1.91.4`. We can't update to `v1.91.5` or newer just
yet because impl_spice depends on the old IO model of ImGui which got
removed in `v1.91.5`.
We also can't update the DX9 renderer right now, because at some point
overlay breaks in TDJ (and only in TDJ...)
Enable the new debug logging functionality in ImGui. Add a button in
overlay to toggle debug log window.
Fix some minor bugs spotted by the new ImGui debug log: mismatched API
calls, font loading issues.
## Compiling
👍
## Testing
In progress.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Functionally, no change.
Move ImGui library files around so that they mirror how they are
structured in imgui releases. This will make it easier to migrate to a
future version of ImGui.
Add a handful of static asserts to check that we have the necessary
features enabled / disabled in imgui header.
## Compiling
👍
## Testing
Tested 32-bit overlay, 64-bit overlay, TDJ, and UFC overlays, and
spicecfg.
Interesting finds during ImGui testing (not part of this PR, but for
future reference when upgrading imgui version):
* Updating dx9 backend to the newest causes TDJ to stop rendering the
overlay completely (fine in UFC or any other game)
* Omitting `IMGUI_USE_BGRA_PACKED_COLOR` causes spicecfg software
renderer to use the wrong color (RGB format parsing error probably)
* At some point - v1.90? the `About` and `Licenses` buttons in spicecfg
stop responding after an upgrade, maybe our improper usage of MenuItem?
* Using the docking branch of ImGui is not required but we should just
stick to it for multi-viewport functionality which we may want to use
later.
## Link to GitHub Issue, if one exists
n/a
## Description of change
`ImGui::Columns` is a deprecated component with many issues. Migrate
Buttons/Analog/Overlay/Lights/Options... tabs to the new table API.
Clean up some UI elements around it to reduce clutter.
Note: there are still other usages of Columns API (MIDI debug output,
ACIO viewer, window manager) but no one hardly ever sees those.
Eventually they will need to be migrated if ImGui ever drops support for
them.
## Compiling
👍
## Testing
Testing all games in spicecfg and overlay.