Expand local_machine docs and automation for connectivity, games, and ops.
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>
This commit is contained in:
58
scripts/games/gog/install-ja3-dxmt.sh
Executable file
58
scripts/games/gog/install-ja3-dxmt.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
# DXMT (D3D10/11 → Metal) для JA3 без GPTK. JA3 на D3D12 всё равно нужен GPTK; скрипт + -graphicsapi d3d11.
|
||||
set -euo pipefail
|
||||
GOG_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
GAMES_DIR="$(cd "${GOG_DIR}/.." && pwd)"
|
||||
# shellcheck source=config.sh
|
||||
source "${GOG_DIR}/config.sh"
|
||||
|
||||
DXMT_CACHE="${GAMES_DIR}/cache/dxmt"
|
||||
DXMT_TAR="${DXMT_CACHE}/dxmt-v0.80-builtin.tar.gz"
|
||||
DXMT_URL="https://github.com/3Shain/dxmt/releases/download/v0.80/dxmt-v0.80-builtin.tar.gz"
|
||||
WINE_LIB="${WHISKY_LIBS}/Libraries/Wine/lib"
|
||||
WINE_LIB64="${WINE_LIB}/wine/x86_64-windows"
|
||||
WINE_UNIX="${WINE_LIB}/wine/x86_64-unix"
|
||||
SYS32="${BOTTLE_DIR}/drive_c/windows/system32"
|
||||
|
||||
gog_wine_check
|
||||
mkdir -p "${DXMT_CACHE}" "${SYS32}"
|
||||
[[ -f "${DXMT_TAR}" ]] || curl -L --fail -o "${DXMT_TAR}" "${DXMT_URL}"
|
||||
tar -xzf "${DXMT_TAR}" -C "${DXMT_CACHE}"
|
||||
|
||||
# builtin layout: bin/ or root with dlls — find files
|
||||
DXMT_ROOT="${DXMT_CACHE}"
|
||||
for sub in dxmt-v0.80-builtin bin .; do
|
||||
[[ -f "${DXMT_CACHE}/${sub}/d3d11.dll" ]] && DXMT_ROOT="${DXMT_CACHE}/${sub}" && break
|
||||
done
|
||||
[[ -f "${DXMT_ROOT}/d3d11.dll" ]] || DXMT_ROOT="$(find "${DXMT_CACHE}" -name d3d11.dll -print -quit | xargs dirname)"
|
||||
|
||||
install_one() {
|
||||
local src="$1" dest="$2"
|
||||
[[ -f "${src}" ]] || return 0
|
||||
cp -f "${src}" "${dest}/"
|
||||
}
|
||||
|
||||
install_one "${DXMT_ROOT}/winemetal.so" "${WINE_UNIX}"
|
||||
install_one "${DXMT_ROOT}/winemetal.dll" "${WINE_LIB64}"
|
||||
install_one "${DXMT_ROOT}/winemetal.dll" "${SYS32}"
|
||||
install_one "${DXMT_ROOT}/d3d11.dll" "${WINE_LIB64}"
|
||||
install_one "${DXMT_ROOT}/dxgi.dll" "${WINE_LIB64}"
|
||||
install_one "${DXMT_ROOT}/d3d10core.dll" "${WINE_LIB64}"
|
||||
# Только wine lib + system32 (не в папку игры — иначе конфликт с overrides).
|
||||
install_one "${DXMT_ROOT}/d3d11.dll" "${SYS32}"
|
||||
install_one "${DXMT_ROOT}/dxgi.dll" "${SYS32}"
|
||||
install_one "${DXMT_ROOT}/d3d10core.dll" "${SYS32}"
|
||||
|
||||
export WINEPREFIX="${BOTTLE_DIR}"
|
||||
export DYLD_LIBRARY_PATH="${WINE_LIB}:${DYLD_LIBRARY_PATH:-}"
|
||||
"${WINE64}" reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d12 /d disabled /f >/dev/null 2>&1 || true
|
||||
"${WINE64}" reg delete 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d11 /f >/dev/null 2>&1 || true
|
||||
"${WINE64}" reg delete 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d10core /f >/dev/null 2>&1 || true
|
||||
"${WINE64}" reg delete 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v dxgi /f >/dev/null 2>&1 || true
|
||||
|
||||
touch "${BOTTLE_DIR}/.ja3_dxmt_installed"
|
||||
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 true' "${BOTTLE_DIR}/Metadata.plist" 2>/dev/null || true
|
||||
fi
|
||||
echo "OK: DXMT v0.80 в ${BOTTLE_NAME} (+ game dir)"
|
||||
Reference in New Issue
Block a user