Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs; document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/. Co-authored-by: Cursor <cursoragent@cursor.com>
85 lines
3.6 KiB
Bash
Executable File
85 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# JA3 + D3DMetal: убрать DXVK/GPTK PE из system32, оставить builtin Gcenx + d3d12/dxgi.so → libd3dshared.
|
||
set -euo pipefail
|
||
GOG_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
# shellcheck source=config.sh
|
||
source "${GOG_DIR}/config.sh"
|
||
|
||
SYS32="${BOTTLE_DIR}/drive_c/windows/system32"
|
||
WINE_PE="${WHISKY_LIBS}/Libraries/Wine/lib/wine/x86_64-windows"
|
||
WINE_UNIX="${WHISKY_LIBS}/Libraries/Wine/lib/wine/x86_64-unix"
|
||
BAK="${SYS32}/.ja3-d3dmetal-bak"
|
||
LS="${BOTTLE_DIR}/drive_c/users/${WINE_USER:-eternal}/AppData/Roaming/Jagged Alliance 3/LocalStorage.lua"
|
||
|
||
ja3_gptk_available || ja3_bottle_uses_d3dmetal || {
|
||
echo "❌ Нет GPTK/D3DMetal — configure-ja3-d3dmetal.sh"
|
||
exit 1
|
||
}
|
||
|
||
bash "${GOG_DIR}/install-gptk-whisky.sh"
|
||
|
||
mkdir -p "${BAK}"
|
||
# DXVK / GPTK PE в system32 ломают D3DMetal (114688/86016 → «graphics subsystem»).
|
||
for dll in d3d12.dll dxgi.dll d3d11.dll d3d10core.dll d3d12core.dll winemetal.dll; do
|
||
if [[ -f "${SYS32}/${dll}" ]]; then
|
||
mv -f "${SYS32}/${dll}" "${BAK}/${dll}" 2>/dev/null || true
|
||
fi
|
||
done
|
||
|
||
# Мост Metal + Gcenx PE (94208/200704). НЕ GPTK PE — __wine_unix_call на Wine 11.
|
||
# НЕ копировать в system32 DXVK/GPTK DLL.
|
||
mkdir -p "${WINE_UNIX}"
|
||
ln -sf ../../external/libd3dshared.dylib "${WINE_UNIX}/d3d12.so"
|
||
ln -sf ../../external/libd3dshared.dylib "${WINE_UNIX}/dxgi.so"
|
||
# system32: убрать overrides — builtin из Wine lib
|
||
for dll in d3d12.dll dxgi.dll d3d11.dll d3d10core.dll d3d12core.dll winemetal.dll; do
|
||
if [[ -f "${SYS32}/${dll}" ]]; then
|
||
mv -f "${SYS32}/${dll}" "${BAK}/${dll}" 2>/dev/null || true
|
||
fi
|
||
done
|
||
|
||
export WINEPREFIX="${BOTTLE_DIR}"
|
||
export DYLD_LIBRARY_PATH="${WHISKY_LIBS}/Libraries/Wine/lib/external:${WINE_LIB}:${DYLD_LIBRARY_PATH:-}"
|
||
export WINED3DMETAL=1
|
||
export WINEDEBUG=-all
|
||
|
||
"${WINE64}" reg delete 'HKCU\Software\Wine\DllOverrides' /v d3d11 /f >/dev/null 2>&1 || true
|
||
"${WINE64}" reg delete 'HKCU\Software\Wine\DllOverrides' /v d3d10core /f >/dev/null 2>&1 || true
|
||
"${WINE64}" reg delete 'HKCU\Software\Wine\DllOverrides' /v dxgi /f >/dev/null 2>&1 || true
|
||
"${WINE64}" reg delete 'HKCU\Software\Wine\DllOverrides' /v d3d12 /f >/dev/null 2>&1 || true
|
||
"${WINE64}" reg delete 'HKCU\Software\Wine\Direct3D' /v renderer /f >/dev/null 2>&1 || true
|
||
|
||
if [[ -f "${LS}" ]]; then
|
||
perl -i -pe 's/^\t\tGraphicsApi = ".*"/\t\tGraphicsApi = "d3d12"/' "${LS}"
|
||
else
|
||
mkdir -p "$(dirname "${LS}")"
|
||
cat >"${LS}" <<'EOF'
|
||
return {
|
||
Options = {
|
||
GraphicsApi = "d3d12",
|
||
VideoPreset = "Low",
|
||
},
|
||
}
|
||
EOF
|
||
fi
|
||
|
||
if [[ -f "${BOTTLE_DIR}/Metadata.plist" ]]; then
|
||
/usr/libexec/PlistBuddy -c 'Set :dxvkConfig:dxvk false' "${BOTTLE_DIR}/Metadata.plist" 2>/dev/null || true
|
||
/usr/libexec/PlistBuddy -c 'Set :performanceConfig:forceD3D11 false' "${BOTTLE_DIR}/Metadata.plist" 2>/dev/null || \
|
||
/usr/libexec/PlistBuddy -c 'Add :performanceConfig:forceD3D11 bool false' "${BOTTLE_DIR}/Metadata.plist" 2>/dev/null || true
|
||
/usr/libexec/PlistBuddy -c 'Set :graphicsConfig:backend d3dMetal' "${BOTTLE_DIR}/Metadata.plist" 2>/dev/null || true
|
||
/usr/libexec/PlistBuddy -c 'Set :metalConfig:sequoiaCompatMode true' "${BOTTLE_DIR}/Metadata.plist" 2>/dev/null || true
|
||
fi
|
||
|
||
touch "${BOTTLE_DIR}/.ja3_d3dmetal_prepared"
|
||
# Ярлык для Whisky Run (тот же CWD + D3DMetal env из Metadata)
|
||
cat >"${BOTTLE_DIR}/drive_c/GOG Games/Jagged Alliance 3/run-ja3.cmd" <<'EOF'
|
||
@echo off
|
||
cd /d "C:\GOG Games\Jagged Alliance 3"
|
||
start "" "JA3.exe" -unpacked %*
|
||
EOF
|
||
|
||
echo "OK: D3DMetal graphics для ${BOTTLE_NAME}"
|
||
echo " Скрипт: bash ${GOG_DIR}/run-ja3.sh"
|
||
echo " Whisky Run: C:\\GOG Games\\Jagged Alliance 3\\run-ja3.cmd (не JA3.exe напрямую)"
|