A ton of updates. We now have working 32 bit wine, Swamp installs and works, many other 32 bit games should as well. Improvements to the user interface both GUI and CLI. Tons of bug fixes. Not quite yet ready for mainstream testing, but getting closer.

This commit is contained in:
Storm Dragon
2025-08-07 20:18:11 -04:00
parent e5c6798c80
commit 9515c25ea3
130 changed files with 309 additions and 196 deletions

View File

@@ -41,13 +41,127 @@ check_wine32() {
} | agm_progressbox "Wine32 Setup" "Extracting Wine32 for SAPI compatibility..."
fi
# Export wine32 path for function overrides
# Export wine32 path for bottle creation
if [[ -f "$wine32Dir/bin/wine" ]]; then
export wine32="$wine32Dir/bin/wine"
export wine32server="$wine32Dir/bin/wineserver"
fi
}
# Ensure wine bottles exist with proper dependencies
ensure_wine_bottles() {
local wine32Bottle="$HOME/.local/wine32"
local wine64Bottle="$HOME/.local/wine64"
# Create wine32 bottle for SAPI games if missing
if [[ ! -d "$wine32Bottle" ]] || [[ ! -f "$wine32Bottle/system.reg" ]]; then
{
echo "# Creating wine32 bottle for SAPI compatibility..."
echo "# This may take several minutes on first run..."
# Set up environment for wine32
export WINEPREFIX="$wine32Bottle"
export WINE="$wine32"
export WINESERVER="$wine32server"
export PATH="${wine32%/*}:$PATH"
unset WINEARCH
# Initialize wine32 bottle
echo "# Initializing wine32 environment..."
DISPLAY="" "$WINE" wineboot -u
# Install mono and gecko
echo "# Installing .NET Framework..."
monoPath="$(find /usr/share/wine/ -maxdepth 1 -type d -name mono 2> /dev/null)"
if [[ -z "$monoPath" ]]; then
download 'http://dl.winehq.org/wine/wine-mono/6.0.0/wine-mono-6.0.0-x86.msi'
monoPath="${cache}/wine-mono-6.0.0-x86.msi"
fi
"$WINE" msiexec /i z:"$monoPath" /quiet
echo "# Installing web browser support..."
geckoPath="$(find /usr/share/wine/ -maxdepth 1 -type d -name "gecko" 2> /dev/null)"
if [[ -z "$geckoPath" ]]; then
download 'http://dl.winehq.org/wine/wine-gecko/2.40/wine_gecko-2.40-x86.msi'
geckoPath="${cache}/wine_gecko-2.40-x86.msi"
fi
"$WINE" msiexec /i z:"$geckoPath" /quiet
# Install SAPI dependencies
echo "# Installing Speech SDK and SAPI dependencies..."
env WINE="$WINE" WINESERVER="$WINESERVER" DISPLAY="${DISPLAY:-:0}" winetricks -q isolate_home speechsdk corefonts winxp
# Set Microsoft Mike as default voice (better than Mary/Sam)
echo "# Setting Microsoft Mike as default voice..."
# Initialize SAPI to create registry entries
mkdir -p "${WINEPREFIX}/drive_c/windows/temp"
cat << "EOF" > "${WINEPREFIX}/drive_c/windows/temp/init_sapi.vbs"
dim speechobject
set speechobject=createobject("sapi.spvoice")
speechobject.speak ""
EOF
"$WINE" cscript "c:\\windows\\temp\\init_sapi.vbs"
# Set Microsoft Mike as default voice
"$WINE" reg add "HKCU\\SOFTWARE\\Microsoft\\Speech\\Voices" /v "DefaultTokenId" /t REG_SZ /d "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\MSMike" /f
# Set speech rate to 7 (normal speed)
"$WINE" reg add "HKCU\\SOFTWARE\\Microsoft\\Speech\\Voices" /v "DefaultTTSRate" /t REG_DWORD /d "7" /f
echo "Set Microsoft Mike as default voice"
echo "# Wine32 bottle creation complete."
} | agm_progressbox "Wine Bottle Setup" "Creating wine32 bottle for SAPI games (this may take several minutes)..."
fi
# Create wine64 bottle for modern games if missing
if [[ ! -d "$wine64Bottle" ]] || [[ ! -f "$wine64Bottle/system.reg" ]]; then
{
echo "# Creating wine64 bottle for modern games..."
# Set up environment for wine64
export WINEPREFIX="$wine64Bottle"
export WINE="wine"
export WINESERVER="wineserver"
unset WINEARCH
# Initialize wine64 bottle
echo "# Initializing wine64 environment..."
DISPLAY="" wine wineboot -u
# Install mono and gecko
echo "# Installing .NET Framework..."
monoPath="$(find /usr/share/wine/ -maxdepth 1 -type d -name mono 2> /dev/null)"
if [[ -z "$monoPath" ]]; then
download 'http://dl.winehq.org/wine/wine-mono/6.0.0/wine-mono-6.0.0-x86.msi'
monoPath="${cache}/wine-mono-6.0.0-x86.msi"
fi
wine msiexec /i z:"$monoPath" /quiet
echo "# Installing web browser support..."
geckoPath="$(find /usr/share/wine/ -maxdepth 1 -type d -name "gecko" 2> /dev/null)"
if [[ -z "$geckoPath" ]]; then
download 'http://dl.winehq.org/wine/wine-gecko/2.40/wine_gecko-2.40-x86.msi'
geckoPath="${cache}/wine_gecko-2.40-x86.msi"
fi
wine msiexec /i z:"$geckoPath" /quiet
# Install common dependencies for modern games
echo "# Installing common dependencies..."
winetricks -q isolate_home corefonts vcrun2019 win10
# Setup nvda2speechd for accessibility
echo "# Setting up accessibility support..."
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd"
if [[ ! -f "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd" ]]; then
cp "${cache}/nvda2speechd" "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd"
chmod +x "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd"
fi
echo "# Wine64 bottle creation complete."
} | agm_progressbox "Wine Bottle Setup" "Creating wine64 bottle for modern games..."
fi
}
# Install games
game_installer() {
@@ -524,6 +638,8 @@ source .includes/update.sh
check_requirements || exit 1
# Set up wine32 for SAPI games
check_wine32
# Ensure wine bottles exist with dependencies
ensure_wine_bottles
# Check for updates
update
# Get latest news if available