Skip to content
This repository was archived by the owner on Oct 16, 2026. It is now read-only.

MacGameVideoFix 5.1.0

Choose a tag to compare

@MathiasKowoll MathiasKowoll released this 26 Sep 19:47
· 48 commits to main since this release

A new title, one engine-wide fix, and the controller work of the past three weeks. The controller work is the bulk of this release.

CONTROL Resonant

On D3DMetal 4.0b2 the lit rooms behind the city's windows render as flat violet, cyan and yellow, and the colours spread to neighbouring windows as the camera moves. One pixel shader draws them, interiorPS. D3DMetal runs its non-uniform Texture2D[] read as if the index were uniform. A rebuilt shader that serves each index on its own drew the rooms correctly, but only for about a minute. After that a second fault, outside the shaders, brought the colours back.

So the fix does what measured clean for a whole session: pipelines built with interiorPS are created writing nothing. The windows show as dark glass and the rest of the frame is unchanged. The DLL rides on PxFoundation_x64.dll (install-ctl-fix.sh), and the app lists it under a new mode, Shader fix.

Turn Metal 4 off for this title (D3DM_MTL4=0). With it on, faces and hair render as black boxes. Keep ray tracing and path tracing off in the game's settings. Wiki page.

Engine: the Visual C++ dialog on Unreal titles

Unreal 5.6's bootstrapper asks for the Visual C++ runtime on every launch (seen on Silent Hill: Townfall). It checks the file version of msvcp140_2.dll and vcruntime140_1.dll for at least 14.42.34438, and CrossOver 26.3's builtins report 14.42.34433. install-engine-vcruntime.sh rewrites only the version resource of the five builtins that carry one, to 14.51.36247.0. The originals are kept as .mgvf-stock, and make-engine-copy.sh applies it as step 4b.

Controllers

  • DualSense on Bluetooth rumbles. The engine can say a pad is on Bluetooth. The motors ride the game's own output packet, because the link carries about 65 reports a second and the game already uses most of them. Most motor updates move a motor by under 4 of 255, so those are dropped at the pad. That keeps the rumble without costing frames.
  • XInput rumble on a DualSense without it stopping being a DualSense (the pad's own descriptor). Titles that import Sony's own library are detected from their import table and left alone. Mortal Shell 2 starts with XInput rumble on.
  • The lights you choose are sent to the pad and sent again when macOS repaints them.
  • The pad is shared with macOS by default (no exclusive seize).
  • An idle DualSense on Bluetooth that wine holds is asked to turn off when nobody uses it (set-pad-option.sh, IdlePowerOffMinutes).
  • winebus is built with SDL, and the library it dlopens is reachable.
  • The controller set ships as an optional engine set, stripped and stamped. check-builds.sh now compares all ten of its binaries, not four.

Also

  • Beast of Reincarnation's fix finds its cvar by name and no longer depends on addresses.
  • RESONANCE's black screen was HDR10, not the display shape.
  • NINJA GAIDEN 4 on D3DMetal 4.0b2 is closed: nothing is ever presented there. 3.0 works.
  • Persona 4 Golden is Denuvo. The other explanations were each measured and ruled out.
  • An installer's --status reads the bottle's registry file when wine is not running.