Compare commits

...

30 Commits

Author SHA1 Message Date
Storm Dragon
9a47da3239 Merge branch 'testing' latest game additions, updates, and bug fixes. 2024-11-26 00:31:34 -05:00
Storm Dragon
baef70bcf1 Fixed broken download link. 2024-11-17 22:21:01 -05:00
Storm Dragon
792a8d413f Add reminder for backing up deck and game directories before reinstalling for upgrade from beta78 and earlier. 2024-11-15 18:40:59 -05:00
Storm Dragon
6a4ff7358f The logs were reliably being reported, so try a new approach. 2024-11-15 18:27:07 -05:00
Storm Dragon
b3db3bfe28 Show latest changes after doing updates. 2024-11-15 18:20:01 -05:00
Storm Dragon
6b73d2c7a8 Added reinstall warning for anyone updating from Crazy Party beta <= 78. 2024-11-15 17:03:24 -05:00
Storm Dragon
246af6a8ad Improved the Crazy Party update script. 2024-11-15 16:32:44 -05:00
Storm Dragon
40dd4f9b77 Merge branch 'testing' of git.stormux.org:storm/audiogame-manager into testing 2024-11-06 05:09:48 -05:00
Storm Dragon
c9309f4f19 Updated Crazy Party installer. 2024-11-06 05:09:31 -05:00
91db128659 Revert "Initial attempt at adding "The Tornado Chicken". Not quite working yet, crashes at main menu."
Games using nvgt since mid august will no longer work under wine,
including this one. Reverting in hopes of getting a linux version
(follow https://git.2mb.codes/~stormdragon2976/linux-game-manager to see
if so).

This reverts commit ef19077d1c.
2024-09-26 03:31:16 -07:00
Storm Dragon
72fc9fb5be Merge branch 'testing' of git.stormux.org:storm/audiogame-manager into testing 2024-09-26 04:53:03 -04:00
Storm Dragon
ef19077d1c Initial attempt at adding "The Tornado Chicken". Not quite working yet, crashes at main menu. 2024-09-26 04:52:44 -04:00
65a44d2c6b Actually include the accessibility features for balatro! Doh lol. 2024-09-13 11:17:04 -07:00
Storm Dragon
d1f95e02ef Migrated the game removal function over to the new system. 2024-09-13 01:28:22 -04:00
Storm Dragon
29ead41c16 Added game "Balatro" 2024-09-12 16:38:35 -04:00
Storm Dragon
c012cb5574 Updated the add_launcher function to handle extra parameters. 2024-09-12 14:37:51 -04:00
Storm Dragon
c77f05b86a More work on supporting extra flags like variable exports. Fixed the kill flag because the new format of the $game variable broke it. Probably still more bugs to deal with, just let me know if you find any. 2024-09-12 14:26:46 -04:00
Storm Dragon
cabe79cc34 Fixed launcher for Warsim. 2024-09-12 01:49:01 -04:00
Storm Dragon
f459791fda Started restructuring of the game launcher function. This included splitting it into 3 functions as well as redoing the way games are read from the games.conf file. There very well may be bugs. 2024-09-12 01:35:58 -04:00
Storm Dragon
9ce0c4c1e3 For games that require steamcmd, you can now place the files manually if you want. 2024-09-09 01:20:56 -04:00
b36d99c970 Crazy party beta81 is working. Until we get the update script working, please remove and reinstall. 2024-09-07 15:13:42 -07:00
Storm Dragon
2f39769362 Small updates to Shadow Line. 2024-09-02 15:36:07 -04:00
Storm Dragon
0eb04939fa Merge branch 'testing' of git.stormux.org:storm/audiogame-manager into testing 2024-09-02 04:23:58 -04:00
Storm Dragon
600e92c6db Switch Shadow Line to use English translations file. 2024-09-02 04:23:41 -04:00
35a44cac17 Put draconis games in their own wine bottle. Please reinstall your games to get the right paths. 2024-08-28 09:53:10 -07:00
Storm Dragon
94d6c3c4bc Added game "Simple Fighter". 2024-07-06 14:36:33 -04:00
Storm Dragon
77d57a4fef Added game "Scrolling Battles Rewrite". 2024-06-19 23:00:02 -04:00
Storm Dragon
91c6892785 Started work on adding "star Treck Final Conflict" it's commented out because not yet working. 2024-06-10 12:02:49 -04:00
Storm Dragon
d2bc752393 Move fake nvdaControllerclient32.dll to ipfs. 2024-04-23 01:20:13 -04:00
Storm Dragon
21a4cc943f Fixed typo. 2024-04-15 14:33:33 -04:00
2 changed files with 354 additions and 175 deletions

View File

@ -75,6 +75,7 @@ check_news() {
fi fi
} }
# Automatic update function
# Automatic update function # Automatic update function
update() { update() {
if ! [[ -d ".git" ]]; then if ! [[ -d ".git" ]]; then
@ -93,7 +94,8 @@ if [[ "$home" == "$remote" ]]; then
fi fi
dialog --backtitle "Audiogame Manager" \ dialog --backtitle "Audiogame Manager" \
--yesno "Updates are available. Would you like to update now?" -1 -1 --stdout || return --yesno "Updates are available. Would you like to update now?" -1 -1 --stdout || return
git pull { git pull
git log '@{1}..' --pretty=format:'%an: %s'; }
exit $? exit $?
} }
@ -328,10 +330,16 @@ get_bottle() {
"triple-triad"*) "triple-triad"*)
export WINEPREFIX="${HOME}/.local/wine/aprone" ;; export WINEPREFIX="${HOME}/.local/wine/aprone" ;;
"bg-"*) export WINEPREFIX="${HOME}/.local/wine/bg";; "bg-"*) export WINEPREFIX="${HOME}/.local/wine/bg";;
# ESP Pinball games # draconis games
"esp-pinball-classic"*) export WINEPREFIX="${HOME}/.local/wine/esp-pinball";; "esp-pinball-classic"*) ;&
"esp-pinball-extreme"*) export WINEPREFIX="${HOME}/.local/wine/esp-pinball";; "esp-pinball-extreme"*) ;&
"esp-pinball-party-pack"*) export WINEPREFIX="${HOME}/.local/wine/esp-pinball";; "esp-pinball-party-pack"*) ;&
"silver-dollar"*) ;&
"monkey-business"*) ;&
"alien-outback"*) ;&
"dyna-man"*) ;&
"change-reaction"*) ;&
"ten-pin-alley"*) export WINEPREFIX="${HOME}/.local/wine/draconis";;
# l-works games group # l-works games group
"duck-hunt"*) ;& "duck-hunt"*) ;&
"judgement-day"*) ;& "judgement-day"*) ;&
@ -423,8 +431,24 @@ get_installer() {
get_steam() { get_steam() {
# Arguments: $1 id of item for download, $2 url for game # Arguments: $1 id of item for download, $2 url for game
trap "exit 0" SIGINT trap "exit 0" SIGINT
echo "The next steps will install through steamcmd." echo "manual intervention required."
alert alert
dialog --backtitle "Audiogame Manager" \
--yes-label "Continue with Steam" \
--no-label "Install manually" \
--extra-button \
--extra-label "Exit" \
--yesno "To install the game manually, place files in \"${WINEPREFIX}/drive_c/Program Files/${game}\"" -1 -1 --stdout
case $? in
0) echo "The next steps will install through steamcmd." ;;
1)
mkdir -p "${WINEPREFIX}/drive_c/Program Files/${game}"
dialog --backtitle "Audiogame Manager" \
--msgbox "Place game files in \"${WINEPREFIX}/drive_c/Program Files/${game}\" and press enter to continue." -1 -1 --stdout
return
;;
*) exit 0 ;;
esac
# Check for steamcmd # Check for steamcmd
if ! command -v steamcmd &> /dev/null ; then if ! command -v steamcmd &> /dev/null ; then
dialog --backtitle "Audiogame Manager" \ dialog --backtitle "Audiogame Manager" \
@ -690,7 +714,7 @@ install_wine_bottle() {
game_installer() { game_installer() {
export LANG="en_US.UTF-8" export LANG="en_US.UTF-8"
# Try to deal with systems in other languages # Try to deal with systems in other languages
mapfile -t installedGames < <(sed '/^$/d' "${configFile}" 2> /dev/null | cut -d '|' -f3) mapfile -t installedGames < <(sed -e '/^$/d' -e '/^[[:space:]]*#/d' "${configFile}" 2> /dev/null | cut -d '|' -f3)
# Create the menu of installed games # Create the menu of installed games
declare -a menuList declare -a menuList
for i in "${gameList[@]}" ; do for i in "${gameList[@]}" ; do
@ -719,7 +743,7 @@ game_installer() {
# remove games # remove games
game_removal() { game_removal() {
mapfile -t lines < <(sed '/^$/d' "${configFile}" 2> /dev/null) mapfile -t lines < <(sed -e '/^$/d' -e '/^[[:space:]]*#/d' "${configFile}" 2> /dev/null)
if [[ ${#lines} -eq 0 ]]; then if [[ ${#lines} -eq 0 ]]; then
echo "No games found." echo "No games found."
exit 0 exit 0
@ -727,7 +751,8 @@ game_removal() {
# Create the menu of installed games # Create the menu of installed games
declare -a menuList declare -a menuList
for i in "${lines[@]}" ; do for i in "${lines[@]}" ; do
menuList+=("${i%|*}" "${i##*|}") IFS='|' read -ra gameInfo <<< "$i"
menuList+=("${gameInfo[0]}|${gameInfo[1]}" "${gameInfo[2]}")
done done
menuList+=("Donate" "Donate") menuList+=("Donate" "Donate")
menuList+=("Become a Patron" "Become a Patron") menuList+=("Become a Patron" "Become a Patron")
@ -781,7 +806,8 @@ kill_game() {
# Create the menu of installed games # Create the menu of installed games
declare -a menuList declare -a menuList
for i in "${lines[@]}" ; do for i in "${lines[@]}" ; do
menuList+=("${i%|*}" "${i##*|}") IFS='|' read -ra gameInfo <<< "$i"
menuList+=("${gameInfo[0]}|${gameInfo[1]}" "${gameInfo[2]}")
done done
menuList+=("Donate" "Donate") menuList+=("Donate" "Donate")
menuList+=("Become a Patron" "Become a Patron") menuList+=("Become a Patron" "Become a Patron")
@ -812,11 +838,142 @@ kill_game() {
exit 0 exit 0
} }
# for games that require custom scripts before launch or custom launch parameters
custom_launch_parameters() {
if [[ "${game[0]}" == "dragon-pong" ]]; then
"${0%/*}/speech/speak_window_title.sh" DragonPong.exe &
pushd "$(winepath "$winePath")"
wine "$wineExec"
popd
exit 0
fi
if [[ "${game[0]}" == "executioner's-rage" ]]; then
find "${WINEPREFIX}/drive_c/Program Files" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
fi
if [[ "${game[0]}" == "haunted-party" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "${game[0]}" == "laser-breakout" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
"${0%/*}/speech/speak_window_title.sh" play.exe &
fi
if [[ "${game[0]}" == "light-battles" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "${game[0]}" == "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[0]}" == "oh-shit" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "${game[0]}" == "bokurano-daibouken-2" ]]; then
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken2 &
fi
if [[ "${game[0]}" == "bokurano-daibouken" ]]; then
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken &
fi
if [[ "${game[0]}" =~ "bokurano-daibouken-3" ]]; then
dictPath="$(winepath "${winePath}")"
if [[ -r "${cache}/bk3-dict.dat" ]] && [[ ! -d "${dictPath}/dict" ]]; then
cp "${cache}/bk3-dict.dat" "${dictPath}/dict.dat"
fi
if [[ -d "${dictPath}/dict" ]]; then
if [[ ! -e "${dictPath}/data/nvdaControllerClient.dll" ]]; then
cp "${cache}/nvda2speechd32.dll" "${dictPath}/data/nvdaControllerClient.dll"
fi
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ ! -d "${dictPath}/dict" ]] && [[ ! -r "${cache}/bk3-dict.dat" ]]; then
find "${WINEPREFIX}/drive_c/nyanchangame/bk3" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken3 &
fi
fi
if [[ "${game[0]}" == "bop-it-emulator" ]]; then
"${0%/*}/speech/speak_window_title.sh" bop.exe &
fi
if [[ "${game[0]}" == "breu2-shadow-hunt" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "${game[0]}" == "road-to-rage" ]]; then
"${0%/*}/speech/speak_window_title.sh" trtr.exe &
fi
if [[ "${game[0]}" == "sequence-storm" ]]; then
"${0%/*}/speech/clipboard_reader.sh" SequenceStorm &
fi
if [[ "${game[0]}" == "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[0]}" == "sketchbook" ]]; then
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
fi
if [[ "${game[0]}" == "audiodisc" ]]; then
wine "$winePath\\$wineExec"
exit 0
fi
if [[ "${game[0]}" == "audioquake" ]]; then
wine "$winePath\\$wineExec"
exit 0
fi
if [[ "${game[0]}" == "screaming-strike-2" ]]; then
pushd "$(winepath "$winePath")"
${wine} "$wineExec"
popd
exit 0
fi
if [[ "${game[0]}" == "warsim" ]]; then
pushd "$(winepath "${game[1]%\\*}")"
wine "${game[1]##*\\}"
popd
exit 0
fi
if [[ "${game[0]}" == "interceptor" ]]; then
pushd "$(winepath "$winePath")"
wine "$wineExec"
popd
exit 0
fi
if [[ "${game[0]}" == "vip-mud" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
# switch to wine64 for 64 bit prefix.
[[ "${wine}" == "wine" ]] && export wine="wine64"
fi
if [[ "${game[0]}" == "the-great-toy-robbery" ]] ; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
}
# Process game launcher flags
process_launcher-flags() {
flags=("${game[@]:3}")
for i in "${flags[@]}" ; do
if [[ "${i}" =~ ^export\ [a-zA-Z_][a-zA-Z0-9_]*=\'?.*\'?$ ]]; then
eval "${i}"
fi
done
}
create_game_array() {
# Game array 0 bottle, 1 path, 2 title, 3+ flags
for i in "${lines[@]}" ; do
if [[ "${game}" =~ ^${i} ]]; then
# This is weird. Why do I have to set game to i before making the array?
game="$i"
IFS='|' read -ra game <<< "$i"
break
fi
done
}
# launch games that are installed # launch games that are installed
game_launcher() { game_launcher() {
# For use by update scripts that want to source functions in this file. # For use by update scripts that want to source functions in this file.
[[ "$agmNoLaunch" == "true" ]] && return [[ "$agmNoLaunch" == "true" ]] && return
mapfile -t lines < <(sed '/^$/d' "${configFile}" 2> /dev/null) mapfile -t lines < <(sed -e '/^$/d' -e '/^ *#/d' "${configFile}" 2> /dev/null)
if [[ ${#lines} -eq 0 ]]; then if [[ ${#lines} -eq 0 ]]; then
echo "Install some games first." echo "Install some games first."
exit 0 exit 0
@ -825,7 +982,8 @@ game_launcher() {
# Create the menu of installed games # Create the menu of installed games
declare -a menuList declare -a menuList
for i in "${lines[@]}" ; do for i in "${lines[@]}" ; do
menuList+=("${i%|*}" "${i##*|}") IFS='|' read -ra gameInfo <<< "$i"
menuList+=("${gameInfo[0]}|${gameInfo[1]}" "${gameInfo[2]}")
done done
menuList+=("Donate" "Donate") menuList+=("Donate" "Donate")
menuList+=("Become a Patron" "Become a Patron") menuList+=("Become a Patron" "Become a Patron")
@ -842,156 +1000,47 @@ game_launcher() {
elif [[ $menuCode -eq 3 ]]; then elif [[ $menuCode -eq 3 ]]; then
documentation "$game" "$(echo "$game" | cut -d '|' -f2)" documentation "$game" "$(echo "$game" | cut -d '|' -f2)"
fi fi
create_game_array
else else
local game="$(grep "^${1}|" "${configFile}" 2> /dev/null)" create_game_array
game="${game%|*}"
if [[ -z "$game" ]]; then if [[ -z "$game" ]]; then
echo "Game $1 not found." echo "Game $1 not found."
exit 1 exit 1
fi fi
fi fi
if [[ ${#game} -gt 0 ]]; then if [[ ${#game[@]} -gt 0 ]]; then
if [[ "$game" == "Donate" ]]; then if [[ "${game[0]}" == "Donate" ]]; then
open_url "https://ko-fi.com/stormux" open_url "https://ko-fi.com/stormux"
exit 0 exit 0
fi fi
if [[ "$game" == "Become a Patron" ]]; then if [[ "${game[0]}" == "Become a Patron" ]]; then
open_url "https://2mb.games/product/2mb-patron/" open_url "https://2mb.games/product/2mb-patron/"
exit 0 exit 0
fi fi
get_bottle "$game" get_bottle "${game[0]}"
# make sure wine is actually set to something # make sure wine is actually set to something
export wine="${wine:-wine}" export wine="${wine:-wine}"
echo -n "launching " echo -n "launching "
${wine} --version ${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. # kill any previous existing wineservers for this prefix in case they didn't shut down properly.
${wine}server -k ${wine}server -k
# launch the game # launch the game
if command -v qjoypad &> /dev/null ; then if command -v qjoypad &> /dev/null ; then
mkdir -p ~/.qjoypad3 mkdir -p ~/.qjoypad3
touch "${HOME}/.qjoypad3/${game%|*}.lyt" touch "${HOME}/.qjoypad3/${game[2]}.lyt"
# A | separated list of games that should not start with qjoypad. # A | separated list of games that should not start with qjoypad.
noQjoypadGames="a-hero's-call" noQjoypadGames="A Hero's Call"
if [[ "${noqjoypad}" != "true" ]] && ! [[ "${game}" =~ ${noQjoypadGames} ]]; then if [[ "${noqjoypad}" != "true" ]] && ! [[ "${game[2]}" =~ ${noQjoypadGames} ]]; then
if pgrep qjoypad &> /dev/null ; then if pgrep qjoypad &> /dev/null ; then
qjoypad -T "${game%|*}" 2> /dev/null qjoypad -T "${game[2]}" 2> /dev/null
else else
qjoypad -T "${game%|*}" 2> /dev/null & qjoypad -T "${game[2]}" 2> /dev/null &
fi fi
fi fi
fi fi
# for games that require custom scripts before launch or custom launch parameters process_launcher-flags
if [[ "$game" =~ dragon-pong ]]; then custom_launch_parameters
"${0%/*}/speech/speak_window_title.sh" DragonPong.exe & ${wine:-wine} start /d "${game[1]%\\*}" "${game[1]##*\\}" /realtime
pushd "$(winepath "$winePath")"
wine "$wineExec"
popd
exit 0
fi
if [[ "$game" =~ executioner\'s ]]; then
find "${WINEPREFIX}/drive_c/Program Files" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
fi
if [[ "$game" =~ haunted-party ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ laser-breakout ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
"${0%/*}/speech/speak_window_title.sh" play.exe &
fi
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" =~ oh-shit ]]; then
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" =~ bokurano-daibouken-3 ]]; then
dictPath="$(winepath "${winePath}")"
if [[ -r "${cache}/bk3-dict.dat" ]] && [[ ! -d "${dictPath}/dict" ]]; then
cp "${cache}/bk3-dict.dat" "${dictPath}/dict.dat"
fi
if [[ -d "${dictPath}/dict" ]]; then
if [[ ! -e "${dictPath}/data/nvdaControllerClient.dll" ]]; then
cp "${cache}/nvda2speechd32.dll" "${dictPath}/data/nvdaControllerClient.dll"
fi
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ ! -d "${dictPath}/dict" ]] && [[ ! -r "${cache}/bk3-dict.dat" ]]; then
find "${WINEPREFIX}/drive_c/nyanchangame/bk3" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken3 &
fi
fi
if [[ "$game" =~ bop-it-emulator ]]; then
"${0%/*}/speech/speak_window_title.sh" bop.exe &
fi
if [[ "$game" =~ breu2-shadow-hunt ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ road-to-rage\| ]]; then
"${0%/*}/speech/speak_window_title.sh" trtr.exe &
fi
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
fi
if [[ "$game" =~ audioquake ]]; then
wine "$winePath\\$wineExec"
exit 0
fi
if [[ "$game" =~ screaming-strike-2 ]]; then
pushd "$(winepath "$winePath")"
${wine} "$wineExec"
popd
exit 0
fi
if [[ "$game" =~ warsim ]]; then
pushd "$(winepath "$winePath")"
wine "$wineExec"
popd
exit 0
fi
if [[ "$game" =~ interceptor ]]; then
pushd "$(winepath "$winePath")"
wine "$wineExec"
popd
exit 0
fi
if [[ "$game" =~ vip-mud ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
# switch to wine64 for 64 bit prefix.
[[ "${wine}" == "wine" ]] && export wine="wine64"
fi
if [[ "$game" =~ the-great-toy-robbery ]] ; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
${wine:-wine} start /d "${winePath}" "$wineExec" /realtime
fi fi
exit 0 exit 0
} }
@ -1004,6 +1053,11 @@ game_launcher() {
add_launcher() { add_launcher() {
local launchSettings="${game,,}" local launchSettings="${game,,}"
launchSettings="${launchSettings//[[:space:]]/-}|${1}|${game}" launchSettings="${launchSettings//[[:space:]]/-}|${1}|${game}"
shift
while [[ $# -gt 0 ]]; do
launchSettings+="|$1"
shift
done
if ! grep -F -q -x "${launchSettings}" "${configFile}" 2> /dev/null ; then if ! grep -F -q -x "${launchSettings}" "${configFile}" 2> /dev/null ; then
echo "${launchSettings}" >> "${configFile}" echo "${launchSettings}" >> "${configFile}"
sort -o "${configFile}" "${configFile}" sort -o "${configFile}" "${configFile}"
@ -1062,6 +1116,7 @@ unset manualInstall
unset version unset version
# ipfs gateway # ipfs gateway
export ipfsGateway="${ipfsGateway:-https://gateway.pinata.cloud}" export ipfsGateway="${ipfsGateway:-https://gateway.pinata.cloud}"
export nvdaControllerClientDll="${ipfsGateway}/ipfs/QmWu7YdSbKMk1Qm5DKvEA5hk1YuAK8wVkwhDf2CsmPkmF1?filename=nvdaControllerClient32.dll"
# The list of games available for installation. # The list of games available for installation.
@ -1074,6 +1129,7 @@ gameList=(
"Angel Gift" "Angel Gift"
"AudioDisc" "AudioDisc"
"AudioQuake" "AudioQuake"
"Balatro"
"Battlefield 2D" "Battlefield 2D"
"Battle of the Hunter" "Battle of the Hunter"
"Battle Zone" "Battle Zone"
@ -1136,6 +1192,7 @@ gameList=(
"Castaways" "Castaways"
"Castaways 2" "Castaways 2"
"Challenge of the Horse" "Challenge of the Horse"
"Change Reaction"
"Chillingham" "Chillingham"
#"Chopper Challenge" #"Chopper Challenge"
"Christmas Chaos" "Christmas Chaos"
@ -1230,6 +1287,7 @@ gameList=(
"Sarah and the Castle of Witchcraft and Wizardry" "Sarah and the Castle of Witchcraft and Wizardry"
"Scramble!" "Scramble!"
"Screaming Strike 2" "Screaming Strike 2"
"Scrolling Battles"
"Sketchbook" "Sketchbook"
"Sequence Storm" "Sequence Storm"
#"Shades of Doom 1.2" #"Shades of Doom 1.2"
@ -1237,11 +1295,13 @@ gameList=(
"Shadow Line" "Shadow Line"
"Shooter" "Shooter"
"Silver Dollar" "Silver Dollar"
"Simple Fighter"
"Skateboarder Pro" "Skateboarder Pro"
"Slender Lost Vision" "Slender Lost Vision"
"Sonic the Hedgehog" "Sonic the Hedgehog"
"Sonic Zoom" "Sonic Zoom"
#"Space Defender" #"Space Defender"
#"Star Treck Final Conflict"
"Super Deekout" "Super Deekout"
"Super Dogs Bone Hunt" "Super Dogs Bone Hunt"
"Super Egg Hunt" "Super Egg Hunt"
@ -1285,7 +1345,7 @@ for i in curl sox wine winetricks ; do
fi fi
done done
# Get latest news if available # Get latest news if available
#check_news check_news
# With no arguments, open the game launcher. # With no arguments, open the game launcher.
if [[ $# -eq 0 ]]; then if [[ $# -eq 0 ]]; then
game_launcher game_launcher
@ -1357,7 +1417,7 @@ done
# Install game based on the selection above. # Install game based on the selection above.
case "${game}" in case "${game}" in
"A Hero's Call") "A Hero's Call")
download "https://blindgamers.com/downloads/a-heros-call-freeware.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll" download "https://blindgamers.com/downloads/a-heros-call-freeware.zip" "${nvdaControllerClientDll}"
export winVer="win7" export winVer="win7"
export winetricksSettings="vd=1024x768" export winetricksSettings="vd=1024x768"
install_wine_bottle speechsdk corefonts install_wine_bottle speechsdk corefonts
@ -1383,9 +1443,12 @@ case "${game}" in
;; ;;
"Alien Outback") "Alien Outback")
download "http://download.dracoent.com/Windows/classic/AOSetup.exe" download "http://download.dracoent.com/Windows/classic/AOSetup.exe"
export bottle="draconis"
export winVer="win7" export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk quartz install_wine_bottle vb6run dx8vb speechsdk quartz
wine "${cache}/AOSetup.exe" /sp- /silent cp -v "${cache}/AOSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/AOSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/AOSetup.exe"
# warning warning warning: Do not change location, or installer will not function. # warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang. # FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20 winetricks -q dotnet20
@ -1415,6 +1478,26 @@ download "https://erion.cf/files/ag_103.zip"
echo "After you launch the game, press tab then enter and it should begin speaking." echo "After you launch the game, press tab then enter and it should begin speaking."
alert alert
;; ;;
"Balatro")
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll" "https://stormgames.wolfe.casa/downloads/Tolk.dll" "https://github.com/Aurelius7309/BlackHole/releases/download/0.3.1/BlackHole-Release.zip"
export WINEARCH=win64
export winVer="win10"
install_wine_bottle
get_steam "2379780" "https://store.steampowered.com/app/2379780/Balatro/"
mkdir -p "$WINEPREFIX/drive_c/users/$USER/AppData/Roaming/Balatro/Mods"
unzip -d "$WINEPREFIX/drive_c/users/$USER/AppData/Roaming/Balatro" "$cache/BlackHole-Release.zip"
pushd "$WINEPREFIX/drive_c/users/$USER/AppData/Roaming/Balatro/Mods"
(cat mod_urls.txt ; echo) | while read -r x ; do
git clone "$x"
done
cp -v BlackHole/bin/*.dll "$WINEPREFIX/drive_c/Program Files/Balatro"
cp -v "$cache/Tolk.dll" "$WINEPREFIX/drive_c/Program Files/Balatro/tolk.dll"
cp -v "$cache/Tolk.dll" BlackHole/bin/tolk.dll
cp -v "$cache/nvda2speechd64.dll" "$WINEPREFIX/drive_c/Program Files/Balatro/nvdaControllerClient64.dll"
cp -v "$cache/nvda2speechd64.dll" BlackHole/bin/nvdaControllerClient64.dll
cp -v ../version.dll "$WINEPREFIX/drive_c/Program Files/Balatro"
add_launcher 'c:\Program Files\Balatro\Balatro.exe' 'export WINEDLLOVERRIDES=version=n,b'
;;
"Battlefield 2D") "Battlefield 2D")
get_installer "bf.zip" "https://tunmi13.itch.io/battlefield-2d" get_installer "bf.zip" "https://tunmi13.itch.io/battlefield-2d"
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll" download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll"
@ -1866,7 +1949,7 @@ download "https://erion.cf/files/ag_103.zip"
add_launcher "c:\Program Files\bomvercats\game.exe" add_launcher "c:\Program Files\bomvercats\game.exe"
;; ;;
"Breed Memorial") "Breed Memorial")
download "https://hirotaka2014.sakura.ne.jp/mh0406/game/breed_memorial.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll" download "https://hirotaka2014.sakura.ne.jp/mh0406/game/breed_memorial.zip" "${nvdaControllerClientDll}"
export winVer="win7" export winVer="win7"
install_wine_bottle cjkfonts speechsdk install_wine_bottle cjkfonts speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/breed_memorial.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/breed_memorial.zip"
@ -1900,6 +1983,20 @@ download "https://erion.cf/files/ag_103.zip"
find "${WINEPREFIX}" -type f -name "nvdaControllerClient32.dll" -exec rm -fv "{}" \; find "${WINEPREFIX}" -type f -name "nvdaControllerClient32.dll" -exec rm -fv "{}" \;
add_launcher "c:\Program Files\\${game}\game.exe" add_launcher "c:\Program Files\\${game}\game.exe"
;; ;;
"Change Reaction")
download "https://download.dracoent.com/Windows/ChangeReactionSetup.exe"
export bottle="draconis"
export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/ChangeReactionSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/ChangeReactionSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/ChangeReactionSetup.exe"
# warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20
wineserver -k # Damn you, dotnet.
add_launcher "c:\Program Files\Draconis Entertainment\Change Reaction\ChangeReactionGui.exe"
;;
"Chillingham") "Chillingham")
download "https://stormgames.wolfe.casa/downloads/chillingham.zip" download "https://stormgames.wolfe.casa/downloads/chillingham.zip"
install_wine_bottle vb6run mfc42 install_wine_bottle vb6run mfc42
@ -1988,12 +2085,14 @@ download "https://erion.cf/files/ag_103.zip"
add_launcher "c:\Program Files\copter mission\game.exe" add_launcher "c:\Program Files\copter mission\game.exe"
;; ;;
"Crazy Party") "Crazy Party")
export winVer="win7" export WINEARCH=win64
download "${ipfsGateway}/ipfs/QmZPsVdizDW6nrNj9czPTctAomYxafs7SYRw6YjqxPidvn?filename=Crazy-Party-beta78.zip" export winVer="win8"
install_wine_bottle speechsdk download "http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta82.zip" "https://stormgames.wolfe.casa/downloads/Tolk.dll" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll"
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/Crazy-Party-beta78.zip" install_wine_bottle
add_launcher "c:\Program Files\Crazy-Party-beta78\Crazy Party.exe" unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/Crazy-Party-beta82.zip"
rm -f "${WINEPREFIX}/drive_c/Program Files/Crazy-Party-beta78/nvdaControllerClient32.dll" find "${WINEPREFIX}" -type f -name 'Tolk.dll' -exec cp -v "${cache}/Tolk.dll" "{}" \;
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
add_launcher "c:\Program Files\Crazy-Party-beta82\Crazy Party.exe"
;; ;;
"Crazy Tennis") "Crazy Tennis")
download "https://www.agarchive.net/games/VIP/crazy%20tennis%20setup.exe" download "https://www.agarchive.net/games/VIP/crazy%20tennis%20setup.exe"
@ -2095,9 +2194,12 @@ download "https://erion.cf/files/ag_103.zip"
;; ;;
"DynaMan") "DynaMan")
export winVer="win7" export winVer="win7"
export bottle="draconis"
download "http://download.dracoent.com/Windows/classic/DMSetup.exe" download "http://download.dracoent.com/Windows/classic/DMSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz install_wine_bottle vb6run dx8vb speechsdk quartz
wine "${cache}/DMSetup.exe" /sp- /silent cp -v "${cache}/DMSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/DMSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/DMSetup.exe"
# warning warning warning: Do not change location, or installer will not function. # warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang. # FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20 winetricks -q dotnet20
@ -2149,10 +2251,12 @@ download "https://erion.cf/files/ag_103.zip"
;; ;;
"ESP Pinball Classic") "ESP Pinball Classic")
export winVer="win7" export winVer="win7"
export bottle="esp-pinball" export bottle="draconis"
download "http://download.dracoent.com/Windows/classic/PBCSetup.exe" download "http://download.dracoent.com/Windows/classic/PBCSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz install_wine_bottle vb6run dx8vb speechsdk quartz
wine "${cache}/PBCSetup.exe" /sp- /silent cp -v "${cache}/PBCSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/PBCSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/PBCSetup.exe"
# warning warning warning: Do not change location, or installer will not function. # warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang. # FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20 winetricks -q dotnet20
@ -2161,10 +2265,12 @@ download "https://erion.cf/files/ag_103.zip"
;; ;;
"ESP Pinball Extreme") "ESP Pinball Extreme")
export winVer="win7" export winVer="win7"
export bottle="esp-pinball" export bottle="draconis"
download "http://download.dracoent.com/Windows/classic/PBXSetup.exe" download "http://download.dracoent.com/Windows/classic/PBXSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz install_wine_bottle vb6run dx8vb speechsdk quartz
wine "${cache}/PBXSetup.exe" /sp- /silent cp -v "${cache}/PBXSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/PBXSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/PBXSetup.exe"
# warning warning warning: Do not change location, or installer will not function. # warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang. # FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20 winetricks -q dotnet20
@ -2173,15 +2279,17 @@ download "https://erion.cf/files/ag_103.zip"
;; ;;
"ESP Pinball Party Pack") "ESP Pinball Party Pack")
export winVer="win7" export winVer="win7"
export bottle="esp-pinball" export bottle="draconis"
export WINEPREFIX="$HOME/.local/wine/esp-pinball" export WINEPREFIX="$HOME/.local/wine/draconis"
# Only works in conjunction with esp pinball extreme. # 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 if ! [ -f "$HOME/.local/wine/$bottle/drive_c/Program Files/Draconis Entertainment/ESP Pinball Xtreme/pbx.exe" ] ; then
echo "Error: You need to install ESP Pinball Extreme first to use this game. Please do so before continuing." >&2 echo "Error: You need to install ESP Pinball Extreme first to use this game. Please do so before continuing." >&2
exit 1 exit 1
fi fi
download "http://download.dracoent.com/Windows/classic/PP1Setup.exe" download "http://download.dracoent.com/Windows/classic/PP1Setup.exe"
wine "${cache}/PP1Setup.exe" /sp- /silent cp -v "${cache}/PP1Setup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/PP1Setup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/PP1Setup.exe"
add_launcher "c:\Program Files\Draconis Entertainment\ESP Pinball Xtreme\pbx.exe" add_launcher "c:\Program Files\Draconis Entertainment\ESP Pinball Xtreme\pbx.exe"
;; ;;
"Eurofly") "Eurofly")
@ -2562,9 +2670,12 @@ EOF
;; ;;
"Monkey Business") "Monkey Business")
export winVer="win7" export winVer="win7"
export bottle="draconis"
download "http://download.dracoent.com/Windows/classic/MBSetup.exe" download "http://download.dracoent.com/Windows/classic/MBSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz install_wine_bottle vb6run dx8vb speechsdk quartz
wine "${cache}/MBSetup.exe" /sp- /silent cp -v "${cache}/MBSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/MBSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/MBSetup.exe"
# warning warning warning: Do not change location, or installer will not function. # warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang. # FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20 winetricks -q dotnet20
@ -2604,7 +2715,7 @@ EOF
"Oh Shit") "Oh Shit")
export winVer="win7" export winVer="win7"
export norh="true" # Requires sapi even though uses nvda export norh="true" # Requires sapi even though uses nvda
download "${ipfsGateway}/ipfs/QmQnAJJrt5uABFziQc7enXYrJ74J9GKQSMi8Ry8ebsxfPV?filename=OhShit.zip" "https://stormgames.wolfe.casa/downloads/nvda2speechd32.dll" download "${ipfsGateway}/ipfs/QmQnAJJrt5uABFziQc7enXYrJ74J9GKQSMi8Ry8ebsxfPV?filename=OhShit.zip" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd32.dll"
install_wine_bottle speechsdk install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/OhShit.zip" unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/OhShit.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvda2speechd32.dll" "{}" \; find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvda2speechd32.dll" "{}" \;
@ -2773,7 +2884,7 @@ EOF
"Rhythm Rage") "Rhythm Rage")
export bottle="oriol-gomez" export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
download "http://oriolgomez.com/games/rr_en.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll" download "http://oriolgomez.com/games/rr_en.zip" "${nvdaControllerClientDll}"
install_wine_bottle speechsdk install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/rhythm rage" "${cache}/rr_en.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/rhythm rage" "${cache}/rr_en.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \; find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
@ -2808,7 +2919,7 @@ EOF
;; ;;
"RS Games") "RS Games")
export version="7.0" export version="7.0"
download "http://rsgames.org/rsdownloads/rsgclient/rsgames-client-setup-2.01.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll" download "http://rsgames.org/rsdownloads/rsgclient/rsgames-client-setup-2.01.exe" "${nvdaControllerClientDll}"
install_wine "$version" "32" install_wine "$version" "32"
export winVer="win7" export winVer="win7"
install_wine_bottle speechsdk install_wine_bottle speechsdk
@ -2826,7 +2937,7 @@ EOF
;; ;;
"Sammy Center") "Sammy Center")
export winVer="win7" export winVer="win7"
download "http://www.samtupy.com/games/SCSetup.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll" download "http://www.samtupy.com/games/SCSetup.exe" "${nvdaControllerClientDll}"
install_wine_bottle speechsdk install_wine_bottle speechsdk
wine "${cache}/SCSetup.exe" /silent wine "${cache}/SCSetup.exe" /silent
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \; find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
@ -2842,7 +2953,7 @@ EOF
"Scramble!") "Scramble!")
winetricksSettings="vd=1024x768" winetricksSettings="vd=1024x768"
export winVer="win7" export winVer="win7"
download "https://stevend.net/downloads/scramble_win32.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll" download "https://stevend.net/downloads/scramble_win32.zip" "${nvdaControllerClientDll}"
install_wine_bottle speechsdk install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/scramble_win32.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/scramble_win32.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \; find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
@ -2851,7 +2962,7 @@ EOF
"Screaming Strike 2") "Screaming Strike 2")
export bottle="nyanchan" export bottle="nyanchan"
export winVer="win7" export winVer="win7"
download "https://www.nyanchangames.com/softs/screamingStrike2.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll" download "https://www.nyanchangames.com/softs/screamingStrike2.exe" "${nvdaControllerClientDll}"
install_wine_bottle fakejapanese speechsdk install_wine_bottle fakejapanese speechsdk
wine "${cache}/screamingStrike2.exe" & wine "${cache}/screamingStrike2.exe" &
xdotool sleep 10 key Return xdotool sleep 10 key Return
@ -2859,9 +2970,19 @@ EOF
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \; find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
add_launcher "c:\nyanchangame\Screaming Strike 2\play.exe" add_launcher "c:\nyanchangame\Screaming Strike 2\play.exe"
;; ;;
"Scrolling Battles")
export WINEARCH=win64
export winVer="win7"
get_installer "sbrw-win.zip" "https://masonasons.itch.io/sbrw"
download "https://stormgames.wolfe.casa/downloads/Tolk.dll"
install_wine_bottle
unzip -d "$WINEPREFIX/drive_c/Program Files/sbrw" "${cache}/sbrw-win.zip"
find "${WINEPREFIX}" -type f -name 'Tolk.dll' -exec cp -v "${cache}/Tolk.dll" "{}" \;
add_launcher "c:\Program Files\sbrw\sb.exe"
;;
"Sketchbook") "Sketchbook")
export winVer="win7" export winVer="win7"
download "http://sbyw.games/SBYW/SBYW.zip" "http://sbyw.games/SBYW/sounds.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll" download "http://sbyw.games/SBYW/SBYW.zip" "http://sbyw.games/SBYW/sounds.zip" "${nvdaControllerClientDll}"
install_wine_bottle speechsdk install_wine_bottle speechsdk
mv -v "${cache}/sounds.zip" "${cache}/SBYW-sounds.zip" 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.zip"
@ -2894,7 +3015,7 @@ EOF
;; ;;
"Shadow Line") "Shadow Line")
export version="7.7" export version="7.7"
download "https://www.mm-galabo.com/sr/Download_files_srfv/shadowrine_fullvoice3.171.exe" 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" install_wine "$version" "32"
export winVer="win8" export winVer="win8"
install_wine_bottle install_wine_bottle
@ -2908,19 +3029,44 @@ EOF
xdotool key --clearmodifiers --delay=500 space xdotool key --clearmodifiers --delay=500 space
xdotool key --clearmodifiers --delay=500 alt+f xdotool key --clearmodifiers --delay=500 alt+f
${wine}server -w ${wine}server -w
mv -v "${cache}/language_en.dat" "${WINEPREFIX}/drive_c/Program Files/GalaxyLaboratory/ShadowRine_FullVoice/SystemData/language_en.dat"
add_launcher "c:\Program Files\GalaxyLaboratory\ShadowRine_FullVoice\play_sr.exe" add_launcher "c:\Program Files\GalaxyLaboratory\ShadowRine_FullVoice\play_sr.exe"
echo "Please set the language to English when the game opens."
echo "Go to options and press enter."
echo "Press down arrow 5 times and press enter."
echo "Press down arrow 1 time and press enter."
echo "Press up arrow 2 times and press enter."
echo "If everything worked as expected you should be back on the game menu and speech should work."
alert
;; ;;
"Silver Dollar") "Silver Dollar")
export winVer="win7" export winVer="win7"
export bottle="draconis"
download "http://download.dracoent.com/Windows/SilverDollarSetup.exe" download "http://download.dracoent.com/Windows/SilverDollarSetup.exe"
install_wine_bottle speechsdk install_wine_bottle speechsdk
wine "${cache}/SilverDollarSetup.exe" /silent cp -v "${cache}/SilverDollarSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/SilverDollarSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/SilverDollarSetup.exe"
# warning warning warning: Do not change location, or installer will not function. # warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet40 by itself so it actually doesn't hang. # FIXME: Hacky, but it works. Install dotnet40 by itself so it actually doesn't hang.
DISPLAY="" winetricks -q dotnet40 DISPLAY="" winetricks -q dotnet40
wineserver -k # Damn you, dotnet. wineserver -k # Damn you, dotnet.
add_launcher "c:\Program Files\Draconis Entertainment\Silver Dollar\SilverDollarGui.exe" add_launcher "c:\Program Files\Draconis Entertainment\Silver Dollar\SilverDollarGui.exe"
;; ;;
"Simple Fighter")
export WINEARCH=win64
export winVer="win7"
get_installer "simple fighter.exe" "https://tsatria03.itch.io/simple-fighter"
if [[ ! -r "${cache}/simple-fighter-sounds.7z" ]] && [[ ! -r "${cache}/sounds.7z" ]]; then
get_installer "sounds.7z" "https://tsatria03.itch.io/simple-fighter"
mv "${cache}/sounds.7z" "${cache}/simple-fighter-sounds.7z"
fi
install_wine_bottle
7z x -o"$WINEPREFIX/drive_c/Program Files/simple fighter" "${cache}/simple fighter.exe"
7z x -o"$WINEPREFIX/drive_c/Program Files/simple fighter/sounds" "${cache}/simple-fighter-sounds.7z"
find "${WINEPREFIX}/drive_c/Program Files/bf" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
add_launcher "c:\Program Files\simple fighter\game.exe"
;;
"Slender Lost Vision") "Slender Lost Vision")
export winVer="win7" export winVer="win7"
download "https://www.iamtalon.me/games/slender.zip" download "https://www.iamtalon.me/games/slender.zip"
@ -2970,6 +3116,12 @@ EOF
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/space_defender.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/space_defender.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvdaControllerClient64.dll" "{}" \; find "${WINEPREFIX}" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvdaControllerClient64.dll" "{}" \;
add_launcher "c:\Program Files\space_defender\sdefender.exe" add_launcher "c:\Program Files\space_defender\sdefender.exe"
;;
"Star Treck Final Conflict")
download "https://agarchive.net/games/USA/star%20trek%20final%20conflict%20Setup.exe"
install_wine_bottle speechsdk
wine "${cache}/star trek final conflict Setup.exe" /silent
add_launcher "c:\Program Files\USA Games\Final Conflict\stfc.exe"
;; ;;
"Super Deekout") "Super Deekout")
export bottle=dan-z export bottle=dan-z
@ -3090,9 +3242,12 @@ EOF
;; ;;
"Ten Pin Alley") "Ten Pin Alley")
export winVer="win7" export winVer="win7"
export bottle="draconis"
download "http://download.dracoent.com/Windows/classic/TPAXPSetup.exe" download "http://download.dracoent.com/Windows/classic/TPAXPSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz install_wine_bottle vb6run dx8vb speechsdk quartz
wine "${cache}/TPAXPSetup.exe" /sp- /silent cp -v "${cache}/TPAXPSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/TPAXPSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/TPAXPSetup.exe"
#winetricks -q msdxmocx # I think having this installed first breaks things. #winetricks -q msdxmocx # I think having this installed first breaks things.
# warning warning warning: Do not change location, or installer will not function. # warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang. # FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
@ -3267,9 +3422,12 @@ export norh=false # Must install a voice, and rhvoice works easily with 64 bit.
;; ;;
"Ultimate SounDoku") "Ultimate SounDoku")
export winVer="win7" export winVer="win7"
export bottle="draconis"
download "http://download.dracoent.com/Windows/classic/USSetup.exe" download "http://download.dracoent.com/Windows/classic/USSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz install_wine_bottle vb6run dx8vb speechsdk quartz
wine "${cache}/USSetup.exe" /sp- /silent cp -v "${cache}/USSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/USSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/USSetup.exe"
# warning warning warning: Do not change location, or installer will not function. # warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang. # FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20 winetricks -q dotnet20
@ -3278,7 +3436,7 @@ export norh=false # Must install a voice, and rhvoice works easily with 64 bit.
;; ;;
"Undead Assault") "Undead Assault")
export winVer="win7" export winVer="win7"
download "http://undead-assault.com/static/files/public/undead_assault.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll" download "http://undead-assault.com/static/files/public/undead_assault.zip" "${nvdaControllerClientDll}"
install_wine_bottle speechsdk install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/undead_assault" "${cache}/undead_assault.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/undead_assault" "${cache}/undead_assault.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \; find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;

View File

@ -37,16 +37,37 @@
# Works which are defined in the CPAL as a work which combines Covered Code # Works which are defined in the CPAL as a work which combines Covered Code
# or portions thereof with code not governed by the terms of the CPAL. # or portions thereof with code not governed by the terms of the CPAL.
newVersion=82
WINEPREFIX="${XDG_DATA_HOME:-$HOME/.local}/wine/crazy-party"
oldVersion=$(find ~/.local/wine/crazy-party -type d -name 'Crazy-Party-beta*' | tr -cd '[:digit:]')
cache="${XDG_CACHE_HOME:-$HOME/.cache}/audiogame-manager" cache="${XDG_CACHE_HOME:-$HOME/.cache}/audiogame-manager"
configFile="${XDG_CONFIG_HOME:-$HOME/.config}/storm-games/audiogame-manager/games.conf" configFile="${XDG_CONFIG_HOME:-$HOME/.config}/storm-games/audiogame-manager/games.conf"
url="http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta78.zip"
(rm -v "${cache}/Crazy-Party-beta77.zip" if [[ $oldVersion -le 78 ]]; then
wget -O "${cache}/Crazy-Party-beta78.zip" "$url" || { echo "Could not download file."; exit 1; } echo "Crazy party has to be reinstalled because it is now a 64 bit application."
unzip -DDod "$HOME/.local/wine/crazy-party/drive_c/Program Files" "${cache}/Crazy-Party-beta78.zip" echo "Please run audiogame-manager -r to remove the old version."
rm -fv "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta78/nvdaControllerClient32.dll" echo "You can then install it again with audiogame-manager -i"
sed -i 's/Crazy-Party-beta77/Crazy-Party-beta78/' "$configFile" echo "Don't forget to make a backup of your save.bin file, custom card decks, and custom game lists."
mv -v "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta77/save.bin" "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta78/" find "${WINEPREFIX}/drive_c/Program Files" -type f -name 'save.bin' 2> /dev/null
cp -ruv "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta77/"* "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta78/" 2> /dev/null find "${WINEPREFIX}/drive_c/Program Files" -type d -name 'deck' 2> /dev/null
rm -rf "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta77/") | dialog --progressbox "updating Crazy Party, please wait..." -1 -1 find "${WINEPREFIX}/drive_c/Program Files" -type d -name 'game' 2> /dev/null
fi
if [[ $oldVersion -eq $newVersion ]]; then
echo "Crazy Party is up to date."
exit 0
fi
url="http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta${newVersion}.zip"
(rm -v "${cache}/Crazy-Party-beta${oldVersion}.zip"
wget -O "${cache}/Crazy-Party-beta${newVersion}.zip" "$url" || { echo "Could not download file."; exit 1; }
unzip -DDod "${WINEPREFIX}/drive_c/Program Files" "${cache}/Crazy-Party-beta${newVersion}.zip"
find "${WINEPREFIX}" -type f -name 'Tolk.dll' -exec cp -v "${cache}/Tolk.dll" "{}" \;
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
sed -i "s/Crazy-Party-beta${oldVersion}/Crazy-Party-beta${newVersion}/" "$configFile"
cp -v "${WINEPREFIX}/drive_c/Program Files/Crazy-Party-beta${oldVersion}/save.bin" "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta${newVersion}/"
cp -ruv "${WINEPREFIX}/drive_c/Program Files/Crazy-Party-beta${oldVersion}/"* "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta${newVersion}/" 2> /dev/null
rm -rf "${WINEPREFIX}/drive_c/Program Files/Crazy-Party-beta${oldVersion}/") | dialog --progressbox "updating Crazy Party, please wait..." -1 -1
exit 0 exit 0