[Bug 60358] New: Mouse-look input stutters in 32-bit DirectInput game under WoW64; smooth under genuine win32 prefix (pre-9.0 Wine)
http://bugs.winehq.org/show_bug.cgi?id=60358 Bug ID: 60358 Summary: Mouse-look input stutters in 32-bit DirectInput game under WoW64; smooth under genuine win32 prefix (pre-9.0 Wine) Product: Wine Version: 11.17 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: dinput Assignee: wine-bugs@list.winehq.org Reporter: igor-t@live.com Target Milestone: --- Distribution: --- Mouse-look input becomes stuttery/laggy in 32-bit DirectInput game "Archangel" (2002) when run under WoW64 (unified 32/64-bit Wine); smooth under a genuine pre-9.0 32-bit-only Wine build on identical hardware/config Wine version tested (broken): 11.17 (system package, unified WoW64 architecture) Wine version tested (working): Wine-GE-Custom 8-26 (based on Wine 8.0-staging, pre-WoW64-unification), run in a genuine WINEARCH=win32 prefix What's happening: Archangel (2002, Metropolis Software) is a 32-bit-only game (PE32, i386) that uses DirectInput (dinput.dll/DirectInputCreateA) for mouse-look, with ClipCursor/SetCursorPos for cursor confinement. Under a modern 64-bit Wine prefix (WoW64, 32-bit game translated through the unified 64-bit process), camera-turn mouse movement is inconsistent — described by the reporter as "rubber-band/overshoot" and chopping, specifically on left/right (yaw) camera rotation. Character movement and other input (keyboard) are unaffected; only mouse-look is bad. Steps to reproduce: 1. Create a standard 64-bit Wine prefix (default WINEARCH, i.e. WoW64) with a recent Wine (9.0+, tested on 11.17). 2. Install/run Archangel (2002) — game.exe is 32-bit only. 3. In-game, enter any menu or gameplay screen using mouse-look camera control and move the mouse left/right at a normal, steady speed. Actual results: Camera rotation is jerky/stutters, with a rubber-band/overshoot feel — the view seems to lag then catch up rather than tracking the mouse 1:1. Expected results: Smooth 1:1 camera tracking, matching behavior seen under a genuine 32-bit-only Wine build (see below). What we ruled out (all tested, none fixed it): - In-game mouse sensitivity slider (tested 20–299 range) and per-axis Mouse_sensitivity_X/Mouse_sensitivity_Y values - In-game mouse smoothing option (made it worse — added lag, not the reported symptom) - HKCU\Software\Wine\DirectInput\MouseWarpOverride in all three modes: enable, disable, force - Disabling DXVK/VKD3D/DXVK-NVAPI entirely (game only uses native OpenGL, confirmed no D3D/Vulkan involvement) - GPU load/vsync (vblank_mode), render quality, and resolution changes — no effect on the stutter pattern - Confirmed not a general system/hardware input issue: mouse is smooth in other Wine games and the desktop on th What fixed it: Recreating the Wine prefix as genuinely 32-bit (WINEARCH=win32) using Wine-GE-Custom 8-26 (Wine 8.0-staging base, i.e. before Wine's 9.0 WoW64 unification) immediately resolved the issue — mouse-look became fully smooth with no other changes. This strongly points to the WoW64 32-to-64-bit syscall translation path (used by all current Wine ≥9.0 builds for 32-bit processes) introducing latency/quantization specifically in this game's DirectInput mouse-polling loop. System info: - OS: CachyOS (Arch-based), Wayland session (game runs via Xwayland) - GPU: Intel HD Graphics 4600 (Haswell) + NVIDIA GeForce GTX 950M (Optimus laptop) - Renderer used by game: native OpenGL (OPENGL32.dll/GLU32.dll), no D3D/DXVK/VKD3D involved AppDB entry: [paste the appdb.winehq.org link for Archangel here] -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60358 --- Comment #1 from Igor Tashevski <igor-t@live.com> --- https://paste.gloriouseggroll.tv/?df121e2c17abe699#6Tau7twBtKbj8RyGYixrwVkkB... -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60358 Ken Sharp <imwellcushtymelike@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|dinput |-unknown Summary|Mouse-look input stutters |Mouse-look input stutters |in 32-bit DirectInput game |in Archangel under WoW64 |under WoW64; smooth under | |genuine win32 prefix | |(pre-9.0 Wine) | --- Comment #2 from Ken Sharp <imwellcushtymelike@gmail.com> --- A proper bisect is more useful than using AI. https://gitlab.winehq.org/wine/wine/-/wikis/Regression-Testing Can this game, or a demo, be downloaded? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60358 --- Comment #3 from Igor Tashevski <igor-t@live.com> --- Sorry, I've tried just to fastpace find issues in various games in latest wine, I'm doing this only for curiosity, so claude was overused for problems with old games... I will follow git bisect next time... About the question if the game can be download somewhere, yes, myabandonware or collectionchamber(comes with exclusive installer), if not violates wine policy. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60358 --- Comment #4 from Igor Tashevski <igor-t@live.com> --- Tested with wine-11.18-107-gdf15af36525 build. Prefix: /home/igort/prefixes/regtest-archangel The issues are fixed. I'll will try to test once again with stable wine 11.8 or any newer version, before closing the ticket. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60358 --- Comment #5 from Igor Tashevski <igor-t@live.com> --- I've various methods running and testing the game and make it work on both wayland and x11. Found a bug in the game itself. Archangel (2002) copies the OpenGL extension string into a fixed-size buffer. Current drivers return a much longer string than drivers did in 2002, and NVIDIA's is especially long, so the buffer overflows: - Wayland (XWayland): the overflow corrupts game data. Every screen shows coloured speckles, pairs of solid 4×8-pixel blocks. - Plasma X11: the game crashes during loading with Unhandled page fault on write access to 02C89xxx at address 0045ABD2. The same thing happens with Wine 11.18, wine-git 11.18-107 and wine-ge 8.26, with or without Lutris. Workaround: limit the extension string to a 2002-era list with a driver environment variable: - NVIDIA: __GL_ExtensionStringVersion=17700 - Mesa: MESA_EXTENSION_MAX_YEAR=2002 Example: __GL_ExtensionStringVersion=17700 wine game.exe With this setting the game runs cleanly on the GTX 950M (NVIDIA 580.178.04, PRIME offload) under both Plasma Wayland and X11, using system Wine 11.18 in a clean prefix. With the limit on, the game's log reports OpenGL 4.3.0 NVIDIA instead of 4.6.0. The Intel HD 4600 (Mesa 26.2.3) also works. Other things tried that made no difference: UseEGL=N (the GLX path), turning off in-game texture compression, turning off the NVIDIA shader disk cache, and Wine's Wayland driver. Separate X11 note: on X11 the game also crashed on Intel unless it ran in a Wine virtual desktop. This is probably the same overflow, since Intel's string is shorter and only just overflows. MESA_EXTENSION_MAX_YEAR=2002 should cover that case, but I haven't retested it. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla