Skip to content

Configuring touch screens as subscreen

sp2xdev edited this page May 27, 2024 · 20 revisions

Important notes before we begin

This page explains how to properly set up a touch screen for TDJ and VM.

Please note that a touch screen is not required to play, you can use the subscreen overlay (Page Up button by default) and use your mouse. You can also use the SpiceCompanion app.

For other touch-enabled games (RB, JB, BS...), these steps are not necessary, as touch screen is already the primary screen.

Can wireless work?

This page is about physical touchscreen monitors connected over HDMI/DisplayPort. These will most likely not work:

  • Wireless display projection
  • Apps for using tablets as a second monitor for PC (SpaceDesk, Duet, etc)
  • Local streaming services like Moonlight

... so please stop filing bugs or asking questions about them.

Instead, please consider using SpiceCompanion; links to companion apps are provided on the main website.

Windows Touch

It's helpful to understand that Windows doesn't know if your second display has touch capabilities. They are seen as two entirely different devices: a display, and a touch sensor. Normally, you would want the touch input to be tied to the screen it's on; however, for TDJ and VM, you want touch input to be on the primary monitor. It's just the way the game is programmed, unrelated to spicetools. Please stop filing bugs about it.

What resolution/refresh rate?

Tip

As noted below, the secondary touch screen must support 1280x720@60Hz (TDJ) or 1920x1080@60Hz (VM).

It does NOT need to support 120hz - this is a common misconception. You can definitely have the primary screen at 120Hz and the secondary screen at 60Hz. If you are somehow unable to do this, it usually means you messed up your V-Sync settings for your GPU.

Step by step instructions

  1. Connect your touch screen (usually, HDMI for display, USB for touch input, and power)
  2. Make sure it can display things, and touching on the screen results in input. Confirm by dragging around on the Windows desktop. You probably see the selection lasso on the touch screen, right underneath your fingers.
  3. In SpiceCfg, press Shortcuts, and then Tablet PC Settings.
    • Alternatively, press Windows key + R, type %windir%\explorer.exe shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}, and OK.
  4. Next to Configure your pen and touch displays, click on Setup (this is the first button available).
  5. Follow instructions on the screen. "Lie" so that Windows thinks the primary screen is a touch screen.
  6. To confirm that things were set up correctly, try touching again. The selection lasso should now appear on your primary screen.

You may also want to disable the little circles that Windows draws as touch indicators. In Windows 11, this is in Settings app > Accessibility > Mouse pointer and touch > Touch indicator. In Windows 10, this is in Settings app > Ease of Access > Cursor & pointer size > Change touch feedback.

Troubleshooting

Touch monitors are finicky things, and a lot of the times, devices do not properly implement the correct touch API needed, resulting in missed touches, duplicated touches, inability to use multi-touch, not recognizing taps, not recognizing swipes, etc. It's the wild wild west out there, but Spice has a few options to deal with them.

For IIDX and SDVX, if you have issues with touches not registering properly, use IIDX native touch handling (-sp2x-iidxnativetouch) or SDVX native touch handling (-sdvxnativetouch) options.

If your touch device has trouble with the default raw input API, you can try to use wintouch instead (native Windows API for touch, wider compatibility with more devices, but slower and not as responsive) - by enabling Disable Raw Input Touch (-wintouch) option.

Assuming you have a 120Hz monitor as the primary monitor and 60Hz monitor as the sub screen, if you forcibly enable V-Sync, the game may incorrectly launch at 60Hz on both screens. To fix this, make sure to use default V-Sync settings. For example, in NVIDIA Control Panel, you want to set V-Sync settings to Use the 3D application setting.

For SDVX, if your sub monitor display does not seem to be refreshing (instead refreshing every couple seconds), use SDVX Subscreen Force Redraw (-sp2x-sdvxsubredraw).

Compatible monitors

TDJ requires 1280x720@60Hz, and VM requires 1920x1080@60Hz. If your monitor doesn't support these resolutions, the game will fail to boot. There are many cheap Chinese monitors that advertise to be 60Hz but actually use weird refresh rates like 53Hz, 62Hz, 75Hz, and so on, so watch out for those.

The secondary display does NOT need to support 120Hz.

Displays using HDMI or DisplayPort are usually safe and preferred. DisplayPort protocol over USB-C should work as well. Devices using USB Video as the protocol may have issues - YMMV.

Most displays that support the standard HID API for touch input - recognized by Windows and available to applications via Windows touch API - should work.

You may need to tweak your GPU settings to stretch images (e.g., scaling options in NVIDIA Control Panel). You may also need to experiment with CRU - again, YMMV if it will help.