Code
Search code
Follow-up to 86fc801a. That fix waited on Idle *or* InProgress state for
the full 8s, but Idle can also mean callhome was never going to fire
for this call path at all (not a race) - turned an instant fallback
into a guaranteed 8s stall, which alone was enough to trip some games'
own Steam-init timeout (confirmed live: broke Mafia: The Old Country
immediately after deploying the first fix, which worked fine before
it). Idle now only gets a brief 300ms window to see if it becomes
InProgress (closes the actual race, a threading gap measured in
microseconds) - only escalates to the full wait once confirmed started.
Separately, correlated mock_tickets.json against download_log.jsonl:
only ~13% of mock tickets tied to a real, confirmed download ever got
redeemed, consistently low across nearly every game using this system
(not just the ones with a visible error) - most games apparently
tolerate the fabricated fallback silently. callhome_worker() was a
single HTTP attempt with a 10s timeout - longer than the ~8.3s the
callers actually waited for it, and with zero retry on any transient
failure. Over the public internet to one VPS, with users spread across
many countries, that's expected to fail at a real rate on its own.
Shortened to 3s per attempt with up to 3 attempts, and bumped the
caller wait budget to 10s to comfortably cover the new retry window.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
██████╗ ███████╗███╗ ██╗██╗ ██╗██╗ ██╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗ ████████╗███████╗██╗ ██╗
██╔══██╗██╔════╝████╗ ██║██║ ██║██║ ██║██╔═══██╗ ██║ ██║██╔═══██╗██╔══██╗╚══██╔══╝██╔════╝╚██╗██╔╝
██║ ██║█████╗ ██╔██╗ ██║██║ ██║██║ ██║██║ ██║ ██║ ██║██║ ██║██████╔╝ ██║ █████╗ ╚███╔╝
██║ ██║██╔══╝ ██║╚██╗██║██║ ██║╚██╗ ██╔╝██║ ██║ ╚██╗ ██╔╝██║ ██║██╔══██╗ ██║ ██╔══╝ ██╔██╗
██████╔╝███████╗██║ ╚████║╚██████╔╝ ╚████╔╝ ╚██████╔╝ ╚████╔╝ ╚██████╔╝██║ ██║ ██║ ███████╗██╔╝ ██╗
╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═════╝ ╚═══╝ ╚═════╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
🔒 Denuvo Vortex — Private Fork of gbe_fork
🛡 Official Denuvo Vortex Internal Repository
This repository is the Denuvo Vortex Private Fork of gbe_fork.
It is maintained exclusively for Denuvo Vortex infrastructure, internal development, controlled deployment, and authorized research purposes.
This is not a public fork and is not intended for open redistribution.
❗ Redistribution & Usage Policy
🚫 Unauthorized redistribution is strictly prohibited.
This includes, but is not limited to:
- Re-uploading compiled binaries
- Redistributing modified source
- Mirroring repository contents
- Repackaging Denuvo Vortex builds
- Sharing internal patches or tooling
If you are not explicitly authorized by Denuvo Vortex to distribute or modify this fork, you may not do so.
All distribution rights are reserved by Denuvo Vortex.
⚠ Project Clarification
This repository:
- Is NOT a public continuation of gbe_fork
- Is NOT a community takeover
- Is NOT a replacement for upstream
- Is NOT affiliated with upstream maintainers
This is a controlled, privately maintained fork with internal modifications.
If you are seeking the original project, refer to its upstream source.
⚙ Compatibility Notice
This fork may:
- Contain structural modifications
- Include internal integration changes
- Differ in behavior from upstream
- Be incompatible with upstream tooling
Public bug reports and pull requests are not accepted.
Development access is restricted to authorized contributors.
🧩 Credits
We acknowledge:
- The original gbe_fork foundation
- Upstream contributors
- Third-party libraries and dependencies
Full attributions remain available in:
CHANGELOG.mdCREDITS.md
Original authors retain credit for their respective work.
🛠 Authorized Usage Instructions
If you are an authorized developer:
- Always generate interface files using approved internal tooling
- Follow internal deployment documentation
- Do not redistribute packaged builds
- Do not expose internal configuration structures
Internal tooling and deployment instructions may be provided separately.
🖥 Build Instructions (Authorized Developers Only)
Clone Recursively
git clone --recurse-submodules -j8 <PRIVATE_REPO_URL>
Keep submodules updated:
git submodule update --init --recursive --remote
On Windows:
Open CMD in the repo folder, then run the following
-
To build using
Visual Studioset "CMAKE_GENERATOR=Visual Studio 18 2026" third-party\common\win\premake\premake5.exe --file=premake5-deps.lua --64-build --32-build --all-ext --all-build --verbose --os=windows vs2026 -
To build using
MSYS2this is currently experimental and will not work due to ABI differencessteps
(Optional) In both cases below, you can use
Clangcompiler instead ofGCCby running these 2 commands in the same terminal instanceexport CC="clang" export CXX="clang++"- To build 64-bit binaries (
UCRT64orMINGW64)
export CMAKE_GENERATOR="MSYS Makefiles" ./third-party/common/win/premake/premake5.exe --file=premake5-deps.lua --64-build --all-ext --all-build --verbose --os=windows gmake2- To build 32-bit binaries (
MINGW32)
export CMAKE_GENERATOR="MSYS Makefiles" ./third-party/common/win/premake/premake5.exe --file=premake5-deps.lua --32-build --all-ext --all-build --verbose --os=windows gmake2 - To build 64-bit binaries (
Windows Requirements
- Windows 10 / 11
- Visual Studio 2022 (Desktop development with C++)
- Latest Windows SDK
- Python 3.10+
Build Dependencies
set "CMAKE_GENERATOR=Visual Studio 17 2022"
third-party\common\win\premake\premake5.exe --file=premake5-deps.lua --64-build --32-build --all-ext --all-build --verbose --os=windows vs2022
Build Emulator
third-party\common\win\premake\premake5.exe --file=premake5.lua --genproto --os=windows vs2022
Building the emu
On Windows:
Open CMD in the repo folder, then run the following
-
For
Visual Studio 2022third-party\common\win\premake\premake5.exe --file=premake5.lua --genproto --os=windows vs2026You can then go to the folder
build\project\vs2026\winand open the produced.slnfile in Visual Studio.
Or, if you prefer to do it from command line, open theDeveloper Command Prompt for VS 2026inside the above folder, then:msbuild /nologo /v:n /p:Configuration=release,Platform=Win32 gbe.slnx msbuild /nologo /v:n /p:Configuration=release,Platform=x64 gbe.slnx -
For
MSYS2this is currently experimental and will not work due to ABI differencessteps
./third-party/common/win/premake/premake5.exe --file=premake5.lua --genproto --os=windows gmake2
Build Dependencies
export CMAKE_GENERATOR="Unix Makefiles"
./third-party/common/linux/premake/premake5 --file=premake5-deps.lua --64-build --32-build --all-ext --all-build --verbose --os=linux gmake2
Build Emulator
./third-party/common/linux/premake/premake5 --file=premake5.lua --genproto --os=linux gmake2
cd ./build/project/gmake2/linux
make config=release_x64 -j 8 all
🧱 CI Usage
GitHub CI workflows are restricted to authorized forks only.
If using CI internally:
- Enable Actions permissions
- Trigger workflows on approved branches
- Clear dependency caches when updating third-party libraries
Build artifacts are not to be redistributed.
📦 Packaging (Internal Only)
Windows
package_win.bat <build_folder>
build_folder is any folder inside build\win, for example: vs2026\release
The above example will create a .7z archive inside build\package\win\
Linux
package_linux.sh <build_folder>
Generated archives are for authorized distribution only.
🔐 Final Notice
This repository represents the Denuvo Vortex Private Fork of gbe_fork.
It exists for controlled operational use within Denuvo Vortex infrastructure.
Unauthorized redistribution, mirroring, repackaging, or external modification is not permitted.
All rights reserved by Denuvo Vortex.