## 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
n/a
## Description of change
Add CMake option to disable SCard functionality. Needed by some builds
of WINE, where distributor opted to not enable scard functionality for
whatever reason
## Testing
Building with `cmake -DWITH_SCARD=OFF` does not link against winscard
Building without this option at all links against winscard
## 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)
## Link to GitHub Issue, if one exists
#0
## Description of change
The original launcher::detect_bootstrap_release_code() wasn't detecting
user specified bootstrap.xml path, and was causing issues for
patch_manager and other ext check spots prior to ea3 init (as ea3 does
proper path check itself).
I've added the user path check and proper xml parsing from
detect_gameversion().
## Testing
Tested with prop/bootstrap.xml presents.
Tested with prop/bootstrap.xml not presents and -b
/path/to/bootstrap.xml
## 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
none
## Description of change
Supports PCM version 2024091200.
## Testing
1. After starting the PCM, touch card and auth.
2. Press the bill insert button.
3. Check account balance has increased.
## 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.
## Description of change
When the game library fails to load, recursively iterate its import
table to narrow down the missing library.
If the dependency is a commonly missing one, give the user a hint on
where to find it.
## Testing
System with an AMD GPU and LDJ-010 IIDX:
```
[2025/10/01 00:32:41] M:dependencies: bm2dx.dll
[2025/10/01 00:32:41] M:dependencies: |-- nvEncodeAPI64.dll
[2025/10/01 00:32:41] W:dependencies: | |-- [!] NVIDIA Graphics Driver
[2025/10/01 00:32:41] W:dependencies: | |-- For non-NVIDIA GPUs, copy the stub file from the spice2x release .zip.
[2025/10/01 00:32:41] F:libutils: DLL failed to load - this is a common error. Please carefully read ALL of the following steps for a fix:
```
Same system, but with SDVX:
```
[2025/10/01 00:33:53] M:dependencies: soundvoltex.dll
[2025/10/01 00:33:53] M:dependencies: |-- nvcuda.dll
[2025/10/01 00:33:53] W:dependencies: | |-- [!] NVIDIA Graphics Driver
[2025/10/01 00:33:53] W:dependencies: | |-- For non-NVIDIA GPUs, copy the stub file from the spice2x release .zip.
[2025/10/01 00:33:53] M:dependencies: |-- nvcuvid.dll
[2025/10/01 00:33:53] W:dependencies: | |-- [!] NVIDIA Graphics Driver
[2025/10/01 00:33:53] W:dependencies: | |-- For non-NVIDIA GPUs, copy the stub file from the spice2x release .zip.
[2025/10/01 00:33:53] F:libutils: DLL failed to load - this is a common error. Please carefully read ALL of the following steps for a fix:
```
Contrived example of a missing dependency of a dependency:
```
[2025/10/01 00:30:59] M:dependencies: bm2dx.dll
[2025/10/01 00:30:59] M:dependencies: |-- libaio.dll
[2025/10/01 00:30:59] W:dependencies: | |-- [!] The library could not be loaded. (126)
[2025/10/01 00:30:59] M:dependencies: |-- libaio-iob.dll
[2025/10/01 00:30:59] M:dependencies: | |-- libaio.dll
[2025/10/01 00:30:59] M:dependencies: |-- libaio-iob2_video.dll
[2025/10/01 00:30:59] M:dependencies: | |-- libaio.dll
[2025/10/01 00:30:59] M:dependencies: | |-- libaio-iob.dll
[2025/10/01 00:30:59] F:libutils: DLL failed to load - this is a common error. Please carefully read ALL of the following steps for a fix:
```
Another example of a missing file, but with 32-bit IIDX 24:
```
[2025/10/01 00:42:13] M:dependencies: bm2dx.dll
[2025/10/01 00:42:13] M:dependencies: |-- libafp-win32.dll
[2025/10/01 00:42:13] W:dependencies: | |-- [!] The library could not be loaded. (126)
[2025/10/01 00:42:13] M:dependencies: |-- libafputils-win32.dll
[2025/10/01 00:42:13] M:dependencies: | |-- libafp-win32.dll
[2025/10/01 00:42:13] F:libutils: DLL failed to load - this is a common error. Please carefully read ALL of the following steps for a fix:
```
---------
Co-authored-by: aixxe <me@aixxe.net>
## 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
n/a
## Description of change
Allow importing patches for `boot.dll`
## Testing
Observed patch for the new DLL being attempted to be imported in the
logs.
## 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.