## 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
#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
#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
iidx: 9on12 crashes iidx31+
popn: special message for createdevice failures (resolution issue)
## Testing
manually test both cases
## 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
#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
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
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
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
Fixes#276
## Description of change
Note: this change is not compatible with previous screen resize config;
i.e., if you had the zoom setting dialed into a certain view, after this
change it won't be the same area, so you'll have to set up a scene
again. I think this is a worthwhile cost since the old logic is just
broken in weird ways, and preserving old settings is really tedious math
(for a feature that not many people use). Besides, this change will only
use the new Scenes values from the JSON.
Rewrite the DX9 image scaler logic.
* Previously, the rendering surface was fixed at `4096*4096 px`. Now,
this is relative to the backbuffer dimensions, which depends on the game
& respects user provided `-forceres`.
* Remove "center" option, make it the default.
Above two changes fix the aspect ratio issue (scaling in portrait games
not respecting screen ratio) and things breaking at higher res (1080p
when zoomed out far enough, or when forced to run at 4k resolution for
example)
* Use `scenes` leaf of screen resize JSON config for Scene 1 as well,
completely removing ourselves from being compatible with older spice2x
versions for these values.
* Add additional bounds check before calling `StretchRect` to avoid
users getting stuck with a bad layout, which can kill performance.
## Compiling
🦾
## Testing
Tested 32 bit (popn / ddr), 64 bit (ldj), portrait and landscape modes
(kfc)
## Link to GitHub Issue, if one exists
n/a
## Description of change
Add `SDVX Landscape Mode` option, allowing you to play SDVX in landscape
monitor orientation, with black borders on left and right - similar to
how EAC does it. This is meant to be an alternative to what people do
today, which is launching in windowed mode.
By default, with just `-sdvxlandscape` enabled, EG will launch at
1920x1080 (transposed from the original 1080x1920 resolution).
It is possible to combine with `-forceres` to launch at higher
resolutions. At some point though, when rendering at large resolutions
past 1440p, at some point scaling may break due to #276.
Disabled on 32-bit SDVX since dx9 `CreateDeviceEx` call is required;
`CreateDevice` won't work. For the same reason this isn't being made a
generic option for museca/rb/etc. In theory you can supply
`-sdvxlandscape` to games like IIDX and play landscape games in portrait
mode, although again, scaling my break due to #276.
Also, add new options (bottomleft/right) for subscreen overlay position
so that they don't overlap with the main screen in landscape mode.
## Compiling
🙂
## Testing
Tested a couple versions of VW and EG.
## Link to GitHub Issue, if one exists
n/a
## Description of change
Adds a new option to forcibly set the full screen resolution.
Same idea as -windowscale.
## Compiling
🔺
## Testing
Seems to be showing similar results as -windowscale:
* Works GREAT for IIDX/SDVX
* popn launches at correct resolution but only draws a small image (at
native res) - can be scaled with F11 menu
* nostalgia is broken in weird ways, image is drawn correctly but bottom
`credits` text draws at wrong offset, game's wintouch logic broken
(perhaps expectedly)
## Other notes
In theory this could enable "play sdvx in landscape mode" option but the
image scaling doesn't quite work with extreme values.
## Link to GitHub Issue, if one exists
Fixes#263
## Description of change
Add "scenes" to screen resize.
* UI changes - F11 menu now has a "scene switcher" for `Scene 1/2/3/4`.
Clean up other UI bits.
* Add hotkeys for `Screen Resize Scene 1`, `Screen Resize 2`, and so on.
* Detect hot key and trigger resizes.
* Add additional objects to screen_resize.json for saving and loading
the new scene settings.
* Existing screen resize data is backwards compatible (can be
loaded/saved to JSON), and is treated as `Scene 1`.
* Add API endpoint for `Resize`, allow toggling resize on/off, switching
active scene
* Add Python wrapper. Did not bother with the other wrappers (Dart, C++,
etc)...
## Compiling
🥇
## Testing
Still testing, but seems to work fine for TDJ.