Updated PC optimization (markdown)

sp2xdev
2025-06-21 19:17:02 -07:00
parent 18a2e3da46
commit 8ab5e09bc0
+20 -20
@@ -1,6 +1,6 @@
To reduce desyncs, frame drops, and stuttering:
## General advice
# General advice
* Having a powerful PC with expensive CPU and GPU will not automatically let you run these games better. In fact, it can actually run worse - read below on how to set things up to avoid issues.
* On the contrary; it is no longer recommended that you buy used office computers (Optiplex) for this purpose. Newer games run on low-spec "gaming" PCs, so you'll want a standard form factor PC with upgradable parts.
* These are not games you downloaded from Steam that runs better with tweaks to graphics settings, these are arcade games designed to run on specific PC configuration with extremely specific settings. Throw out conventional wisdom on "how to make PC games run better"; instead, the goal is to mimic an arcade PCB as closely as possible.
@@ -11,7 +11,7 @@ To reduce desyncs, frame drops, and stuttering:
>
> Similarly, if your sound card / DAC can't properly support the required frequency, bitrate, and output format (wasapi exclusive or ASIO), no matter what you do, you're going to have desync issues.
## Monitor checks and framerate
# Monitor checks and framerate
* Press F12 to see the FPS counter, confirm that it's what you expect. Also check your monitor (if not, check `log.txt`) to see that the game launched at the correct refresh rate. You want those numbers to match (60FPS and 60Hz, 120FPS and 120Hz).
* Avoid using patches that run at refresh rates not originally intended by the game engine, as it may result in graphical glitches or overlapping sound effects.
@@ -20,7 +20,7 @@ To reduce desyncs, frame drops, and stuttering:
* It's OK if monitor checks aren't exactly 60.000Hz or 120.000Hz - because they're not like that at the arcade either. For example, IIDX LM cabs stabilize around 119.98xx.
* Your monitor may boot into 59.94Hz or 119.2Hz (for example). This is OK for most games, as monitor check will eventually stabilize to match your refresh rate.
### Multiple monitors
## Multiple monitors
* For IIDX TDJ and SDVX UFC modes, if the main screen locks to the wrong framerate (usually something like 75FPS or 90FPS) instead of 120, it may be caused by the GPU driver being unable to render the primary screen at 120Hz and subscreen 60Hz at the same time.
* For NVIDIA GPU, ensure that V-Sync options are set to `Use the 3D application setting`. This usually resolves the issue.
@@ -29,7 +29,7 @@ To reduce desyncs, frame drops, and stuttering:
* As a workaround, try launching with `Only use one monitor (-graphics-force-single-adapter)` and see if it fixes your FPS issues. Alternatively, disable your monitors except the primary.
* Do be careful when using `Only use one monitor (-graphics-force-single-adapter)` option to display the game full screen on the primary monitor and showing the desktop on the other monitor. For IIDX TDJ, this may result in unstable monitor check, and rare microstutters / desyncs in the game. This may be affecting SDVX VM as well, but difficult to tell. This is most likely due to how DirectX renders full screen games with V-Sync enabled, in addition to drawing the desktop on a different monitor.
## CPU
# CPU
* Set Windows power profile to `High Performance` to keep the processor frequencies high.
* Arcade cabinets run with similar configurations where CPUs are held at maximum frequency; some of these games depend on this aspect to keep a steady framerate. IIDX, SDVX, and Nostalgia are known to be heavily affected by this.
* Make sure you turn it back to normal profile when done playing.
@@ -38,14 +38,14 @@ To reduce desyncs, frame drops, and stuttering:
* You can also use a custom affinity mask with Process Affinity (`-processaffinity`). You can use [this tool](https://bitsum.com/tools/cpu-affinity-calculator/) to calculate the mask if you are unsure what to do.
* Process Priority (`-processpriority`) can help but it's recommended that you just leave it to the default, which sets it to high priority.
### Turning off CPU idle states (micro-optimizations)
## Turning off CPU idle states (micro-optimizations)
These won't help with stuttering, but may help with keeping a steady framerate, keeping the frame time (milliseconds between frames) in 0-1ms error range. This may help if you have inconsistent timing in IIDX, for example.
* You can go into the BIOS and disable any processor power management features. This would range from: Intel SpeedStep, Turbo Boost, various C-state and P-state scaling, OS-managed processor power management, any processor-idle power save features, etc.
* Disabling HyperThreading/SMT. Not enough data has been gathered but some claim that this may help on some older processors. The typical recommendation is to disable via the BIOS.
## GPU
# GPU
* For NVIDIA GPU, use `Add NVIDIA application profile` (`-nvprofile`) option.
* This will attempt to automatically disable G-SYNC and set power mode to `maximum performance`.
@@ -60,7 +60,7 @@ These won't help with stuttering, but may help with keeping a steady framerate,
* DirectX 9on12 options may result in better or worse performance. This is entirely up to your GPU and the game you are trying to run. Generally, try leaving it off first (use DX9), and only if you have issues, switch to DX9on12.
* Forcing triple buffering (using `-vsyncbuffer`) may reduce stuttering at the cost of latency ([Issue 259](https://github.com/spice2x/spice2x.github.io/issues/259))
## Audio
# Audio
* Prefer to use exclusive WASAPI or ASIO, and avoid shared mode WASAPI whenever possible. See [this page](https://github.com/spice2x/spice2x.github.io/wiki/Audio-modes-demystified) for more details.
* For games with shared audio (DirectSound or WASAPI Shared Mode) - try `Low Latency Shared Audio` option to reduce latency. See [here](https://github.com/spice2x/spice2x.github.io/wiki/Audio-modes-demystified#audio-latency-reduction-for-dsound-and-shared-mode-wasapi) for more details.
* Don't run audio over HDMI or DisplayPort as they may add significant latency and/or be the source of desyncs.
@@ -69,7 +69,7 @@ These won't help with stuttering, but may help with keeping a steady framerate,
* You may lose some features with this, however; e.g., Stereo Mix, multiple audio channel support, audio effects and filters, etc.
* Try to disable `audio effects` in Windows audio settings, which may help with latency.
## Memory and disk
# Memory (RAM) and disk (hard drives)
* Make sure you have enough RAM. 4gb isn't going to cut it these days, even on a minimal OS setup.
* [Ensure XMP is enabled](https://www.digitaltrends.com/computing/how-to-enable-xmp-1/), if your hardware is capable. This helps with frame drops in animation-heavy scenes (Live2D in SDVX for example).
* Consider disabling paging in Windows. Arcade machines run with paging disabled, and the games will assume this is the case (instead of pinning the memory to RAM, they assume that memory is never paged out). While this is not recommended for general use PCs, it is recommended for playing these games to reduce stutters. Just make sure you have enough RAM.
@@ -77,17 +77,17 @@ These won't help with stuttering, but may help with keeping a steady framerate,
* If `log.txt` tends to be spammed with messages, it can affect performance; set Log Level (`-loglevel`) to Fatal if this becomes an issue.
* Remember to set it back to the default if you want to share `log.txt` with others for troubleshooting.
## Windows
# Windows
* Disable [the hypervisor](https://learn.microsoft.com/en-us/troubleshoot/windows-client/application-management/virtualization-apps-not-work-with-hyper-v) and [VBS (Virtualization-Based Security)](https://www.tomshardware.com/how-to/disable-vbs-windows-11).
* If you're looking for a good clean OS image - the same used on arcade cabinets - `Windows 10 IoT Enterprise LTSC` is recommended. Just be mindful, it's not Windows 10 IoT, it's not Windows 10 Enterprise, it's Windows 10 IoT Enterprise LTSC.
* Contrary to popular belief, `IoT Enterprise` is a general-purpose OS with a full desktop environment, and is not too different from full version of Windows. (the non-Enterprise `IoT` SKU is different, however, as it lacks the desktop UI by default).
* Disable full screen optimizations - right click on spice.exe / spice64.exe, Properties, Compatibility tab, Change settings for all users, and check `Disable fullscreen optimizations`. You have to do this for every instance of spice executable (every place where your game is installed), not just once.
### Background services
## Background services
If you are failing to keep a steady framerate, check for background services, especially ones that inhibit bursts of CPU usage.
#### Common offenders
### Common offenders
* Various Windows background services
* When stutters occur make a note of the time and check Windows Event Viewer (System and Application channels) for events at that time.
@@ -99,13 +99,13 @@ If you are failing to keep a steady framerate, check for background services, es
* In-game overlay: Discord, NVIDIA, Xbox GameDVR / Game Bar, etc
* RivaTuner Statistics Server (RTSS), MSI Afterburner - occasionally known to cause mystery crashes as well
#### Less common offenders
### Less common offenders
* OBS - usually doesn't affect game performance, but may cause spicecfg to launch very slowly
* Other games that install kernel-level anti-cheat
* Razer Synapse ([though Razer claims it's fixed in recent versions](https://insider.razer.com/razer-synapse-3-29/synapse-3-high-cpu-wmi-provider-service-43747)). Can also cause issues with audio.
* Oculus app / Meta Quest Link (including the background services that cannot be disabled except to uninstall)
## On gaming laptops...
# On gaming laptops...
> [!CAUTION]
> For best experience, it is generally discouraged that you run these games on laptops due to endless oddities people have encountered in the past.
@@ -124,9 +124,9 @@ If you have no choice but to run on a laptop:
* Display built into laptops tend to be more restrictive about what resolution and refresh rate combinations are supported, so connecting to an external monitor alleviates that.
* Just make sure the right GPU is being used. Some laptops have weird restrictions on which GPU gets used for each HDMI/DisplayPort.
## Game-specific
# Game-specific
### IIDX
## IIDX
* If you have an underpowered PC & experience stutters while playing, you could try disabling the video.
* You can accomplish this by going to the blue menu in song select and changing Camera Display Position to show the camera instead of the BGAs. If you don't have a camera, it'll just show a black box, saving you from a lot of CPU cycles.
* You may also be able to find patches (hex edits) that disable video entirely.
@@ -135,12 +135,12 @@ If you have no choice but to run on a laptop:
* If you get bad monitor check or unsteady framerate after enabling Cam Hook feature, turn down the camera resolution and framerate. See [the wiki page](https://github.com/spice2x/spice2x.github.io/wiki/IIDX-Camera-Hook) for more details.
* If running TDJ mode on multiple monitors result in low frame rate, see the [section on Multiple Monitors](https://github.com/spice2x/spice2x.github.io/wiki/PC-optimization#multiple-monitors).
### Gitadora
## Gitadora
* Gitadora tends to stutter and not scroll the notes smoothly when Full Screen Optimizations is enabled. Right click on spice64.exe, Properties, Compatibility tab, Change settings for all users, and check `Disable fullscreen optimizations`.
* Game tends to lock to 58FPS at launch and swings inconsistently between 58-60 FPS on Windows 10/11, causing stutters.
* To fix, look for a “60 FPS Patch” which fixes V-Sync by disabling the frame limiter.
### SDVX
## SDVX
* Frame drops from Live2D:
* Live2D workload is almost entirely CPU bound; make sure you have a good enough CPU.
* It's often solved by turning on XMP in BIOS, if it isn't on already.
@@ -150,12 +150,12 @@ If you have no choice but to run on a laptop:
* If the game locks at the wrong FPS even though you have done everything correct - for example, games launching at 120Hz but the framerate (on the attract screen) is something like 45-50 FPS no matter what you do - try restarting Windows. Sometimes this fixes it. Seems to affect Windows 11 users a lot.
* If running UFC (Valk) mode on multiple monitors result in low frame rate, see the [section on Multiple Monitors](https://github.com/spice2x/spice2x.github.io/wiki/PC-optimization#multiple-monitors)
### Nostalgia
## Nostalgia
* Strongly recommended that you try `Low Latency Shared Audio` option for lower audio latency.
### pop'n music
## pop'n music
* Strongly recommended that you try `Low Latency Shared Audio` option for lower audio latency.
* Try [popnhax](https://github.com/CrazyRedMachine/popnhax), which has various options for adjusting audio/visual offset. Ensure that your server allows this mod.
## Further reading / Reference
# Further reading / Reference
This page is loosely based on https://iidx.org/infinitas_pc.