FunkyFr3sh / cnc-ddraw

GDI, OpenGL and Direct3D 9 re-implementation of the DirectDraw API for classic 2D games for better compatibility with Windows 2000, XP, Vista, 7, 8, 10, 11, Wine (Linux/macOS/Android) and Virtual Machines
https://discord.gg/afWXJNDDF5
MIT License
2.12k stars 143 forks source link

System cursor support in Submarine Titans (and possibly other games) #330

Closed eierfrucht closed 5 days ago

eierfrucht commented 5 days ago

Submarine Titans (with fanpatch) replaces the mouse pointer with what appears to be an animated flat that refreshes at a fixed rate of about 24 FPS so moving around feels SUPER jerky.

The issue affects all renderers: software, OpenGL, third-party wrappers (namely cnc-ddraw). While the rest of the game world runs at a much higher FPS, and the display refresh rate is set at 144 Hz, the mouse pointer still sticks with 24. Even in cnc-ddraw’s windowed mode, once the Windows pointer smoothly enters the window, it is instantly swapped for this little spasmatic turd for as long as the pointer stays inside the window.

An almost identical issue affects Heroes of Might and Magic III and is mitigated by activating the ‘use system cursors’ hack, quoting from here:

https://sites.google.com/site/heroes3hd/eng/graphics

HoMM3 HD uses standard Windows tools to render cursors (optionally) that increases graphics perfomance and makes moving the cursor smoother.

Can this hack be adopted into cnc-ddraw to replace the stupid fancy pointers with the plain Windows cursor in games like Submarine Titans?

(Besides HoMM3 and ST there was at least one other game that suffered exactly from this but I can't remember the title)

FunkyFr3sh commented 5 days ago

I've done such updates for Warcraft 2 and Dune2000, but this isn't possible via cnc-ddraw, the game needs to be patched for it.

You may have to ask the devs of the fanpatch for it.

Here's a example of a hardware cursor patch I made https://github.com/FunkyFr3sh/Warcraft-II-Plugins/tree/main/HardwareCursor