An educational overlay for Counter-Strike 2 built with ImGui and DirectX 11. Demonstrates hardware-accelerated memory analysis using PCILeech/MemProcFS with FPGA devices. Read-only — performs no writes.
Maintained by affectioned — GrimApostles no longer maintains this project and has deleted the original repository. This is now an independent continuation, not a fork.
Questions or feedback? Discord: @grimapostles (original author)
Disclaimer
Provided strictly for educational and research purposes. Demonstrates hardware memory analysis via FPGA, DirectX 11 rendering with ImGui, and runtime data resolution techniques. Usage in online games may violate Terms of Service. You are solely responsible for how you use this software.
Open CS2_DMA_RADAR.sln in Visual Studio 2022 (v143), set Release x64, build. Output goes to bin/Release/.
Note: Debug builds use the release CRT (
/MD) to match vendor libraries. Do not add_DEBUGback to the Debug preprocessor defines.
All runtime dependencies are automatically downloaded on first launch — no manual setup required.
- MemProcFS DLLs (
vmm.dll,leechcore.dll, FPGA drivers) — bootstrapped from the latest MemProcFS release. The DLLs are delay-loaded so the exe starts cleanly without them present. - Textures (
textures/maps/,textures/icons/) — bootstrapped from the repository archive. No need to run the Python extractor manually. - Visual C++ Redistributable 2015-2022 (x64) — the only manual prerequisite. Download here.
Built-in performance profiling via Tracy. Launch with the --tracy flag:
CS2_DMA_RADAR.exe --tracy # 30-second capture (default)
CS2_DMA_RADAR.exe --tracy 60 # 60-second capture
This will:
- Auto-download
tracy-capture.exeandtracy-csvexport.exefrom the latest Tracy release (one-time) - Start a headless capture in the background
- On exit, export the trace to CSV and write
profile_report.txt— an LLM-friendly report you can paste into a conversation for performance analysis
Tracy is compiled with TRACY_ON_DEMAND — zero overhead unless a profiler is connected. 16 zones are instrumented across the DMA loop, game context, entity parsing, and render pipeline.
Tracy is enabled in Release builds only. Debug builds compile the macros as no-ops.
The DMA layer follows CyNickal's measured timing model:
-norefreshonVMMDLL_Initialize— skips automatic cache refreshVMMDLL_FLAG_NOCACHEon live reads — ensures fresh data from hardware- Scatter reads via
VMMDLL_ScatterAPI — batched DMA operations std::this_thread::yield()in the hot loop — no artificial sleep- Snapshot architecture — DMA thread writes snapshots, render thread reads them independently