diff --git a/audiogame-manager.sh b/audiogame-manager.sh index bc0982d..a0af5e0 100755 --- a/audiogame-manager.sh +++ b/audiogame-manager.sh @@ -54,6 +54,9 @@ check_news() { local newsFile="https://stormgames.wolfe.casa/media/agm.ogg" local newsPath="${configFile%/*.conf}/.news" 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)" if [[ "$newsTag" != "$newsOldTag" ]]; then dialog --yes-label 'Play' \ @@ -335,6 +338,7 @@ get_bottle() { } get_installer() { + trap "exit 0" SIGINT # If the file is in cache nothing else needs to be done. if [[ -f "${cache}/$1" ]]; then return @@ -439,10 +443,8 @@ install_wine_bottle() { exit 1 fi fi - mkdir -p "$HOME/.local/wine/${bottle}" export WINEPREFIX="$HOME/.local/wine/${bottle}" # Arguments to the function are dependancies to be installed. - (DISPLAY="" wineboot -u # Get location of mono and gecko. monoPath="$(find /usr/share/wine/mono -name "wine-mono*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' geckoPath="${cache}/wine_gecko-2.40-x86.msi" fi - wine msiexec /i z:"$monoPath" /quiet - wine msiexec /i z:"$geckoPath" /quiet - winetricks -q $@ ${winVer:-winxp} ${winetricksSettings}) | dialog --progressbox "Installing wine bottle, please wait..." -1 -1 + if [[ "${WINEARCH}" == "win32" ]]; then + # This is in a brace list to pipe through dialog. + { 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" "Slender Lost Vision" "Sonic Zoom" + #"Space Defender" "Super Egg Hunt" "Super Liam" #"Super Mario Bros" @@ -846,6 +881,7 @@ gameList=( #"The Gate" "The Great Toy Robbery" "Thief" + "Traders of Known Space" #"Three D velocity" "Top Speed 2" "Top Speed 3" @@ -1880,6 +1916,15 @@ EOF download "http://wwwx.cs.unc.edu/Research/assist/et/projects/SonicZoom/soniczoom11.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/soniczoom11.zip" 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") install_wine_bottle @@ -1905,13 +1950,13 @@ EOF install_wine_bottle speechsdk download "http://www.samtupy.com/games/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" ;; "Swamp") export winVer="win7" 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" unzip -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPart1.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" 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") install_wine_bottle download "http://users.pandora.be/playinginthedark/downloads/Tspeed_2.00.exe" @@ -1981,6 +2018,20 @@ EOF wine "${cache}/Tspeed_3.0.3.exe" /silent 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") export winVer="win7" install_wine_bottle vb6run dx8vb speechsdk diff --git a/speech/set-voice.sh b/speech/set-voice.sh index eefc37d..ab9872c 100755 --- a/speech/set-voice.sh +++ b/speech/set-voice.sh @@ -119,9 +119,9 @@ restore_voice() { 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 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 - 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 } @@ -136,14 +136,15 @@ set_voice() { counter=$(( $counter + 1 )) done 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 # Remove any existing rate change for voices if [[ "$(uname)" == "Darwin" ]]; then 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 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 } @@ -157,11 +158,12 @@ test_voice() { counter=$(( $counter + 1 )) done 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 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 - 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 cat << "EOF" > /tmp/speak.vbs dim speechobject @@ -187,9 +189,9 @@ wine cscript "z:\tmp\speak.vbs" ifs="$IFS" IFS=$'\n' 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 - 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 IFS="$ifs" voiceList=() @@ -197,11 +199,10 @@ for x in "${voiceListFullName[@]}" ; do voiceList+=("$(echo "$x" | rev | cut -d\\ -f1 | rev)") done 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 - 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 -#exit 1 exit=1 while [[ $exit -ne 0 ]] ; do voice="$(menulist "${voiceList[@]}")"