yr-simd is a native C++ plugin/DLL for Yuri's Revenge that replaces selected ConvertClass blitters with SIMD-aware implementations.
The project targets x86 and dispatches runtime paths between Scalar, SSE2, AVX2, and AVX512.
- Runtime SIMD detection with safe fallback.
- Optional max SIMD cap from INI (
Vanilla,Scalar,SSE2,AVX2,AVX512). - Hook-based integration into game startup and blitter allocation flow.
- Build configurations for
Debug,DevBuild, andRelease.
src/- core code, hooks, utilities, and ConvertClass extension logic.src/Ext/ConvertClass/- SIMD blitter mapping and implementations.scripts/- local build/clean helper scripts..github/- CI workflows and composite build action.YRpp/- required submodule dependency.
- Windows
- Visual Studio 2022 (MSVC v143 toolset) or Build Tools with MSBuild
- Git
Clone with submodules:
git clone --recurse-submodules <repo-url>If already cloned:
git submodule update --init --recursiveFrom repository root, use the helper scripts:
scripts\build_debug.bat
scripts\build_devbuild.bat
scripts\build_release.batOr call the generic wrapper:
scripts\build.bat DevBuildOutputs are generated into configuration folders in repo root:
Debug\DevBuild\Release\
The main binary is yr-simd.dll (and yr-simd.pdb for non-hardened/dev builds).
Current runtime options loaded by the project:
MaxSimdLevelfrom section[Debug]inRA2MD.INIFixTransparencyBlittersfrom section[General]in rules INI (INI_Rules)
yr-simd automatically detects the best available CPU/OS SIMD level at runtime, then clamps it by MaxSimdLevel.
Selection order:
AVX512AVX2SSE2Scalar
Important notes:
AVX512in this project meansAVX512F + AVX512BW + AVX512VL(with required OS state support).MaxSimdLevel=Vanilladisables SIMD blitter replacement and returns vanilla game blitters.
Example:
[Debug]
MaxSimdLevel=AVX512 ; AVX512/AVX2/SSE2/Scalar/Vanilla
[General]
FixTransparencyBlitters=yesNightly Buildworkflow buildsDevBuildand uploads artifacts.Release Buildworkflow buildsRelease, archives outputs, and uploads to GitHub release.
See LICENSE.md.