Merge branch 'testing' in preparation for binary release.

This commit is contained in:
Storm Dragon 2021-07-10 13:38:32 -04:00
commit e133f7d318
2 changed files with 78 additions and 26 deletions

View File

@ -54,6 +54,9 @@ check_news() {
local newsFile="https://stormgames.wolfe.casa/media/agm.ogg" local newsFile="https://stormgames.wolfe.casa/media/agm.ogg"
local newsPath="${configFile%/*.conf}/.news" local newsPath="${configFile%/*.conf}/.news"
local newsTag="$(curl --connect-timeout 5 -sI "$newsFile" | grep -i '^etag: "' | cut -d '"' -f2)" local newsTag="$(curl --connect-timeout 5 -sI "$newsFile" | grep -i '^etag: "' | cut -d '"' -f2)"
if [[ -z "${newsTag}" ]]; then
return
fi
local newsOldTag="$(cat "$newsPath" 2> /dev/null)" local newsOldTag="$(cat "$newsPath" 2> /dev/null)"
if [[ "$newsTag" != "$newsOldTag" ]]; then if [[ "$newsTag" != "$newsOldTag" ]]; then
dialog --yes-label 'Play' \ dialog --yes-label 'Play' \
@ -335,6 +338,7 @@ get_bottle() {
} }
get_installer() { get_installer() {
trap "exit 0" SIGINT
# If the file is in cache nothing else needs to be done. # If the file is in cache nothing else needs to be done.
if [[ -f "${cache}/$1" ]]; then if [[ -f "${cache}/$1" ]]; then
return return
@ -439,10 +443,8 @@ install_wine_bottle() {
exit 1 exit 1
fi fi
fi fi
mkdir -p "$HOME/.local/wine/${bottle}"
export WINEPREFIX="$HOME/.local/wine/${bottle}" export WINEPREFIX="$HOME/.local/wine/${bottle}"
# Arguments to the function are dependancies to be installed. # Arguments to the function are dependancies to be installed.
(DISPLAY="" wineboot -u
# Get location of mono and gecko. # Get location of mono and gecko.
monoPath="$(find /usr/share/wine/mono -name "wine-mono*x86.msi")" monoPath="$(find /usr/share/wine/mono -name "wine-mono*x86.msi")"
geckoPath="$(find /usr/share/wine/gecko -name "wine-gecko*x86.msi")" geckoPath="$(find /usr/share/wine/gecko -name "wine-gecko*x86.msi")"
@ -454,9 +456,41 @@ install_wine_bottle() {
download 'http://dl.winehq.org/wine/wine-gecko/2.40/wine_gecko-2.40-x86.msi' download 'http://dl.winehq.org/wine/wine-gecko/2.40/wine_gecko-2.40-x86.msi'
geckoPath="${cache}/wine_gecko-2.40-x86.msi" geckoPath="${cache}/wine_gecko-2.40-x86.msi"
fi fi
wine msiexec /i z:"$monoPath" /quiet if [[ "${WINEARCH}" == "win32" ]]; then
wine msiexec /i z:"$geckoPath" /quiet # This is in a brace list to pipe through dialog.
winetricks -q $@ ${winVer:-winxp} ${winetricksSettings}) | dialog --progressbox "Installing wine bottle, please wait..." -1 -1 { DISPLAY="" wineboot -u
wine msiexec /i z:"$monoPath" /quiet
wine msiexec /i z:"$geckoPath" /quiet
if [[ "${*}" =~ speechsdk ]]; then
download "https://rhvoice.eu-central-1.linodeobjects.com/RHVoice-voice-English-Bdl-v4.1.9-setup.exe"
winetricks -q win8
echo "Installing RHVoice..."
wine "${cache}/RHVoice-voice-English-Bdl-v4.1.9-setup.exe" &
sleep 15
wineserver -k
fi
winetricks -q $@ ${winVer:-winxp} ${winetricksSettings}; } | dialog --progressbox "Installing wine bottle, please wait..." -1 -1
else
# This is in a brace list to pipe through dialog.
download "https://nashcentral.duckdns.org/projects/wine.tar.gz"
{ tar xf "${cache}/wine.tar.gz" -C "${HOME}/.local/wine/"
mv "${HOME}/.local/wine/.wine/drive_c/users/user" "${HOME}/.local/wine/.wine/drive_c/users/${USER}"
if [[ "$(uname)" == "Darwin" ]]; then
gsed -i 's/"DefaultTTSRate"=dword:00000000/"DefaultTTSRate"=dword:00000005/' "${HOME}/.local/wine/.wine/user.reg"
else
sed -i 's/"DefaultTTSRate"=dword:00000000/"DefaultTTSRate"=dword:00000005/' "${HOME}/.local/wine/.wine/user.reg"
fi
mv "${HOME}/.local/wine/.wine/" "${WINEPREFIX}/"
wine64 cmd /c exit
wine msiexec /i z:"$monoPath" /quiet
wine msiexec /i z:"$geckoPath" /quiet
if [[ -z "$winVer" ]]; then
download "http://kitchen.kaldobsky.com/ttsgames/SpeechXP.exe"
winetricks -q winxp
wine "${cache}/SpeechXP.exe" /silent
fi
winetricks -q $@ ${winVer:-winxp} ${winetricksSettings}; } | dialog --progressbox "Installing wine bottle, please wait..." -1 -1
fi
} }
@ -836,6 +870,7 @@ gameList=(
#"Silver Dollar" #"Silver Dollar"
"Slender Lost Vision" "Slender Lost Vision"
"Sonic Zoom" "Sonic Zoom"
#"Space Defender"
"Super Egg Hunt" "Super Egg Hunt"
"Super Liam" "Super Liam"
#"Super Mario Bros" #"Super Mario Bros"
@ -846,6 +881,7 @@ gameList=(
#"The Gate" #"The Gate"
"The Great Toy Robbery" "The Great Toy Robbery"
"Thief" "Thief"
"Traders of Known Space"
#"Three D velocity" #"Three D velocity"
"Top Speed 2" "Top Speed 2"
"Top Speed 3" "Top Speed 3"
@ -1880,6 +1916,15 @@ EOF
download "http://wwwx.cs.unc.edu/Research/assist/et/projects/SonicZoom/soniczoom11.zip" download "http://wwwx.cs.unc.edu/Research/assist/et/projects/SonicZoom/soniczoom11.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/soniczoom11.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/soniczoom11.zip"
add_launcher "c:\Program Files\Sonic Zoom\SonicZoom.exe" add_launcher "c:\Program Files\Sonic Zoom\SonicZoom.exe"
;;
"Space Defender")
export WINEARCH="win64"
export winVer="win7"
install_wine_bottle speechsdk
download "http://tunmi13.ddns.net/projects/space_defender.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/space_defender.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
add_launcher "c:\Program Files\space_defender\sdefender.exe"
;; ;;
"Super Egg Hunt") "Super Egg Hunt")
install_wine_bottle install_wine_bottle
@ -1905,13 +1950,13 @@ EOF
install_wine_bottle speechsdk install_wine_bottle speechsdk
download "http://www.samtupy.com/games/stw.zip" download "http://www.samtupy.com/games/stw.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/Survive the Wild" "${cache}/stw.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/Survive the Wild" "${cache}/stw.zip"
rm -fv "${HOME}/.local/wine/survive-the-wild/drive_c/Program Files/Survive the Wild/nvdaControllerClient32.dll" find "${WINEPREFIX}" -type f -name "nvdaControllerClient32.dll" -exec rm -fv "{}" \;
add_launcher "c:\Program Files\Survive the Wild\stw.exe" add_launcher "c:\Program Files\Survive the Wild\stw.exe"
;; ;;
"Swamp") "Swamp")
export winVer="win7" export winVer="win7"
export winetricksSettings="vd=1024x768" export winetricksSettings="vd=1024x768"
install_wine_bottle vb6run dx8vb quartz speechsdk corefonts install_wine_bottle dx8vb quartz corefonts vb6run speechsdk
download "https://kaldobsky.com/audiogames/SwampPart1.zip" "https://kaldobsky.com/audiogames/SwampPart2.zip" download "https://kaldobsky.com/audiogames/SwampPart1.zip" "https://kaldobsky.com/audiogames/SwampPart2.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPart1.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPart1.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPart2.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPart2.zip"
@ -1961,14 +2006,6 @@ EOF
unzip -d "$WINEPREFIX/drive_c/Program Files/thief" "${cache}/thief_en.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/thief" "${cache}/thief_en.zip"
add_launcher "c:\Program Files\thief\game.exe" add_launcher "c:\Program Files\thief\game.exe"
;; ;;
"Three D velocity")
export winVer="win10"
install_wine_bottle speechsdk
download "https://github.com/munawarb/Three-D-Velocity-Binaries/archive/master.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/master.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
add_launcher "c:\Program Files\Three-D-Velocity-Binaries-master\tdv.exe"
;;
"Top Speed 2") "Top Speed 2")
install_wine_bottle install_wine_bottle
download "http://users.pandora.be/playinginthedark/downloads/Tspeed_2.00.exe" download "http://users.pandora.be/playinginthedark/downloads/Tspeed_2.00.exe"
@ -1981,6 +2018,20 @@ EOF
wine "${cache}/Tspeed_3.0.3.exe" /silent wine "${cache}/Tspeed_3.0.3.exe" /silent
add_launcher "c:\Program Files\Playing in the dark\Top Speed 3\TopSpeed.exe" add_launcher "c:\Program Files\Playing in the dark\Top Speed 3\TopSpeed.exe"
;; ;;
"Traders of Known Space")
install_wine_bottle
download "http://www.valiantgalaxy.com/tks/tradersOfKnownSpace0.0.0.5Installer.exe"
wine "${cache}/tradersOfKnownSpace0.0.0.5Installer.exe" /silent
add_launcher "c:\Program Files\VGA\TKS\tradersOfKnownSpace.exe"
;;
"Three D velocity")
export winVer="win10"
install_wine_bottle speechsdk
download "https://github.com/munawarb/Three-D-Velocity-Binaries/archive/master.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/master.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
add_launcher "c:\Program Files\Three-D-Velocity-Binaries-master\tdv.exe"
;;
"Triple Triad") "Triple Triad")
export winVer="win7" export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk install_wine_bottle vb6run dx8vb speechsdk

View File

@ -119,9 +119,9 @@ restore_voice() {
if [[ $doRestore -eq 0 ]]; then if [[ $doRestore -eq 0 ]]; then
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
if [[ "$(uname)" == "Darwin" ]]; then if [[ "$(uname)" == "Darwin" ]]; then
gsed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"/"DefaultTokenId"="'"${oldVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg" gsed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="'"${oldVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
else else
sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"/"DefaultTokenId"="'"${oldVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg" sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="'"${oldVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
fi fi
fi fi
} }
@ -136,14 +136,15 @@ set_voice() {
counter=$(( $counter + 1 )) counter=$(( $counter + 1 ))
done done
fullVoice="${voiceListFullName[$counter]}" fullVoice="${voiceListFullName[$counter]}"
fullVoice="${fullVoice/RHVoice/RHVoice\\\\bdl}"
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
# Remove any existing rate change for voices # Remove any existing rate change for voices
if [[ "$(uname)" == "Darwin" ]]; then if [[ "$(uname)" == "Darwin" ]]; then
gsed -i '/"DefaultTTSRate"=dword:/d' "${WINEPREFIX}/user.reg" gsed -i '/"DefaultTTSRate"=dword:/d' "${WINEPREFIX}/user.reg"
gsed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"\n"DefaultTTSRate"=dword:0000000'${2:-7}'/g' "${WINEPREFIX}/user.reg" gsed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"\n"DefaultTTSRate"=dword:0000000'${2:-7}'/g' "${WINEPREFIX}/user.reg"
else else
sed -i '/"DefaultTTSRate"=dword:/d' "${WINEPREFIX}/user.reg" sed -i '/"DefaultTTSRate"=dword:/d' "${WINEPREFIX}/user.reg"
sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"\n"DefaultTTSRate"=dword:0000000'${2:-7}'/g' "${WINEPREFIX}/user.reg" sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"\n"DefaultTTSRate"=dword:0000000'${2:-7}'/g' "${WINEPREFIX}/user.reg"
fi fi
} }
@ -157,11 +158,12 @@ test_voice() {
counter=$(( $counter + 1 )) counter=$(( $counter + 1 ))
done done
fullVoice="${voiceListFullName[$counter]}" fullVoice="${voiceListFullName[$counter]}"
fullVoice="${fullVoice/RHVoice/RHVoice\\\\bdl}"
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
if [[ "$(uname)" == "Darwin" ]]; then if [[ "$(uname)" == "Darwin" ]]; then
gsed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg" gsed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
else else
sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg" sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
fi fi
cat << "EOF" > /tmp/speak.vbs cat << "EOF" > /tmp/speak.vbs
dim speechobject dim speechobject
@ -187,9 +189,9 @@ wine cscript "z:\tmp\speak.vbs"
ifs="$IFS" ifs="$IFS"
IFS=$'\n' IFS=$'\n'
if [[ "$(uname)" == "Darwin" ]]; then if [[ "$(uname)" == "Darwin" ]]; then
voiceListFullName=($(ggrep -P '\[Software\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^\\]+\].*' "${WINEPREFIX}/system.reg" | sed -E -e 's/\[([^]]+)\].*/\1/g')) voiceListFullName=($(ggrep -P '\[Software\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^\\]+\].*' "${WINEPREFIX}/system.reg" | sed -E -e 's/\[([^]]+)\].*/\1/g'))
else else
voiceListFullName=($(grep -P '\[Software\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^\\]+\].*' "${WINEPREFIX}/system.reg" | sed -E -e 's/\[([^]]+)\].*/\1/g')) voiceListFullName=($(grep -P '\[Software\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^\\]+\].*' "${WINEPREFIX}/system.reg" | sed -E -e 's/\[([^]]+)\].*/\1/g'))
fi fi
IFS="$ifs" IFS="$ifs"
voiceList=() voiceList=()
@ -197,11 +199,10 @@ for x in "${voiceListFullName[@]}" ; do
voiceList+=("$(echo "$x" | rev | cut -d\\ -f1 | rev)") voiceList+=("$(echo "$x" | rev | cut -d\\ -f1 | rev)")
done done
if [[ "$(uname)" == "Darwin" ]]; then if [[ "$(uname)" == "Darwin" ]]; then
oldVoice="$(ggrep -P '"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"' "${WINEPREFIX}/user.reg" | sed -E -e 's/"DefaultTokenId"="([^"]+)"/\1/g')" oldVoice="$(ggrep -P '"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"' "${WINEPREFIX}/user.reg" | sed -E -e 's/"DefaultTokenId"="([^"]+)"/\1/g')"
else else
oldVoice="$(grep -P '"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"' "${WINEPREFIX}/user.reg" | sed -E -e 's/"DefaultTokenId"="([^"]+)"/\1/g')" oldVoice="$(grep -P '"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"' "${WINEPREFIX}/user.reg" | sed -E -e 's/"DefaultTokenId"="([^"]+)"/\1/g')"
fi fi
#exit 1
exit=1 exit=1
while [[ $exit -ne 0 ]] ; do while [[ $exit -ne 0 ]] ; do
voice="$(menulist "${voiceList[@]}")" voice="$(menulist "${voiceList[@]}")"