Windows 32-bit Runtime Guide

April 21, 2026 · View on GitHub

This guide covers how to prepare and verify a 32-bit runtime on modern Windows hosts, including WOW64 notes specific to Quake Live’s native DLLs.

WOW64 considerations

  • Execution model: The shipped gameplay DLLs are x86 targets. On 64-bit Windows they execute under WOW64, so ensure the Program Files (x86) path is used for tooling, and avoid forcing 64-bit host binaries into the pipeline.
  • File system redirection: Installer paths and runtime probes should reference %SystemRoot%\SysWOW64 for 32-bit system DLLs. Avoid copying artifacts into %SystemRoot%\System32, which hosts 64-bit binaries on WOW64 machines.
  • Registry redirection: 32-bit registry keys land under HKLM\Software\WOW6432Node. If you depend on registry-based codec discovery or DirectX caps, read/write through the WOW6432 node to avoid mismatched capability checks.
  • Environment separation: Keep 32-bit build outputs isolated (for example, build\win32\Debug\) and confirm MSBuild is invoked with /p:Platform=Win32 so the correct compiler/linker frontends are used.

Dependency installation

  1. Visual C++ 2010 SP1 x86 runtime – Required for the MSVC v100 toolset outputs. Install the x86 redistributable (vcredist_x86.exe) on WOW64 hosts; the x64 package does not provide the 32-bit CRT.
  2. DirectX 9.0c runtime (June 2010) – The launcher expects legacy D3DX and XAudio2 DLLs that are not shipped on newer Windows versions. Run the DirectX web installer or DXSETUP.exe from the redist package to seed the 32-bit copies into %SystemRoot%\SysWOW64.
  3. Retail launcher payload – Keep the retail browser/media DLL set from assets\quakelive\ available when testing parity-oriented client builds: awesomium.dll, awesomium_process.exe, steam_api.dll, libEGL.dll, libGLESv2.dll, avcodec-53.dll, avformat-53.dll, avutil-51.dll, icudt.dll, and xinput9_1_0.dll.
  4. Codec SDKs are build-time only – The repo currently carries development copies of libvorbis/libogg and libpng/zlib under src\libs\, but the retail Steam install does not ship vorbisfile.dll, ogg.dll, libpng16.dll, or zlib1.dll. Do not treat those DLLs as part of the retail runtime payload.
  5. .NET Framework 4.x (Client profile) – Needed only for auxiliary tools (e.g., launcher helpers). Install the 32-bit capable runtime on WOW64 hosts to keep the helper utilities aligned with the native client.

Environment validation

Perform these checks after installing prerequisites:

  1. Confirm WOW64 status: Run wmic OS get OSArchitecture or set PROCESSOR_ARCHITECTURE and verify AMD64 with WOW64 enabled; PROCESSOR_ARCHITEW6432 should be set when spawning a 32-bit shell (%SystemRoot%\SysWOW64\cmd.exe).
  2. Verify redistributables: Use sigcheck -q -nobanner %SystemRoot%\SysWOW64\msvcr100.dll (from Sysinternals) to ensure the 32-bit CRT is present and signed. If missing, reinstall the x86 Visual C++ runtime.
  3. Check DirectX presence: Run dxdiag /whql:off and inspect the DirectX Files tab for d3dx9_43.dll under SysWOW64. Absence indicates the June 2010 runtime is not installed for 32-bit binaries.
  4. Retail payload parity: Run pwsh tools\ci\audit-retail-dependencies.ps1 -Strict to confirm the local Steam install still matches the committed assets\quakelive\ payload byte-for-byte, and use pwsh tools\ci\audit-retail-dependencies.ps1 -RuntimeRoot build\win32\Release\retail-runtime -SkipSteamInstall -Strict to verify the staged strict runtime root after tools\ci\validate-windows-native.ps1 -RuntimeProfile retail.
  5. MSBuild targeting: From a Visual Studio x86 Native Tools prompt, execute msbuild src\code\quakelive.sln /t:qagamex86 /p:Platform=Win32 /p:Configuration=Debug /p:PlatformToolset=v100 and verify outputs land in build\win32\Debug\modules\qagamex86. Any “64-bit tools are not available” warnings indicate the wrong developer prompt was used.

Troubleshooting launch failures

SymptomLikely causeResolution
This application was unable to start correctly (0xc000007b)Mixing 64-bit CRT/DirectX DLLs with 32-bit binariesReinstall the x86 Visual C++ 2010 runtime and DirectX 9.0c; confirm DLL search order points at SysWOW64 or co-located 32-bit copies.
Missing d3dx9_43.dll or xinput1_3.dllDirectX 9.0c redist not installed for WOW64Run the June 2010 DirectX installer; confirm files appear under SysWOW64 and rerun the launcher.
MSVCR100.dll was not foundx86 CRT not presentInstall vcredist_x86.exe and rerun; avoid installing only the x64 redistributable.
Launcher closes immediately with no logs32-bit helper fails to load the retail browser/media payloadCapture ProcMon traces filtered to the launcher process, verify awesomium.dll and the other retail payload DLLs are present, and compare the install with pwsh tools\ci\audit-retail-dependencies.ps1 -Strict.
Failed to initialize rendererRunning from 64-bit tools or GPU driver blocking DX9Rebuild using /p:Platform=Win32, launch from SysWOW64\cmd.exe, and update GPU drivers; if Secure Boot enforcement blocks unsigned DX9 components, install the signed June 2010 package.

Capture Event Viewer Application log entries after each failure and attach ProcMon traces when escalating issues so the build team can reproduce the WOW64 environment.