Compare commits

...

37 Commits

Author SHA1 Message Date
stormdragon2976
43005a75b6 Merge branch 'testing' introduces game specific wine versions. Breaks
Mac compatibility. Please see the wiki for an alternative option.
2023-03-02 00:58:18 -05:00
stormdragon2976
172f5482d0 Fixed up the grep statement to show only the first layout if there are multiples. 2023-02-10 09:44:45 -05:00
stormdragon2976
f1d21ae49f Updated the README with information on switching keyboard layout if necessary. 2023-02-09 17:13:34 -05:00
stormdragon2976
fbb389019d Experimental fix for systems in other languages. Export LANG to en_US.UTF-8 temporarily during installation of games. This needs testing, especially if your computer is normally in a different language. 2023-02-09 00:14:42 -05:00
stormdragon2976
f10afe820a Added an alert for the message about getting speech in vipMUD. 2023-02-08 20:26:51 -05:00
stormdragon2976
3085939e35 Add some flags to make curl try harder to download files for those hosts that are less than reliable. 2023-02-08 16:03:14 -05:00
stormdragon2976
8dcdea5ed1 Removed the "adding games" section from the README. It now has its own wiki page. 2023-02-08 09:51:21 -05:00
stormdragon2976
57eac5b7f6 Found a patch that turns Super Deekout into the full version. 2023-02-07 22:28:46 -05:00
stormdragon2976
68af5c8710 Finished adding Super Deekout. Xdotool is very important dependency for this one. 2023-02-07 18:35:20 -05:00
stormdragon2976
9736e4c000 More progress on Super Deekout. Unfortunately going to have to run the config.exe program. More xdotool to come. 2023-02-07 15:40:25 -05:00
stormdragon2976
bc7cdcfd25 Adding Super Deekout, but have to save for later. Will finish it in a bit. 2023-02-07 14:10:40 -05:00
stormdragon2976
ecec18417e Added game "Tactical Battle". 2023-02-07 03:46:15 -05:00
stormdragon2976
dd1007dce1 Fixed a bug with Mist World installer. Apparently in ' sneaked it's way into the installer. Added an alert functioon in case there's something that needs to be read for an installer. 2023-02-06 05:04:26 -05:00
stormdragon2976
5e1ca7ce7f Create a file, agm.conf, in new bottles that contains the path to wine and wineserver. This will make it possible for game helper scripts to work without breaking bottles that require different versions. 2023-02-05 15:37:57 -05:00
6712a9a234 Fixed missing quote in mist world section. 2023-02-05 11:20:35 -07:00
5113d99a9d Fix up update.exe for mist world on install 2023-02-04 22:36:23 -08:00
stormdragon2976
e9e2003dcb Added instructions for using the Mist World account creation script to the end of installation. 2023-02-04 16:58:55 -05:00
stormdragon2976
b76c55db6f First pass at Mist World account creator script. 2023-02-04 16:51:05 -05:00
677e0211cc First pass at mist world. Seems to work ok. 2023-02-03 22:29:22 -08:00
stormdragon2976
a659b4e63e Make sure the wine variable gets set to something, if none of the conditions for setting it get called. 2023-02-02 04:42:02 -05:00
stormdragon2976
119f8ecfd4 Fixed Shadow Line launcher. 2023-02-02 04:11:54 -05:00
stormdragon2976
33800fc980 Fixed major bug that would sometimes cause the wrong version of wine to be used. 2023-01-31 17:37:10 -05:00
stormdragon2976
e5253d7757 Finally, RS Games working. More fixes needed for some games. 2023-01-30 23:56:21 -05:00
stormdragon2976
b434cc16db RS Games requires an older version of wine to actually speak. Trying 7.7. 2023-01-30 21:54:06 -05:00
stormdragon2976
947c5eacb9 Added missing package xdg-utils to dependency installer script. 2023-01-30 21:49:10 -05:00
stormdragon2976
a6c42a6bd1 Sketchbook now working with sound. 2023-01-27 13:38:08 -05:00
stormdragon2976
5a9f715891 Replace nvdaControllerClient at the launch of Sketchbook so that updates won't break it. Immediately after updating, relaunch the game to restore speech. 2023-01-27 12:27:17 -05:00
stormdragon2976
eaafc19768 Fixed path for Sketchbook. 2023-01-27 11:50:46 -05:00
stormdragon2976
2fdf75a477 Entombed working again, requires wine 7.0. 2023-01-26 21:56:20 -05:00
stormdragon2976
7e90f9586f Entombed now uses wine 7.7, but there appears to be something wrong with part of the installation process, so not working currently. Added some statements to show what is happening, including which wine is being used or installed. 2023-01-26 19:52:00 -05:00
stormdragon2976
795eef018d Updated the dependency installer script. 2023-01-25 01:46:15 -05:00
stormdragon2976
ed82d449c6 Updated installer for swamp. It now uses the new code to make sure everything happens in 7.7 2023-01-24 16:09:13 -05:00
stormdragon2976
8bdba9d93e More very experimental changes. Now games should install using the required version of wine if necessary. It works in all the tests I have done, but that doesn't mean there are no bugs. 2023-01-24 16:04:58 -05:00
stormdragon2976
3cd9facf29 Finally fixed Shadow Line installer, I think. 2023-01-24 12:17:00 -05:00
stormdragon2976
db463525e9 Fixed clipboard_translator. It was refusing to run if or exiting if for some reason the clipboard was empty. 2023-01-23 23:33:00 -05:00
stormdragon2976
56eb97c659 First code using the new wine version code. All Aprone games now use Wine 7.7, this fixes problems with Swamp frequently disconnecting. If you find this doesn't work for you, please use the master branch to play Swamp until the bugs are fixed. I tested it here, and Swamp launched, but I also have wine 7.7 installed system wide currently. 2023-01-23 20:18:36 -05:00
stormdragon2976
1ec6eb758f First incarnation of a function to install different wine versions for audio games that require a specific version of wine to work. 2023-01-23 18:08:56 -05:00
5 changed files with 263 additions and 43 deletions

View File

@ -45,6 +45,13 @@ EOF
export DIALOGOPTS='--no-lines --visit-items'
# Alerts, for when user needs to read something.
alert() {
play -qnV0 synth 3 pluck D3 pluck A3 pluck D4 pluck F4 pluck A4 delay 0 .1 .2 .3 .4 remix - chorus 0.9 0.9 38 0.75 0.3 0.5 -t
echo
read -rp "Press enter to continue." continue
}
# Check for latest news
check_news() {
trap return INT
@ -284,7 +291,7 @@ download() {
fi
# Skip if the item is in cache.
test -e "${cache}/${dest}" && continue
if ! curl -L4 --output "${cache}/${dest}" "${i}" ; then
if ! curl -L4 -C - --retry 10 --output "${cache}/${dest}" "${i}" ; then
echo "Could not download \"$i\"..."
exit 1
fi
@ -305,7 +312,9 @@ get_bottle() {
"puzzle-divided"*) ;&
"revelation"*) ;&
"swamp"*) ;&
"triple -triad"*) export WINEPREFIX="${HOME}/.local/wine/aprone" ;;
"triple -triad"*)
install_wine "7.7" "32"
export WINEPREFIX="${HOME}/.local/wine/aprone" ;;
"bg-"*) export WINEPREFIX="${HOME}/.local/wine/bg";;
# ESP Pinball games
"esp-pinball-classic"*) export WINEPREFIX="${HOME}/.local/wine/esp-pinball";;
@ -346,6 +355,16 @@ get_bottle() {
"challenge-of-the-horse"*) export WINEPREFIX="${HOME}/.local/wine/tunmi13";;
*) export WINEPREFIX="${HOME}/.local/wine/${game%|*}";;
esac
# 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
}
get_installer() {
@ -418,7 +437,7 @@ echo "Loading documentation, please wait..."
local gameDoc="$(find "$gamePath" -type f -iname 'user_manual.html' -or -iname 'user_manual.htm' | head -1)"
# Game name specific docs, add the name to the for loop.
if [[ -z "$gameDoc" ]]; then
for i in "troopanum.txt" ; do
for i in "troopanum.txt" "superdeekout.txt" ; do
gameDoc="$(find "$gamePath" -type f -iname "$i" -or -iname 'manual.htm' | head -1)"
done
fi
@ -457,6 +476,33 @@ echo "Loading documentation, please wait..."
exit 0
}
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}"; } | dialog --progressbox "Installing $2 bit Wine version $1." -1 -1
set +e
}
winetricks() {
# Report used packages to the winetricks maintainer so he knows they are being used.
if ! [[ -e "${XDG_CACHE_HOME:-$HOME/.cache}/winetricks/track_usage" ]]; then
@ -502,14 +548,19 @@ install_rhvoice() {
download "${RHVoice[${voiceName}]}"
winetricks -q win8
echo "Installing RHVoice ${voiceName^}..."
wine "${cache}/${voiceFile}" &
${wine} "${cache}/${voiceFile}" &
sleep 20
wineserver -k
${wine}server -k
}
install_wine_bottle() {
# 32 bit installations work best and are the default here, if you need to override it, do it in the game specific installation steps.
export WINEARCH="${WINEARCH:-win32}"
# Figure out if we are using a specific version of wine
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"
if [[ -z "$bottle" ]]; then
local bottle="${game,,}"
bottle="${bottle//[[:space:]]/-}"
@ -532,9 +583,11 @@ install_wine_bottle() {
geckoPath="${cache}/wine_gecko-2.40-x86.msi"
fi
# 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
{ echo -n "Using "
${wine} --version
DISPLAY="" ${wine}boot -u
${wine} msiexec /i z:"$monoPath" /quiet
${wine} msiexec /i z:"$geckoPath" /quiet
if [[ "${*}" =~ (speechsdk|sapi) ]]; then
install_rhvoice
fi
@ -546,11 +599,16 @@ install_wine_bottle() {
chmod +x "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd"
fi
winetricks -q isolate_home $@ ${winVer:-winxp} ${winetricksSettings}; } | dialog --progressbox "Installing wine bottle, please wait..." -1 -1
# make it easy for game scripts to know which version of wine to use.
echo "WINE=\"${WINE}\"" > "$HOME/.local/wine/${bottle}/agm.conf"
echo "WINESERVER=\"${WINESERVER}\"" >> "$HOME/.local/wine/${bottle}/agm.conf"
}
# Install games
game_installer() {
export LANG="en_US.UTF-8"
# Try to deal with systems in other languages
mapfile -t installedGames < <(sed '/^$/d' "${configFile}" 2> /dev/null | cut -d '|' -f3)
# Create the menu of installed games
declare -a menuList
@ -714,14 +772,17 @@ game_launcher() {
exit 0
fi
get_bottle "$game"
# make sure wine is actually set to something
export wine="${wine:-wine}"
echo -n "launching "
${wine} --version
local winePath="${game#*|}"
winePath="${winePath%\\*.exe}"
local wineExec="${game#*|}"
wineExec="${wineExec%|*}"
wineExec="${wineExec##*\\}"
# kill any previous existing wineservers for this prefix in case they didn't shut down properly.
wineserver -k
# launch the game
${wine}server -k
# launch the game
if command -v qjoypad &> /dev/null ; then
mkdir -p ~/.qjoypad3
@ -752,16 +813,16 @@ game_launcher() {
if [[ "$game" =~ light-battles ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ mist-world ]]; then
"${0%/*}/speech/speak_window_title.sh" mw.exe &
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ ^bokurano-daibouken-2\| ]]; then
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken2 &
fi
if [[ "$game" =~ ^bokurano-daibouken\| ]]; then
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken &
fi
if [[ "$game" =~ shadow-line ]]; then
find "${WINEPREFIX}/drive_c/" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
"${0%/*}/speech/clipboard_translator.sh" play_sr.exe shadow-line &
fi
if [[ "$game" =~ bokurano-daibouken-3 ]]; then
dictPath="$(winepath "${winePath}")"
if [[ -r "${cache}/bk3-dict.dat" ]] && [[ ! -d "${dictPath}/dict" ]]; then
@ -790,6 +851,13 @@ game_launcher() {
if [[ "$game" =~ sequence-storm ]]; then
"${0%/*}/speech/clipboard_reader.sh" SequenceStorm &
fi
if [[ "$game" =~ shadow-line ]]; then
find "${WINEPREFIX}/drive_c/" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
"${0%/*}/speech/clipboard_translator.sh" play_sr.exe shadow-line &
fi
if [[ "$game" =~ sketchbook ]]; then
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
fi
if [[ "$game" =~ audiodisc ]]; then
wine "$winePath\\$wineExec"
exit 0
@ -798,9 +866,9 @@ game_launcher() {
wine "$winePath\\$wineExec"
exit 0
fi
if [[ "$game" =~ rs-games ]] || [[ "$game" =~ screaming-strike-2 ]]; then
if [[ "$game" =~ screaming-strike-2 ]]; then
pushd "$(winepath "$winePath")"
wine "$wineExec"
${wine} "$wineExec"
popd
exit 0
fi
@ -818,10 +886,10 @@ game_launcher() {
fi
if [[ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
wine64 start /realtime /d "${winePath}" "$wineExec"
else
wine start /d "${winePath}" "$wineExec" /realtime
# switch to wine64 for 64 bit prefix.
[[ "${wine}" == "wine" ]] && export wine="wine64"
fi
${wine:-wine} start /d "${winePath}" "$wineExec" /realtime
fi
exit 0
}
@ -889,6 +957,7 @@ export BOX86_NOBANNER=1
unset noCache
# Manual installation is not default, make sure it's unset
unset manualInstall
unset version
# The list of games available for installation.
@ -1013,6 +1082,7 @@ gameList=(
"Manamon 2"
#"Marina Break"
#"Minecraft"
"Mist World"
"Monkey Business"
"MudSplat French"
"MudSplat English"
@ -1045,19 +1115,21 @@ gameList=(
"Sequence Storm"
#"Shades of Doom 1.2"
"Shades of Doom"
#"Shadow Line"
"Shadow Line"
"Shooter"
"Silver Dollar"
"Slender Lost Vision"
"Sonic the Hedgehog"
"Sonic Zoom"
#"Space Defender"
"Super Deekout"
"Super Dogs Bone Hunt"
"Super Egg Hunt"
"Super Liam"
"Super Mario Bros"
"Survive the Wild"
"Swamp"
"Tactical Battle"
"Technoshock"
"Ten Pin Alley"
"The Blind Swordsman"
@ -1207,6 +1279,7 @@ case "${game}" in
add_launcher "c:\Program Files\AudioQuake\AudioQuake.exe"
echo
echo "After you launch the game, press tab then enter and it should begin speaking."
alert
;;
"Battle of the Hunter")
export bottle="tunmi13"
@ -1911,23 +1984,25 @@ case "${game}" in
add_launcher "c:\Program Files\Endless Runner\runner.exe"
;;
"Entombed")
export version="6.18"
install_wine "$version" "32"
export winVer="win7"
install_wine_bottle speechsdk msvcrt40 gdiplus ie7 wmp11 mf
# Ok, more dotnet.
LC_ALL=C DISPLAY="" winetricks -q dotnet40 xna40
wineserver -k # Sigh.
${wine}server -k # Sigh.
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"
mkdir -p "${WINEPREFIX}/drive_c/temp"
pushd "${WINEPREFIX}/drive_c/temp"
7z x "${cache}/SSCERuntime-ENU.exe"
wine msiexec /i "${WINEPREFIX}/drive_c/temp/SSCERuntime_x86-ENU.msi" /q
${wine} msiexec /i "${WINEPREFIX}/drive_c/temp/SSCERuntime_x86-ENU.msi" /q
rm *
popd
pushd "${WINEPREFIX}/drive_c/Program Files/Microsoft SQL Server Compact Edition/v3.5"
wine regsvr32 sqlceoledb35.dll
wine regsvr32 sqlceca35.dll
${wine} regsvr32 sqlceoledb35.dll
${wine} regsvr32 sqlceca35.dll
popd
wine "${cache}/EntombedSetup.exe" /silent
${wine} "${cache}/EntombedSetup.exe" /silent
pushd "${WINEPREFIX}/drive_c/Program Files/Entombed"
cp ../Microsoft\ SQL\ Server\ Compact\ Edition/v3.5/Private/System.Data.SqlServerCe.Entity.dll ../Microsoft\ SQL\ Server\ Compact\ Edition/v3.5/Private/System.Data.SqlServerCe.dll .
cp ../Microsoft\ SQL\ Server\ Compact\ Edition/v3.5/sql* .
@ -2262,6 +2337,24 @@ EOF
done
# And of course, add the launcher.
;;
"Mist World")
export winVer="win7"
get_installer "Mist World_Setup.exe" "https://drive.google.com/file/d/12YeUqorkkMT46ZSR5pcfWxSY8DHOLxZ-/view?usp=share_link"
install_wine_bottle
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd32.dll"
7z x -o"$WINEPREFIX/drive_c/Program Files/Mist World" "$cache/Mist World_Setup.exe"
sed -i 's/1024m/768m/g' "$WINEPREFIX/drive_c/Program Files/Mist World/mw.exe.vmoptions"
cp "$WINEPREFIX/drive_c/Program Files/Mist World/"{mw.exe.vmoptions,update.exe.vmoptions}
find "$WINEPREFIX/drive_c/Program Files/Mist World" -iname "nvdaControllerClient32.dll" -exec cp "$cache/nvda2speechd32.dll" "{}" \;
add_launcher 'c:\Program Files\Mist World\mw.exe'
echo
echo "If you do not have an account, There is a script in game-scripts to help."
echo "Launch the game, press enter on create account, then drop into a console so the game window does not lose focus."
echo "Change to the game-scripts directory and run"
echo "./mist_world_account_creator.sh and follow the prompts."
echo "To login, type your email address, press tab, and type your password. Press enter to confirm."
alert
;;
"Monkey Business")
export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk quartz
@ -2446,10 +2539,12 @@ EOF
add_launcher "c:\Program Files\RTR Offline\rtr.exe"
;;
"RS Games")
export version="7.0"
install_wine "$version" "32"
export winVer="win7"
install_wine_bottle speechsdk
download "http://rsgames.org/rsdownloads/rsgclient/rsgames-client-setup-2.01.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
wine "${cache}/rsgames-client-setup-2.01.exe" /silent
${wine} "${cache}/rsgames-client-setup-2.01.exe" /silent
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
add_launcher "c:\Program Files\RS Games Client\rsg.exe"
;;
@ -2492,10 +2587,12 @@ EOF
"Sketchbook")
export winVer="win7"
install_wine_bottle speechsdk
download "http://games.ims-productions.com/SBYW/SBYW.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
unzip -d "$WINEPREFIX/drive_c/Program Files/scrolling battles" "${cache}/SBYW.zip"
download "http://sbyw.games/SBYW/SBYW.zip" "http://sbyw.games/SBYW/sounds.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
mv -v "${cache}/sounds.zip" "${cache}/SBYW-sounds.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/sketchbook" "${cache}/SBYW.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/sketchbook" "${cache}/SBYW-sounds.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
add_launcher "c:\Program Files\scrolling battles\SBYW.exe"
add_launcher "c:\Program Files\sketchbook\SBYW.exe"
;;
"Sequence Storm")
get_installer "sequence-storm-win64.zip" "https://special-magic-games-llc.itch.io/sequence-storm"
@ -2521,18 +2618,21 @@ EOF
add_launcher "c:\Program Files\Shades of Doom 2.0\sod.exe"
;;
"Shadow Line")
export winVer="win8" speechsdk
export version="7.7"
install_wine "$version" "32"
export winVer="win8"
install_wine_bottle
download "https://www.mm-galabo.com/sr/Download_files_srfv/shadowrine_fullvoice3.171.exe"
wine "${cache}/shadowrine_fullvoice3.171.exe" /sp-
$wine "${cache}/shadowrine_fullvoice3.171.exe" /sp- &
xdotool sleep 30 key --clearmodifiers --delay=500 Return
xdotool key --clearmodifiers --delay=500 Return
xdotool key --clearmodifiers --delay=500 Return
xdotool key --clearmodifiers --delay=500 Return
xdotool sleep 300 key --clearmodifiers --delay=500 Down
echo "Running installer, this will take approximately 3 minutes..."
xdotool sleep 180 key --clearmodifiers --delay=500 Down
xdotool key --clearmodifiers --delay=500 space
xdotool key --clearmodifiers --delay=500 alt+i
wineserver -w
xdotool key --clearmodifiers --delay=500 alt+f
${wine}server -w
add_launcher "c:\Program Files\GalaxyLaboratory\ShadowRine_FullVoice\play_sr.exe"
;;
"Silver Dollar")
@ -2584,6 +2684,41 @@ EOF
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/space_defender.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvdaControllerClient64.dll" "{}" \;
add_launcher "c:\Program Files\space_defender\sdefender.exe"
;;
"Super Deekout")
install_wine_bottle vb6run dx8vb
download "http://www.danielzingaro.com/superdeekout_setup.exe" "http://www.danielzingaro.com/sd_full.exe"
${wine} "${cache}/superdeekout_setup.exe" &
xdotool sleep 15 key --delay 100 y 2> /dev/null
xdotool sleep 3 key --delay 250 alt+n 2> /dev/null
xdotool key --delay 250 alt+a 2> /dev/null
xdotool key --delay 250 space 2> /dev/null
xdotool key --delay 250 alt+n 2> /dev/null
xdotool key --delay 250 alt+n 2> /dev/null
xdotool key --delay 250 alt+n 2> /dev/null
xdotool key --delay 250 alt+i 2> /dev/null
xdotool sleep 15 key --delay 250 alt+f 2> /dev/null
xdotool sleep 3 key --delay 250 n 2> /dev/null
${wine}server -k
7z x -y -o"$WINEPREFIX/drive_c/Program Files/Super Deekout" "${cache}/sd_full.exe"
echo "Super Deekout needs some information before it will run:"
alert
read -erp "Please enter your first name: " fname
read -erp "Please enter your last name: " lname
read -erp "Please enter your email address: " email
${wine} "c:\Program Files\Super Deekout\config.exe" &
xdotool sleep 5 key --delay 100 Return 2> /dev/null
xdotool sleep 3 type --clearmodifiers --delay 100 "${fname}"
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
xdotool sleep 1 type --clearmodifiers --delay 100 "${lname}"
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
xdotool sleep 1 type --clearmodifiers --delay 100 "${email}"
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
xdotool sleep 15 key --delay 100 u 2> /dev/null
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
xdotool sleep 1 key --delay 250 Return 2> /dev/null
${wine}server -k
add_launcher "c:\Program Files\Super Deekout\super.exe"
;;
"Super Dogs Bone Hunt")
install_wine_bottle vb6run dx8vb speechsdk
@ -2621,6 +2756,8 @@ EOF
add_launcher "c:\Program Files\Survive the Wild\stw.exe"
;;
"Swamp")
export version="7.7"
install_wine "${version}" "32"
export bottle="aprone"
export winVer="win7"
export winetricksSettings="vd=1024x768"
@ -2633,14 +2770,22 @@ EOF
if curl -L --output "${cache}/SwampPatch.zip" "https://www.kaldobsky.com/audiogames/SwampPatch.zip" ; then
unzip -o -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPatch.zip"
fi
wine 'c:\Program Files\swamp\checkup.exe' /verysilent
#wine cmd.exe /c 'cd /d c:\Program Files\swamp && Windows32bit.bat'
$wine 'c:\Program Files\swamp\checkup.exe' /verysilent
#$wine cmd.exe /c 'cd /d c:\Program Files\swamp && Windows32bit.bat'
# Delete music if requested.
if [[ $deleteMusic -eq 0 ]]; then
rm -frv "$WINEPREFIX/drive_c/Program Files/swamp/sounds/Music/"
fi
add_launcher "c:\Program Files\swamp\Swamp.exe"
;;
"Tactical Battle")
install_wine_bottle speechsdk
LC_ALL=C DISPLAY="" winetricks -q dotnet462
${wine}server -k
download "https://blindgamers.com/downloads/Tactical%20Battle%20Dev.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/Tactical Battle" "${cache}/Tactical Battle Dev.zip"
add_launcher "c:\Program Files\Tactical Battle\Tactical Battle.exe"
;;
"Technoshock")
install_wine_bottle
download "http://tiflocomp.ru/download/games/technoshock_140b_en.zip" "http://tiflocomp.ru/download/games/technoshock140b_en_update.zip"
@ -2833,6 +2978,7 @@ export norh=false # Must install a voice, and rhvoice works easily with 64 bit.
echo "To bypass these dialogs, press alt+o, then press enter until speech starts."
echo "To be sure that each new dialog has had time to complete, wait a second between each press of enter."
echo "In each subsequent launch, you will need to hit enter a couple times before it starts speaking."
alert
;;
"Warsim")
get_installer "Warsim Full Game.zip" "https://huw2k8.itch.io/warsim"

View File

@ -0,0 +1,61 @@
#!/bin/bash
export DISPLAY="${DISPLAY:-:0}"
read -rp "Select create account from the menu, press enter to continue." continue
echo
# Read email address
echo "Enter email address:"
read -r email
# Validate email address format
if [[ "$email" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ ]]; then
# Type email address
xdotool type --delay=75 "$email"
# Press tab
xdotool sleep 0.5 key --delay=75 Tab
# Press enter
xdotool sleep 0.5 key --delay=75 Return
else
echo "Invalid email format. Exiting."
exit 1
fi
# Press tab
#xdotool sleep 0.5 key --delay=75 Tab
# Press enter
#xdotool sleep 0.5 key --delay=75 Return
echo "Please check your email for the verification code."
# Read verification code
echo "Enter verification code:"
read -r code
# Type verification code
xdotool type --delay=1000 $code
# press tab
xdotool sleep 0.5 key --delay=75 Tab
# Press enter
xdotool sleep 0.5 key --delay=75 Return
# Read password
echo "Enter password between 6 and 16 characters, 1 uppercase letter 1 number required:"
read -r password
# Type password
xdotool type --delay=500 "$password"
# Press tab
xdotool sleep 0.5 key --delay=75 Tab
# Type password again
xdotool sleep 0.5 type --delay=500 "$password"
# Press tab
xdotool sleep 0.5 key --delay=75 Tab
# Press enter
xdotool sleep 0.5 key --delay=75 Return
echo "Account created!"
exit 0

View File

@ -3,7 +3,8 @@
# Modified from the script at:
# https://gist.github.com/fdietze/6768a0970d7d732b7fbd7930ccceee2a
set -Eeuo pipefail # https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/#:~:text=set%20%2Du,is%20often%20highly%20desirable%20behavior.
# The next line has been commented because if there's nothing in clipboard the script breaks.
# set -Eeuo pipefail # https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/#:~:text=set%20%2Du,is%20often%20highly%20desirable%20behavior.
shopt -s expand_aliases

View File

@ -77,6 +77,14 @@ if [[ -z "${WINEPREFIX}" ]]; then
exit 0
fi
# Get wine version if available
if [[ -r "${WINEPREFIX}/agm.conf" ]]; then
source "${WINEPREFIX}/agm.conf"
export WINE
export WINESERVER
fi
wine="${WINE:-$(command -v wine)}"
msgbox() {
# Returns: None
# Shows the provided message on the screen with an ok button.
@ -124,7 +132,7 @@ menulist() {
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
${wine}server -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
$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
}
@ -142,7 +150,7 @@ set_voice() {
RHVoiceName="${RHVoiceName##*/}"
fullVoice="${voiceListFullName[$counter]}"
fullVoice="${fullVoice/RHVoice/RHVoice\\\\${RHVoiceName}}"
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
${wine}server -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
$sed -i '/"DefaultTTSRate"=dword:/d' "${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"
@ -161,14 +169,14 @@ test_voice() {
RHVoiceName="${RHVoiceName##*/}"
fullVoice="${voiceListFullName[$counter]}"
fullVoice="${fullVoice/RHVoice/RHVoice\\\\${RHVoiceName}}"
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
${wine}server -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
$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"
cat << "EOF" > "${bottle}/drive_c/windows/temp/speak.vbs"
dim speechobject
set speechobject=createobject("sapi.spvoice")
speechobject.speak "This is a test of your chosen voice. It contains multiple sentences and punctuation, and is designed to give a full representation of this voices qualities."
EOF
wine cscript "c:\windows\temp\speak.vbs"
${wine} cscript "c:\windows\temp\speak.vbs"
}
# Handle voice restore, but only if voice changed
@ -181,7 +189,7 @@ dim speechobject
set speechobject=createobject("sapi.spvoice")
speechobject.speak ""
EOF
wine cscript "c:\windows\temp\speak.vbs"
${wine} cscript "c:\windows\temp\speak.vbs"
# Create an array of available voices.
ifs="$IFS"

View File

@ -13,12 +13,12 @@ is_function() {
configure_arch() {
packageList=(
cabextract
curl
dialog
dos2unix
gawk
unzip
w3m
wget
wine
winetricks
wine_gecko
@ -34,6 +34,8 @@ configure_arch() {
alsa-lib
mesa
openal
sox
sqlite3
translate-shell
xz
gst-plugins-bad
@ -41,6 +43,7 @@ configure_arch() {
gst-plugins-ugly
gst-libav
p7zip
xdg-utils
)
if [[ "$(uname -m)" == "x86_64" ]]; then
# Enable multilib
@ -72,6 +75,7 @@ configure_arch() {
configure_debian() {
packageList=(
curl
dialog
gawk
gstreamer1.0-plugins-bad:i386