- Launcher (sacred_re.exe) starts sacred.exe with sacred_re.dll injected via Detours; the DLL verifies the Sacred Gold 2.28 build before hooking. - Hook framework: RE_HOOK for game addresses, RE_HOOK_API for Windows APIs, per-hook enable/disable in sacred_re.ini, sacred_re.log. - Game code: Log (0x66f1c0) hooked, CmdLineHasFlag (0x813140) rewritten. - Borderless mod: forces windowed mode, covers the monitor, scales the 1024x768 image aspect-correct, remaps mouse input, keeps running in the background with keyboard input hidden while unfocused. - CMake/Ninja/MSVC x86 build, VS Code setup, disasm tool, function map. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
27 lines
845 B
CMake
27 lines
845 B
CMake
# Microsoft Detours (MIT) — function hooking and DLL injection.
|
|
# Upstream ships no CMake build, so we compile its sources into a static lib.
|
|
include(FetchContent)
|
|
FetchContent_Declare(detours_src
|
|
GIT_REPOSITORY https://github.com/microsoft/Detours.git
|
|
GIT_TAG v4.0.1
|
|
GIT_SHALLOW TRUE
|
|
)
|
|
FetchContent_MakeAvailable(detours_src)
|
|
|
|
set(_d ${detours_src_SOURCE_DIR}/src)
|
|
add_library(detours STATIC
|
|
${_d}/detours.cpp
|
|
${_d}/modules.cpp
|
|
${_d}/disasm.cpp
|
|
${_d}/image.cpp
|
|
${_d}/creatwth.cpp
|
|
${_d}/disolx86.cpp
|
|
${_d}/disolx64.cpp
|
|
${_d}/disolia64.cpp
|
|
${_d}/disolarm.cpp
|
|
${_d}/disolarm64.cpp
|
|
)
|
|
target_include_directories(detours PUBLIC ${_d})
|
|
# C++20 implies /permissive-, which v4.0.1 does not compile under (goto over initialisations).
|
|
target_compile_options(detours PRIVATE /W3 /permissive)
|