A *lot* of work done on the audiogame-manager refactor. Hopefully getting somewhat close to stability, but I doubt it.

This commit is contained in:
Storm Dragon
2025-08-04 19:42:59 -04:00
parent 76f0c66c96
commit 4d2134b9a9
68 changed files with 109 additions and 154 deletions

View File

@@ -1,44 +1,13 @@
#!/usr/bin/env bash
get_bottle() {
local architecture="${1/win/}"
# Simple rule: wine64 for everything, wine32 only for speech APIs
local architecture="${1:-win64}"
architecture="${architecture/win/}"
export WINEPREFIX="$HOME/.local/wine${architecture}"
# Wine version for bottles
if [[ "$game" =~ entombed ]]; then
install_wine "6.18" "32"
fi
if [[ "$game" =~ rs-games ]]; then
install_wine "7.0" "32"
fi
if [[ "$game" =~ shadow-line ]]; then
install_wine "7.7" "32"
fi
}
install_wine() {
# Requires wine version, e.g. 7.7 and architecture, 32|64
if [[ $# -ne 2 ]]; then
exit 1
fi
# Figure out wineInstallationPath
wineInstallationPath="${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/wine_$2/$1"
export wine="${wineInstallationPath}/bin/wine"
# If the path exists, wine should already be installed.
# Just make sure we didn't wind up with a empty directory for some reason
rmdir "${wineInstallationPath}" 2> /dev/null
if [[ -d "${wineInstallationPath}" ]]; then
return
fi
mkdir -p "${wineInstallationPath}" 2> /dev/null
# This probably does not need to be cached, so download to tmp.
installationFile="$(mktemp)"
local v=$2
v="${v/32/x86}"
v="${v/64/x64}" # Probably wrong, so just a place holder.
# If this goes wrong, bail out
set -e
{ curl -L --output "${installationFile}" "https://www.playonlinux.com/wine/binaries/phoenicis/upstream-linux-x86/PlayOnLinux-wine-${1}-upstream-linux-${v}.tar.gz"
tar xf "${installationFile}" -C "${wineInstallationPath}"; } | agm_progressbox "Wine Installation" "Installing $2 bit Wine version $1."
set +e
}
# Note: install_wine function removed - we now use system wine with simplified bottle management
winetricks() {
# Report used packages to the winetricks maintainer so he knows they are being used.
@@ -104,29 +73,22 @@ install_rhvoice() {
}
install_wine_bottle() {
# Wine defaults to 64, so if you need 32 bit, don't forget export WINEARCH=win32
export WINEARCH="${WINEARCH:-win32}"
# Figure out if we are using a specific version of wine
# Simple rule: wine64 for everything, wine32 ONLY for speech APIs (SAPI5 doesn't work in WOW64)
local architecture
if [[ "$*" =~ speechsdk || "$*" =~ sapi ]]; then
architecture=32
export WINEARCH="win32"
echo "Using wine32 for speech API compatibility (SAPI5 broken in WOW64)"
else
architecture=64
export WINEARCH="win64"
echo "Using wine64 for optimal performance"
fi
export WINEPREFIX="$HOME/.local/wine${architecture}"
export wine="${wine:-$(command -v wine)}"
# Set the WINE and WINESERVER environmental variables so winetricks will use the right installation.
export WINE="${wine}"
export WINESERVER="${wine}server"
# Installation paths are based on WINEARCH unless game is set for custom bottle.
local bottle=""
if [[ ${#game} -gt 0 ]]; then
bottle="${game,,}"
bottle="${bottle//[[:space:]]/-}"
if [[ -d "$HOME/.local/wine/${bottle}" ]]; then
echo "$HOME/.local/wine/${bottle} exists. Please remove it before running this installer."
exit 1
fi
fi
if [[ ( -z "$WINEARCH" || "$WINEARCH" == "win64" ) && ! "$*" =~ speechsdk ]]; then
local architecture=64
else
local architecture=32
fi
export WINEPREFIX="$HOME/.local/wine${bottle:+/}${bottle:-$architecture}"
# Arguments to the function are dependancies to be installed.
# Get location of mono and gecko.
monoPath="$(find /usr/share/wine/ -maxdepth 1 -type d -name mono 2> /dev/null)"
@@ -154,20 +116,12 @@ install_wine_bottle() {
cp "${cache}/nvda2speechd" "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd"
chmod +x "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd"
fi
winetricks -q isolate_home $@ ${winVer:-win7} ${winetricksSettings}
# make it easy for game scripts to know which version of wine to use.
if [[ ${#bottle} -gt 1 ]]; then
echo "WINE=\"${WINE}\"" > "$HOME/.local/wine/${bottle}/agm.conf"
echo "WINESERVER=\"${WINESERVER}\"" >> "$HOME/.local/wine/${bottle}/agm.conf"
echo "Setting default voice for bottle \"${bottle}\" to \"${defaultVoice}\"."
"${0%/*}/speech/set-voice.sh" -b "${bottle}" -r "${defaultRate:-7}" -v "${defaultVoice}"
fi
# If default voice is set, change it for the current architecture
if [[ -z "$bottle" ]]; then
if [[ ${#defaultVoice} -ge 2 ]] && [[ "${*}" =~ (speechsdk|sapi) ]]; then
winetricks -q isolate_home "$@" "${winVer:-win7}" ${winetricksSettings}
# Set default voice for speech-enabled games
if [[ ${#defaultVoice} -ge 2 ]] && [[ "$*" =~ (speechsdk|sapi) ]]; then
echo "Setting default voice for wine${architecture}."
"${0%/*}/speech/set-voice.sh" -b "${bottle}" -r "${defaultRate:-7}" -v "${defaultVoice}"
fi
"${0%/*}/speech/set-voice.sh" -b "wine${architecture}" -r "${defaultRate:-7}" -v "${defaultVoice}"
fi
}

View File

@@ -49,8 +49,9 @@ agm_menu() {
--height=400 \
--width=600)
# Return the mapped value
# Strip trailing pipes and return the mapped value
if [[ -n "$selectedDescription" ]]; then
selectedDescription="${selectedDescription%|}"
echo "${valueMap["$selectedDescription"]}"
fi
else
@@ -185,10 +186,12 @@ agm_yesno() {
local text="$3"
if [[ "$dialogType" == "yad" ]]; then
yad --question \
yad --form \
--title="$title" \
--text="$text" \
--field="$text:LBL" \
--selectable-labels \
--button="Yes:0" \
--button="No:1" \
--width=400
else
dialog --backtitle "$backTitle" \

View File

@@ -1,5 +1,5 @@
download "http://download.dracoent.com/Windows/classic/AOSetup.exe"
export bottle="draconis"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/AOSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"

View File

@@ -1,5 +1,5 @@
download "http://files.tunmi13.com/projects_archive/bth.zip"
export bottle="tunmi13"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/$game" "${cache}/bth.zip"

View File

@@ -2,7 +2,7 @@ get_installer "bf.zip" "https://tunmi13.itch.io/battlefield-2d"
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll"
export WINEARCH=win64
export winVer="win8"
export bottle=tunmi13-64bit
# Uses standard wine path based on architecture (win32/win64)
install_wine_bottle
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/bf.zip"
find "${WINEPREFIX}/drive_c/Program Files/bf" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;

View File

@@ -1,5 +1,5 @@
download "https://www.nyanchangames.com/softs/nn2_setup.exe"
export bottle="nyanchan"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle
7z x -o"$WINEPREFIX/drive_c/nyanchangame/bk2" "${cache}/nn2_setup.exe"

View File

@@ -15,7 +15,7 @@ if [[ "${#dictFile}" -ge 3 ]] && [[ ! -r "${cache}/bk3-dict.dat" ]]; then
agm_yesno "Bokurano Daibouken 3" "Bokurano Daibouken 3" "Possible English translation file found at $dictFile. Would you like to use it for BK3?" && cp -v "$dictFile" "${cache}/bk3-dict.dat"
fi
download "https://www.nyanchangames.com/softs/nn3_setup.exe" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd32.dll"
export bottle="nyanchan"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle
cp "${cache}/nvda2speechd" "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd"

View File

@@ -1,5 +1,5 @@
download "https://www.nyanchangames.com/softs/nn_setup.exe"
export bottle="nyanchan"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle
7z x -o"$WINEPREFIX/drive_c/nyanchangame/bk" "${cache}/nn_setup.exe"

View File

@@ -1,5 +1,5 @@
download "http://oriolgomez.com/games/bombercats_en.zip"
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle
unzip -d "$WINEPREFIX/drive_c/Program Files/bomvercats" "${cache}/bombercats_en.zip"

View File

@@ -1,5 +1,5 @@
download "http://www.kaldobsky.com/audiogames/castaways2beta.zip"
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/castaways2" "${cache}/castaways2beta.zip"

View File

@@ -1,5 +1,5 @@
download "https://www.kaldobsky.com/audiogames/castaways.zip"
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/castaways" "${cache}/castaways.zip"

View File

@@ -1,5 +1,5 @@
download "http://files.tunmi13.com/projects_archive/coth.zip"
export bottle="tunmi13"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/$game" "${cache}/coth.zip"

View File

@@ -1,5 +1,5 @@
download "https://download.dracoent.com/Windows/ChangeReactionSetup.exe"
export bottle="draconis"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/ChangeReactionSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"

View File

@@ -1,5 +1,5 @@
get_installer "clashes_of_the_sky.zip" "https://tunmi13.itch.io/clashes-of-the-sky"
export bottle="tunmi13"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/clashes_of_the_sky.zip"

View File

@@ -1,4 +1,4 @@
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "http://oriolgomez.com/games/copter_en.zip"
install_wine_bottle

View File

@@ -1,5 +1,5 @@
download "http://oriolgomez.com/games/wheel_en.zip"
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/danger on the wheel" "${cache}/wheel_en.zip"

View File

@@ -1,5 +1,5 @@
#
export bottle=pbgames
# No custom bottle needed - use standard wine path based on architecture
download "https://www.agarchive.net/games/pb/Dark-Destroyer-Setup.exe"
install_wine_bottle speechsdk ie6
wine "$cache/Dark-Destroyer-Setup.exe" /silent

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
export winetricksSettings="vd=1024x768"
download "https://kaldobsky.com/audiogames/Daytona.zip"

View File

@@ -1,4 +1,4 @@
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "http://oriolgomez.com/games/road_en.zip"
install_wine_bottle

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
export winetricksSettings="vd=1024x768"
download "https://www.kaldobsky.com/audiogames/dogwhohatestoast.zip"

View File

@@ -2,7 +2,7 @@ download https://scwl-1251129685.cos.ap-shanghai.myqcloud.com/dreamland/Win/Drea
install_wine_bottle speechsdk ole32
$wine "${cache}/DreamLandSetup.exe" /silent
"Duck Hunt")
export bottle="l-works"
# Uses standard wine path based on architecture (win32/win64)
download "http://files.l-works.net/dhsetup.exe"
install_wine_bottle vb6run dx8vb speechsdk
wine "${cache}/dhsetup.exe" /silent

View File

@@ -1,5 +1,5 @@
"Duck Hunt")
export bottle="l-works"
# Uses standard wine path based on architecture (win32/win64)
download "http://files.l-works.net/dhsetup.exe"
install_wine_bottle vb6run dx8vb speechsdk
wine "${cache}/dhsetup.exe" /silent

View File

@@ -1,5 +1,5 @@
export winVer="win7"
export bottle="draconis"
# Uses standard wine path based on architecture (win32/win64)
download "http://download.dracoent.com/Windows/classic/DMSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/DMSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"

View File

@@ -1,5 +1,5 @@
export winVer="win7"
export bottle="draconis"
# Uses standard wine path based on architecture (win32/win64)
download "http://download.dracoent.com/Windows/classic/PBCSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/PBCSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"

View File

@@ -1,5 +1,5 @@
export winVer="win7"
export bottle="draconis"
# Uses standard wine path based on architecture (win32/win64)
download "http://download.dracoent.com/Windows/classic/PBXSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/PBXSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"

View File

@@ -1,5 +1,5 @@
export winVer="win7"
export bottle="draconis"
# Uses standard wine path based on architecture (win32/win64)
export WINEPREFIX="$HOME/.local/wine/draconis"
# Only works in conjunction with esp pinball extreme.
if ! [ -f "$HOME/.local/wine/$bottle/drive_c/Program Files/Draconis Entertainment/ESP Pinball Xtreme/pbx.exe" ] ; then

View File

@@ -1,6 +1,5 @@
export version="6.18"
download "http://blind-games.com/newentombed/EntombedSetup.exe" "https://download.microsoft.com/download/E/C/1/EC1B2340-67A0-4B87-85F0-74D987A27160/SSCERuntime-ENU.exe" "https://stormgames.wolfe.casa/downloads/Entombed.exe.config" "https://stormgames.wolfe.casa/downloads/mfplat.dll"
install_wine "$version" "32"
# Uses wine32 due to speechsdk dependency
export winVer="win7"
install_wine_bottle speechsdk msvcrt40 gdiplus ie7 wmp11 mf
# Ok, more dotnet.

View File

@@ -1,4 +1,4 @@
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "http://oriolgomez.com/games/bird_en.zip"
install_wine_bottle

View File

@@ -1,4 +1,4 @@
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "http://oriolgomez.com/games/hammer_en.zip"
install_wine_bottle speechsdk

View File

@@ -1,4 +1,4 @@
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "http://oriolgomez.com/games/insect_en.zip"
install_wine_bottle

View File

@@ -1,4 +1,4 @@
export bottle="l-works"
# Uses standard wine path based on architecture (win32/win64)
download "http://files.l-works.net/judgmentdayfullsetup.exe"
install_wine_bottle vb6run dx8vb quartz
wine "${cache}/judgmentdayfullsetup.exe" /silent

View File

@@ -1,5 +1,5 @@
# Currently only speaks in japanese, looking to see if we can find an english version.
export bottle="nyanchan"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "https://www.agarchive.net/games/nyanchan/laser%20breakout.7z" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd32.dll" "https://stormgames.wolfe.casa/downloads/laser-breakout-options.dat"
install_wine_bottle

View File

@@ -1,4 +1,4 @@
export bottle="l-works"
# Uses standard wine path based on architecture (win32/win64)
download "http://files.l-works.net/lockpicksetup.exe"
install_wine_bottle vb6run dx8vb
wine "${cache}/lockpicksetup.exe" /silent

View File

@@ -1,4 +1,4 @@
export bottle=dan-z
# Uses standard wine path based on architecture (win32/win64)
download "https://agarchive.net/games/danZ/lost.zip"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/lost" "$cache/lost.zip"

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
export winetricksSettings="vd=1024x768"
download "https://kaldobsky.com/audiogames/lunimals.zip"

View File

@@ -1,5 +1,5 @@
#
export bottle="nyanchan"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "https://www.nyanchangames.com/softs/MbSetupE.exe" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd32.dll"
install_wine_bottle speechsdk

View File

@@ -1,4 +1,4 @@
export bottle=dan-z
# Uses standard wine path based on architecture (win32/win64)
download "http://www.danielzingaro.com/maze_craze_setup.exe"
install_wine_bottle vb6run dx8vb
${wine} "${cache}/maze_craze_setup.exe" &

View File

@@ -1,5 +1,5 @@
export winVer="win7"
export bottle="draconis"
# Uses standard wine path based on architecture (win32/win64)
download "http://download.dracoent.com/Windows/classic/MBSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/MBSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
export winetricksSettings="vd=1024x768"
download "https://www.kaldobsky.com/audiogames/pawprints.zip"

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
export winetricksSettings="vd=1024x768"
download "http://www.kaldobsky.com/audiogames/pentapath.zip"

View File

@@ -1,4 +1,4 @@
export bottle="l-works"
# Uses standard wine path based on architecture (win32/win64)
download "http://agarchive.net/games/lworks/pigeon%20panic%20setup.exe"
install_wine_bottle vb6run dx8vb
wine "${cache}/pigeon panic setup.exe" /silent

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
export winetricksSettings="vd=1024x768"
download "https://www.kaldobsky.com/audiogames/Preludeamals.zip"

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
export winetricksSettings="vd=1024x768"
download "https://www.kaldobsky.com/audiogames/puzzledivided.zip"

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
export winetricksSettings="vd=1024x768"
download "http://www.kaldobsky.com/audiogames/rettou.zip"

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
export winetricksSettings="vd=1024x768"
download "https://www.kaldobsky.com/audiogames/revelation.zip"

View File

@@ -1,4 +1,4 @@
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "http://oriolgomez.com/games/rr_en.zip" "${nvdaControllerClientDll}"
install_wine_bottle speechsdk

View File

@@ -1,4 +1,4 @@
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "http://oriolgomez.com/games/rfyl_en.zip"
install_wine_bottle

View File

@@ -1,4 +1,4 @@
export bottle="nyanchan"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "https://www.nyanchangames.com/softs/screamingStrike2.exe" "${nvdaControllerClientDll}"
install_wine_bottle fakejapanese speechsdk

View File

@@ -1,6 +1,5 @@
export version="7.7"
download "https://www.mm-galabo.com/sr/Download_files_srfv/shadowrine_fullvoice3.171.exe" "https://raw.githubusercontent.com/LordLuceus/sr-english-localization/master/language_en.dat"
install_wine "$version" "32"
# Uses wine64 (no speech API dependency)
export winVer="win8"
install_wine_bottle
$wine "${cache}/shadowrine_fullvoice3.171.exe" /sp- &

View File

@@ -1,5 +1,5 @@
export winVer="win7"
export bottle="draconis"
# Uses standard wine path based on architecture (win32/win64)
download "http://download.dracoent.com/Windows/SilverDollarSetup.exe"
install_wine_bottle speechsdk
cp -v "${cache}/SilverDollarSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"

View File

@@ -1,7 +1,7 @@
download "https://tunmi13.com/projects/sb_pro_rw.zip" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll"
export WINEARCH=win64
export winVer="win8"
export bottle=tunmi13-64bit
# No custom bottle - use standard wine64 path
install_wine_bottle sapi
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/sb_pro_rw.zip"
find "${WINEPREFIX}/drive_c/Program Files/sb_pro_rw" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;

View File

@@ -16,7 +16,7 @@ add_launcher "c:\Program Files\shooter\shooter.exe"
download "https://tunmi13.com/projects/sb_pro_rw.zip" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll"
export WINEARCH=win64
export winVer="win8"
export bottle=tunmi13-64bit
# Uses standard wine path based on architecture (win32/win64)
install_wine_bottle sapi
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/sb_pro_rw.zip"
find "${WINEPREFIX}/drive_c/Program Files/sb_pro_rw" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;

View File

@@ -1,4 +1,4 @@
export bottle="l-works"
# Uses standard wine path based on architecture (win32/win64)
download "https://agarchive.net/games/lworks/Smashathon0.02.zip"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files" "$cache/Smashathon0.02.zip"

View File

@@ -1,4 +1,4 @@
export bottle=dan-z
# Uses standard wine path based on architecture (win32/win64)
download "http://www.danielzingaro.com/superdeekout_setup.exe" "http://www.danielzingaro.com/sd_full.exe"
install_wine_bottle vb6run dx8vb
${wine} "${cache}/superdeekout_setup.exe" &

View File

@@ -1,4 +1,4 @@
export bottle="l-works"
# Uses standard wine path based on architecture (win32/win64)
download "https://agarchive.net/games/lworks/super%20egg%20hunt+%20setup.exe"
install_wine_bottle
wine "${cache}/super egg hunt+ setup.exe" /silent

View File

@@ -1,4 +1,4 @@
export bottle="l-works"
# Uses standard wine path based on architecture (win32/win64)
download "http://files.l-works.net/superliamsetup.exe"
install_wine_bottle vb6run dx8vb
wine "${cache}/superliamsetup.exe" /silent

View File

@@ -1,7 +1,7 @@
# Source dialog interface wrapper
source "${0%/*}/../.includes/dialog-interface.sh"
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
export winetricksSettings="vd=1024x768"
agm_yesno "Swamp Installation" "Swamp Installation" "If you do not have a full 32 bit gstreamer installation, the Swamp music can cause stuttering and crashes. Would you like to remove the music directory after installation?"

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "https://www.kaldobsky.com/audiogames/tarot.zip"
install_wine_bottle vb6run dx8vb speechsdk

View File

@@ -1,5 +1,5 @@
export winVer="win7"
export bottle="draconis"
# Uses standard wine path based on architecture (win32/win64)
download "http://download.dracoent.com/Windows/classic/TPAXPSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/TPAXPSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"

View File

@@ -1,4 +1,4 @@
export bottle="l-works"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "http://files.l-works.net/tgtrsetup_2.04.exe" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd32.dll"
install_wine_bottle dsound directmusic

View File

@@ -1,4 +1,4 @@
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "http://oriolgomez.com/games/thief_en.zip"
install_wine_bottle

View File

@@ -1,4 +1,4 @@
export bottle="aprone"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "https://www.kaldobsky.com/audiogames/tripletriad.zip"
install_wine_bottle vb6run dx8vb speechsdk

View File

@@ -1,5 +1,5 @@
export winVer="win7"
export bottle="draconis"
# Uses standard wine path based on architecture (win32/win64)
download "http://download.dracoent.com/Windows/classic/USSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/USSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"

View File

@@ -1,4 +1,4 @@
export bottle="oriol-gomez"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "${ipfsGateway}/ipfs/QmWx271xuk3Mv9XTBoVu5BDJvXFZdasawC2nhtV21WAaUU?filename=villains_en.zip"
install_wine_bottle speechsdk

View File

@@ -1,4 +1,4 @@
export bottle="nyanchan"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
download "https://www.agarchive.net/games/nyanchan/world%20of%20war%20English.7z"
install_wine_bottle

View File

@@ -2,7 +2,7 @@ get_installer "hp.zip" "https://tunmi13.itch.io/haunted-party"
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll"
export WINEARCH=win64
export winVer="win8"
export bottle=tunmi13-64bit
# Uses standard wine path based on architecture (win32/win64)
install_wine_bottle
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/hp.zip"
find "${WINEPREFIX}/drive_c/Program Files/hp" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;

View File

@@ -39,20 +39,20 @@ fi
# Define a function to safely query the database
query_database() {
local db_file="$1"
local sql_query="$2"
sqlite3 -line "$db_file" "$sql_query"
local dbFile="$1"
local sqlQuery="$2"
sqlite3 -line "$dbFile" "$sqlQuery"
}
# Define a function to safely insert into the database
insert_database() {
local db_file="$1"
local dbFile="$1"
local text="$2"
local translation="$3"
# Use sqlite3 .import feature which is more robust for special characters
echo "$text|$translation" | sqlite3 -separator "|" "$db_file" ".import /dev/stdin temp_import"
sqlite3 "$db_file" "INSERT OR IGNORE INTO translations SELECT * FROM temp_import; DROP TABLE IF EXISTS temp_import;"
echo "$text|$translation" | sqlite3 -separator "|" "$dbFile" ".import /dev/stdin temp_import"
sqlite3 "$dbFile" "INSERT OR IGNORE INTO translations SELECT * FROM temp_import; DROP TABLE IF EXISTS temp_import;"
}
# Read so long as the application is running
@@ -77,25 +77,25 @@ while pgrep -u "$USER" ^$1 &> /dev/null ; do
# Normalize different unicode space characters to the same space
# https://stackoverflow.com/a/43640405
alias normalize_spaces="perl -CSDA -plE 's/[^\\S\\t]/ /g'"
alias normalize_unicode="normalize_spaces | nfc"
alias normalizeSpaces="perl -CSDA -plE 's/[^\\S\\t]/ /g'"
alias normalizeUnicode="normalizeSpaces | nfc"
# Normalize text
normalized_text="$(echo "$text" | normalize_unicode)"
normalizedText="$(echo "$text" | normalizeUnicode)"
# Create a temporary database for import
sqlite3 "$translationFile" "CREATE TABLE IF NOT EXISTS temp_import(text TEXT, translation TEXT);"
# Check if we already have a translation
translated=$(sqlite3 "$translationFile" "SELECT translation FROM translations WHERE text = '$normalized_text' LIMIT 1;" 2>/dev/null)
translated=$(sqlite3 "$translationFile" "SELECT translation FROM translations WHERE text = '$normalizedText' LIMIT 1;" 2>/dev/null)
if [[ -z "$translated" ]]; then
# Get translation from the trans utility
translated="$(trans -no-autocorrect -no-warn -brief "$normalized_text" | head -1 | sed 's/\s*$//' | normalize_unicode)"
translated="$(trans -no-autocorrect -no-warn -brief "$normalizedText" | head -1 | sed 's/\s*$//' | normalizeUnicode)"
if [[ -n "$translated" ]]; then
# Insert using echo piping to avoid escaping issues
echo "$normalized_text|$translated" | sqlite3 -separator "|" "$translationFile" ".import /dev/stdin temp_import"
echo "$normalizedText|$translated" | sqlite3 -separator "|" "$translationFile" ".import /dev/stdin temp_import"
sqlite3 "$translationFile" "INSERT OR IGNORE INTO translations SELECT * FROM temp_import; DELETE FROM temp_import;"
fi
fi

View File

@@ -19,9 +19,9 @@ while pgrep -u "$USER" ^$1 &> /dev/null ; do
if [[ "$wnd_title" =~ $lookfor ]]; then
wnd_title=${BASH_REMATCH[1]}
if [[ "$old_title" != "$wnd_title" ]]; then
if [[ "$oldTitle" != "$wnd_title" ]]; then
spd-say -- "$wnd_title"
old_title="$wnd_title"
oldTitle="$wnd_title"
fi
fi
done