Skip to content

Ship the Wine builtins Metro 2033 Redux and Ori and the Will of the Wisps need - #178

Merged
willfaust merged 2 commits into
willfaust:mainfrom
spitefulowl:wine-builtins-for-games
Oct 4, 2026
Merged

willfaust merged 2 commits into
willfaust:mainfrom
spitefulowl:wine-builtins-for-games

Conversation

@spitefulowl

Copy link
Copy Markdown
Contributor

Why

Five stock Wine builtins were missing from the arm64ec-windows DLL farm:

  • msvcr110, msvcp110, d3dx11_43. Metro 2033 Redux never ran a single instruction. The loader logged import_dll Library MSVCP110.dll ... not found and loader_init ... failed, status c0000135; its PhysX modules import msvcr110 too. The x86_64-vcruntime overlay carries only the VC++ 2015+ runtime (*140.dll).
  • cryptsp. Xal.Unity in Ori and the Will of the Wisps delay-loads cryptsp.dll!SystemFunction032, because Wine moved SystemFunction006..041 from advapi32 to cryptsp. The unresolved stub raised 0x80000100, nothing handled it, and the game ended on a black screen right after the first level load.
  • xaudio2_7. The prefix template registers CLSID_XAudio2 (2.7) at system32\xaudio2_7.dll, which did not exist.

Changes

  • Add the five DLLs. They are ARM64EC builds from the wine submodule at madeira-lgpl, stripped with --strip-debug like every shipped builtin. These are new files only; no tracked binary changes. The farm is a folder reference, so nothing else needs registering.
  • Add build/wine-pe/build-modules.sh [module...]. There was no script for any Wine PE module except ntdll.
    • It builds the modules' DLL targets in wine/build-arm64ec with the same first-run configure as build-ntdll.sh, strips them and installs them into app/Madeira/arm64ec-windows.
    • Without arguments it rebuilds these five; tracked modules are passed by name.
    • It refuses ntdll, prefers Homebrew's bison, and creates the stdole2.tlb link that widl needs for shell32.
    • docs/BUILDING.md and build-ntdll.sh's header describe it.

Testing

  • On the device: with the three runtime builtins, Metro 2033 Redux got through the loader (2026-09-27). With cryptsp, Ori and the Will of the Wisps ran on past the first level load (2026-10-02). The committed files are the ones that ran.
  • build-modules.sh on the development machine: argument handling (--help, ntdll refused, paths and unknown modules rejected), then the default list. All five DLLs come out at exactly the committed sizes and differ from them only in PE timestamps (and, in msvcr110, in import hints).

🤖 Generated with Claude Code

spitefulowl and others added 2 commits October 3, 2026 23:29
Five stock Wine builtins (ARM64EC, built from the wine submodule at
madeira-lgpl and stripped with --strip-debug like every shipped builtin)
were missing from the DLL farm:

- msvcr110.dll, msvcp110.dll, d3dx11_43.dll: Metro 2033 Redux never ran a
  single instruction. The loader logged "import_dll Library MSVCP110.dll
  ... not found" and "loader_init ... failed, status c0000135" (its PhysX
  modules import msvcr110 too); the x86_64-vcruntime overlay carries only
  the VC++ 2015+ runtime (*140.dll). With the three builtins the loader got
  through on the device (2026-09-27).
- cryptsp.dll: Xal.Unity in Ori and the Will of the Wisps delay-loads
  cryptsp.dll!SystemFunction032 (Wine moved SystemFunction006..041 from
  advapi32 to cryptsp). The unresolved stub raised 0x80000100, nothing
  handled it and the game process ended on a black screen right after the
  first level load. With the builtin the game ran on (device, 2026-10-02).
- xaudio2_7.dll: the prefix template registers CLSID_XAudio2 (2.7) at
  system32\xaudio2_7.dll, which did not exist; added with the Metro 2033
  Redux set.

These are the exact files that ran on the device. The farm is an Xcode
folder reference and the sysx64 farm links every file in it, so nothing
else needs registering.

Signed-off-by: spitefulowl <spitefulowll@gmail.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
There was no script for any Wine PE module except ntdll, so the builtins in
app/Madeira/arm64ec-windows could not be rebuilt from the submodule in a
documented way, and build-ntdll.sh's header said other modules need no
strip, while every shipped builtin is --strip-debug'ged.

build/wine-pe/build-modules.sh [module...] builds the modules' DLL targets
(dlls/<m>/arm64ec-windows/<m>.dll, which is also the right way for
winegstreamer) in wine/build-arm64ec with the same first-run configure as
build-ntdll.sh, strips them with --strip-debug and installs them into
app/Madeira/arm64ec-windows (DEST overrides). Without arguments it rebuilds
the five builtins added for games in the previous commit (cryptsp,
d3dx11_43, msvcp110, msvcr110, xaudio2_7); the tracked modules a change
touches (kernelbase, shell32, xinput1_x, ...) are passed by name. It refuses
ntdll (padded by its own script), prefers Homebrew's bison when installed
(tools/wrc needs bison 3, macOS ships 2.3) and creates the stdole2.tlb
aarch64-windows link that widl needs for shell32 when it is missing.
docs/BUILDING.md and build-ntdll.sh's header describe it.

Tested on the development machine against a wine/build-arm64ec tree:
argument handling (--help, ntdll refused, paths and unknown modules
rejected), then the default list: all five DLLs come out at exactly the
sizes of the committed ones and differ from them only in PE timestamps
(and, in msvcr110, in import hints).

Signed-off-by: spitefulowl <spitefulowll@gmail.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@willfaust
willfaust merged commit b4bf419 into willfaust:main Oct 4, 2026
willfaust added a commit that referenced this pull request Oct 4, 2026
wine/dlls has d3d10core, d3d11, dxgi, d3d12, d3d12core and xtajit64
directories too; building one would silently replace DXMT's,
madeira-d3d12's or FEX's DLL in arm64ec-windows with Wine's (#178).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
willfaust pushed a commit that referenced this pull request Oct 4, 2026
The wbem part of #163. Its build script is not taken: build/wine-pe/build-modules.sh (#178) builds Wine's builtins for the farm, a curated set at a time.

Signed-off-by: bahacan16 <190844990+bahacan16@users.noreply.github.com>
willfaust added a commit that referenced this pull request Oct 4, 2026
Wine and FEX runtime fixes, DXMT texture and memory fixes, audio, the swap
tier and library launch options (#178-#187 and willfaust/wine#22-#24,
willfaust/FEX#11-#12, willfaust/dxmt#16-#17).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
willfaust added a commit that referenced this pull request Oct 4, 2026
What landed from #163 (bahacan16):
- its system32\wbem link for 64-bit sessions (8b32056, authored by bahacan16);
- the 18 modules of its list it found missing on device in GTA V Enhanced (828be77), built with build/wine-pe/build-modules.sh from #178, which does #163's stdole2.tlb link too.

Not taken: build/wine-pe/build-extra-dlls.sh (#178's build-modules.sh is the farm's script; it strips with --strip-debug and does not pad, which only ntdll needs) and the other ~90 modules of its list, which are added per game as logs show them missing.

This merge only adds the pull request's commit as a parent (the ours strategy changes no files), so GitHub shows it as merged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
spitefulowl added a commit to spitefulowl/Madeira that referenced this pull request Oct 4, 2026
Integration branch of the spitefulowl fork, never for upstream: the
topic branches not merged upstream yet, on bbbf8d0 (upstream main
after it merged the pull requests willfaust#178-willfaust#184, willfaust#186 and willfaust#187):

- controllers-and-keyboard
- display-resolution
- misc-app-fixes-later
- build-and-bundle

.gitmodules points at the spitefulowl forks (branch staging) and the
gitlinks at their staging heads: wine 47fa28e18b8, FEX 7d3b59477a8;
dxmt and madeira-dock stay at upstream main's pins (dxmt has no
unmerged topic branch left). dxmt-correctness-memory-later is empty
now: dxmt#16 carries its pin, and ml1222 is parked in the dxmt fork
branch experiment/dxmt-shader-ir.

Signed-off-by: spitefulowl <spitefulowll@gmail.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants