299 Commits

Author SHA1 Message Date
Storm Dragon 92745d8af8 Fix Shadow Line translation line endings 2026-05-05 02:58:12 -04:00
Storm Dragon 1f977bb1f4 Add UMU Proton backend for Shadow Line 2026-05-05 02:58:12 -04:00
Storm Dragon 53d8c10645 Plan UMU Proton backend implementation 2026-05-05 02:58:12 -04:00
Storm Dragon b58681964c Document UMU Proton backend design 2026-05-05 02:58:12 -04:00
lilmike 2abf445637 Fix error installing mtga if a previous game was using win xp. 2026-05-02 16:57:54 -07:00
lilmike c0e6c37f1a Add Magic: the Gathering Arena 2026-05-02 13:03:40 -07:00
Storm Dragon 856415c22f Forgot the shellcheck statement. 2026-04-23 13:34:38 -04:00
Storm Dragon 7ddd7cbac4 Judgement Day download link updated. 2026-04-23 13:32:37 -04:00
Storm Dragon 951fa7c1ba Update alert function messaging
Show the actual guidance in a single acknowledgement dialog instead of a generic OK prompt, and update alert-based installer instructions to use the new helper contract.
2026-03-02 23:01:50 -05:00
Storm Dragon f9394f90c9 To comment out a game, it's now #// on the first line. Updated executioner's rage and hopefully fixed new keyboard problems. 2026-02-22 14:30:23 -05:00
Storm Dragon 1fd3fcd21f Updated shabang for dependency installation scripts. 2026-02-18 15:19:13 -05:00
abolfazl ebrahimi cf1377d9e8 Added Linux Mint dependency installer script. 2026-02-18 15:16:19 -05:00
Storm Dragon 528ee7cd56 Added game Chopper Challenge. 2026-02-03 20:45:00 -05:00
Storm Dragon 9ebb52f48f Fix directory permissions in Shooter RW. 2026-01-12 17:52:51 -05:00
Storm Dragon 9d4e9b9a7f Shooter RW added. 2026-01-12 16:23:39 -05:00
Storm Dragon 0c8a749240 Added support for cthulhu's window reader plugin. 2026-01-12 11:52:07 -05:00
Storm Dragon 876d787e0a Menu items are alphabetized again. 2026-01-09 19:40:17 -05:00
Storm Dragon a4f0dcae36 Documentation and launching much nicer now when using the yad interface. 2026-01-09 12:24:08 -05:00
Storm Dragon 1c1046c43b Reorganized ipfs making it easier to update. 2026-01-08 14:54:01 -05:00
Storm Dragon 4c3b5ee468 Updated CLAUDE.md so hopefully games to not get commented out any more. 2026-01-07 22:09:30 -05:00
Storm Dragon 20ecf59c91 Fixed games that had some how picked up comments on the top of the file thus disabling them in the menu. 2026-01-07 22:04:10 -05:00
Storm Dragon 02a44ddfca Super Egg Hunt installer updated. 2026-01-07 21:25:09 -05:00
Storm Dragon 30ca433ae8 Fixed BK3. 2026-01-06 21:37:10 -05:00
Storm Dragon 6911ab9c1a Merge branch 'testing' 2026-01-06 18:40:52 -05:00
Storm Dragon adc56f0229 Fixed more game installers. 2026-01-05 22:40:49 -05:00
Storm Dragon 8ac756c758 Several game fixes. 2026-01-05 21:56:01 -05:00
Storm Dragon 79bdb65e25 Updated a lot of 32 bit game file paths. 2026-01-05 01:29:42 -05:00
Storm Dragon 733b901927 Fixed installer for RS Games and Battle Zone. 2026-01-05 01:16:01 -05:00
Storm Dragon a6c54bb158 Initial support for the cthulhu2speechd plugin added. 2026-01-04 21:45:50 -05:00
Storm Dragon c1f2e47e28 Game "Axel Pong" added. 2026-01-03 02:17:50 -05:00
Storm Dragon f22fc69438 Merge branch 'testing' 2025-12-24 02:08:26 -05:00
hjozwiak 27223b47ce Disable Shadow Line.
Between Billy and I we can't figure out why it's not working.
2025-12-16 19:41:58 -05:00
hjozwiak 825d74460b Fix things so that the global version of Wine isn't trampled over.
The specific version of wine can be set in the registry for each
app. Also, add fakejapanese to the Shadow Line installation, though it
is still shitting the bed.
2025-12-08 23:32:51 -05:00
hjozwiak d97f9aa4c5 Use flags for installing Shadow Line.
It is an innosetup installer, so you can use those flags. You'll still
get the boxes but the automation does work.
2025-12-08 05:58:12 -05:00
Storm Dragon 2908a031c6 Merge branch 'testing' of ssh://git.stormux.org:1101/storm/audiogame-manager into testing 2025-12-08 05:05:01 -05:00
Storm Dragon 55ca53cba6 Updated set-voice because we no longer need variable for se and grep, we also save everything thus far in the same bottle so no need for bottle select. Small test shows it working. 2025-12-08 05:04:46 -05:00
hjozwiak cdd464ab47 Fix Mistworld.
It was hardcoded to have a 32-bit prefix; whoops.
2025-12-08 02:51:25 -05:00
Storm Dragon 20e55ddc4e Started needed updates on shadow line, very much borken. 2025-12-08 02:50:39 -05:00
Storm Dragon 710d430d25 Updated Itchensinc Games, make sure Villians from Beyond works. Had Claud update its notes on what I did. 2025-12-07 14:35:48 -05:00
hjozwiak be3df8f9ca Eliminate wine32 entirely: migrate all games to wine64 with WINETRICKS_FORCE=1
BREAKTHROUGH: Discovered that WINETRICKS_FORCE=1 enables reliable speechsdk
installation in wine64+WOW64, eliminating the need for wine32 bottle.

**Wine Architecture:**
- Removed wine32 bottle creation completely (deleted 58 lines)
- Disabled check_wine32() call - no more PlayOnLinux wine32 downloads
- All games now use unified wine64 bottle with WOW64 for 32-bit apps
- Updated architecture selection to always default to wine64

**SAPI Support:**
- wine64 bottle now includes speechsdk via WINETRICKS_FORCE=1
- Microsoft Mike configured as default SAPI voice in wine64
- Both wine32 and wine64 bottle creation use WINETRICKS_FORCE=1
- Updated bottle.sh to recognize 'sapi' dependency (alongside legacy 'speechsdk')

**Game Migration (57 games):**
- Migrated all 51 BG Enterprise games to wine64
- Migrated 3 Bokurano Daibouken games to wine64
- Migrated Swamp, Dreamland, Mist World to wine64
- Migrated 8 SAPI-dependent games to wine64:
  * Bloodshed - TESTED, confirmed working
  * Dog Who Hates Toast - TESTED, confirmed working (VB6+SAPI validated)
  * Skateboarder Pro - TESTED, confirmed working
  * Lunimals, VIP Mud, Oh Shit, Entombed, Three D velocity

**Files Modified:**
- audiogame-manager.sh: Removed wine32 creation, added wine64 speechsdk
- .includes/bottle.sh: Simplified architecture logic, always wine64
- CLAUDE.md: Updated documentation to reflect wine32 elimination
- 57 game installers: Changed WINEARCH from win32 to win64

 Bloodshed: wine64 SAPI works perfectly
 Dog Who Hates Toast: wine64 VB6+SAPI confirmed working
 Skateboarder Pro: wine64 NVDA works perfectly

- WOW64 allows wine64 to run 32-bit apps efficiently
- nvdaControllerClient DLL update logic preserved for 32-bit apps
- Uses 'file' command to detect PE32 vs PE32+ and apply correct DLL version
- Clipboard translator for Bokurano games works with wine64 (requires reinstall)

- Simplified architecture: one bottle instead of two
- Eliminated wine32 download/management overhead
- All games benefit from modern wine64 improvements
- SAPI now works reliably via WINETRICKS_FORCE=1

🚀 Wine32 completely eliminated. All games use wine64.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-06 23:16:42 -05:00
Storm Dragon 6a16e595a9 Skip update checks if in detached state. Lesson learned from 2025 tag. 2025-11-23 20:15:34 -05:00
Storm Dragon a6de1ac9c9 Major rewrite. Audiogame-manager has drastically changed. To stay on the old code check out 2025. This requires a reinstall of games, and games will hence forth be installed in to ~/.local/wine64 or ~/.local/wine32.
This is likely to contain more bugs than I like for releases. It is as well tested as my small team and I can make it. I do expect people will find plenty of bugs, and we will work to resolve them as they are reported.
2025-11-14 16:02:52 -05:00
Storm Dragon 0a22d007de Updated bloodshed installer. 2025-11-14 16:02:38 -05:00
hjozwiak 614f38d9dd When launching the game in with -g, don't print those extra echo statements.
You're already in a GDB session which is ready to rock and roll.
2025-11-10 14:47:10 -05:00
hjozwiak 73126910ec Disable Blades of Glory for now.
There is a technical limitation where pypresence is trying to enumerate
the available pipes in \\?\pipe\ but this is crashing because Wine doesn't
properly support enumerating the \\?\pipe\ namespace. This causes pypresence
to crash when trying to discover Discord IPC pipes.
2025-11-09 13:15:53 -05:00
Storm Dragon 01eb1f3e1a Fixed crash bug if yad is not installed and agm is launched from a gui. Insure AGM is not ran as the root users. If people who really should know better still need training wheels, actual newbies might need the protection as well. 2025-11-08 13:07:07 -05:00
hjozwiak e8b0b97ac2 Blades of Glory: try with the bridge.
It's opening the window and it's staying open, but it's shitting the
bed with the same error.
Traceback (most recent call last):
  File "C:\users\sektor\AppData\Local\Temp\ONEF~3LZ\blades_of_glory.py", line 447, in <module>
  File "C:\users\sektor\AppData\Local\Temp\ONEF~3LZ\blades_of_glory.py", line 114, in run
  File "C:\users\sektor\AppData\Local\Temp\ONEF~3LZ\discordmanager.py", line 25, in connect
  File "C:\users\sektor\AppData\Local\Temp\ONEF~3LZ\pypresence\presence.py", line 43, in connect
  File "C:\users\sektor\AppData\Local\Temp\ONEF~3LZ\asyncio\base_events.py", line 654, in run_until_complete
  File "C:\users\sektor\AppData\Local\Temp\ONEF~3LZ\pypresence\baseclient.py", line 106, in handshake
  File "C:\users\sektor\AppData\Local\Temp\ONEF~3LZ\pypresence\utils.py", line 42, in get_ipc_path
OSError: [WinError 66] Bad device type: '\\\\?\\pipe\\'
2025-11-06 13:14:52 -05:00
hjozwiak 4de95e7a7c For games that need it, install the Discord bridge. 2025-11-06 13:14:34 -05:00
hjozwiak 4d32740975 Experimental way to launch a game with GDB.
Useful for when you do indeed need a debugger.
2025-11-06 12:24:28 -05:00
hjozwiak fa597a9ca3 Initial work on Blades of Glory.
Still trying to figure out why this is crashing though.
2025-11-05 13:23:17 -05:00
hjozwiak 6fe5e4fa17 When launching the script, actually source the right things.
If I try to launch it via
~/projects/audiogame-manager/audiogame-manager.sh it will crap out
because it isn't able to source its include files; it erroneously
thinks they're in the current directory as I am, which is no exactly
true unless I physically go to the audiogame manager directory. This
also fixes launching from the desktop icon.
2025-11-04 18:01:49 -05:00
hjozwiak fe50e2be3e When launching Dreamland, put it into the background so as to not clog up the shell. 2025-10-22 16:16:30 -04:00
Storm Dragon f7252e24ed One more directive in the CLAUDE.md file. 2025-10-18 21:10:50 -04:00
Storm Dragon 1e7cb8fd85 Updated CLAUDE.md to be more comprehensive. 2025-10-18 21:08:59 -04:00
hjozwiak 40d3b18ff7 It works.
I had to really simplify how we're lauching Dreamland, but I did
finally get it work now. My head hurts.
2025-10-13 14:30:19 -04:00
hjozwiak c3411db0e9 More dreamland work. 2025-10-13 13:39:17 -04:00
hjozwiak 064c77eb9d Add Dreamland support
- Install vcrun2019 and d3dcompiler_47 dependencies for Unity 2021.3
- Clean up malformed {app}\ paths created by innoextract
- Create music directory with readme files for custom music support
- NVDA DLL replacement handled automatically by update_nvda_dlls()
- Game works with default wine start launcher

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 15:12:45 -04:00
hjozwiak 1811e8fe4a Do a bit of work on Dreamland.
It's trying to run now, it really is, but...
2025-10-07 10:21:18 -04:00
hjozwiak 9b15187917 fixup! Fix some critters. 2025-10-07 10:20:19 -04:00
hjozwiak e3289b92cb Fix some critters.
After about half an hour of cussin and spitting tobacco juice, I came
to some discoveries:
* The clipboard translator wasn't even launching successfully.
* For BKs 1 and 2, remove the nvda dll thereby forcing it to use the
clipboard reader.
* Fix up BK2 to go into the right bottle; it is a 32-bit game.
2025-10-07 10:14:54 -04:00
hjozwiak ba0075e74b Fix clipboard translator process detection for long process names
The pgrep command was failing to match Wine processes with long names
like "c:\nyanchangame\bk\play.exe" because pgrep by default only
matches against the first 15 characters of process names. Fixed by
adding the -f flag to match against the full command line.
2025-09-11 16:37:57 -04:00
hjozwiak 0cf2145852 Bokurano Daibouken I is 32-bit.
Try to fix the custom launch options function.
2025-09-11 16:04:18 -04:00
hjozwiak 1e3a368881 Fix BK# some more.
The translations are now copied into place.
2025-09-11 14:56:23 -04:00
hjozwiak 7bc480fbbc Fix Bokurano Daibouken three.
It's actually a 32-bit game but it was being installed to the 64 bit prefix.
2025-09-11 14:02:58 -04:00
hjozwiak f9df5b4299 Fix a typo.
It is Shooter.exe
2025-09-09 18:25:18 -04:00
hjozwiak 5590a4cde6 Fix WINEARCH preservation in wine bottle management
Preserve explicitly set WINEARCH variables instead of unsetting them
in wine environment functions. This ensures that installers setting
WINEARCH="win32" are properly respected for architecture selection.

Changes:
- Remove unset WINEARCH from get_bottle() and set_wine_env()
- Add comments explaining WINEARCH preservation
- Update debug messages to show current WINEARCH value
2025-09-09 17:46:55 -04:00
hjozwiak 7ff1cd57f7 Update the installer for Mistworld.
After some time cussin and spittin tobaccer juice, I've gotten things
somewhat working.
Namely:
* Set the WINEARCH to win32 (it was thinking the game was 64-bit)
* Setting the WINEPREFIX to the new path to reflect architectural
changes.
* Removing the unnecessary call to install SAPI.

The notable problem was that for whatever reason the compiled
nvdaControllerClient32.dll the manager was fetching did *not* work
with the game. It complained about testIfRunning not being present in
the compiled executable, which it certainly was.
If you have a spare copy of the DLL lying around that works you should
back that up and if you switch to the testing branch copy it *both* to
AGM cache and the game directory.
2025-09-09 17:24:29 -04:00
Storm Dragon f7eef7daf5 Updated ipfs for nvda tools. 2025-08-29 14:24:14 -04:00
Storm Dragon 6a3634545e Fixed execute permissions on the set-voice script. 2025-08-14 03:40:08 -04:00
Storm Dragon 86b306897a Updated set-voice.sh from the version in master. Change it to only search ~/.local/wine32 since that's where all the 32 bit games go. 2025-08-14 03:39:36 -04:00
Storm Dragon 46564d2e0a Fixed Bloodshed installer to be win32 so speech will work. 2025-08-09 06:44:14 -04:00
Storm Dragon 19fd7fb899 Set-voice updated to new format. Also, search for and set voices using wine registry instead of old sed method. 2025-08-09 06:42:11 -04:00
Storm Dragon 9515c25ea3 A ton of updates. We now have working 32 bit wine, Swamp installs and works, many other 32 bit games should as well. Improvements to the user interface both GUI and CLI. Tons of bug fixes. Not quite yet ready for mainstream testing, but getting closer. 2025-08-07 20:18:11 -04:00
Storm Dragon e5c6798c80 Better approach at using correct wine for 32 bit games, assuming it works that is. 2025-08-07 02:52:32 -04:00
Storm Dragon 81d00ef4f2 work on calling the correct version of wine when a game is launched. 2025-08-07 02:38:04 -04:00
Storm Dragon e94b4ed13b Send inital setup stuff like installing wine32 through progress indication system. 2025-08-07 02:18:15 -04:00
Storm Dragon 50bb078de2 Initial attempt to get a working wine32. This should hopefully work for a while once correctly set up. 2025-08-07 02:04:06 -04:00
Storm Dragon adefd7aab4 Try to get Audio Quake working on 64 bit wine. 2025-08-06 19:09:11 -04:00
Storm Dragon fa80331a63 Ported over ui updates from Linux Game Manager. 2025-08-06 15:47:59 -04:00
Storm Dragon adfef6fba4 An attempt at getting Swamp running in WOW64. I expect this to fail horribly. 2025-08-06 01:39:34 -04:00
Storm Dragon a124cd1a1f Updated Challenge of the Horse to hopefully use nvda2speechd. 2025-08-06 01:04:12 -04:00
Storm Dragon 3d77356e7b Track down and fix some more progress bar stuff. 2025-08-06 01:01:42 -04:00
Storm Dragon 9a7b440423 Totally fubar progress bars. Attempted fix here. Also add progress beeps because yad isn't the most accessible thing with progress dialogues. 2025-08-06 00:54:34 -04:00
Storm Dragon 775d48c068 Hopefully make update messages shown after updates less spammy. 2025-08-06 00:42:34 -04:00
Storm Dragon 27f9e973a3 More improvements to progress bars. Hopefully fixed a bug that was causing games to install twice. 2025-08-06 00:39:17 -04:00
Storm Dragon 6351d88676 Attempt to improve progress details output during things like game installation. may have to revert this one, have to wait and see. 2025-08-06 00:28:41 -04:00
Storm Dragon 9b17248222 Even more install script fixes. 😢 2025-08-05 13:17:13 -04:00
Storm Dragon a37bdfd32b Yet more install script fixes. 2025-08-05 04:45:50 -04:00
Storm Dragon 35fabf8ecd Cut down on repeating tasks for existing wine bottles. 2025-08-05 04:31:39 -04:00
Storm Dragon e5e7ef49ed Fixed even more installer scripts. Am I really going to have to go through all 208 of these? 2025-08-05 04:26:18 -04:00
Storm Dragon cf485ed4b0 More fixes to install scripts that got messed up in bulk edit. 2025-08-05 04:10:56 -04:00
Storm Dragon 88a815c76f Confirmation message after game installs, so window doesn't just vanish any more. 2025-08-05 03:57:20 -04:00
Storm Dragon c3e9d1e4a1 Another attempt with progressbars in yad and details of what's happening. 2025-08-05 03:47:25 -04:00
Storm Dragon bb1883ccd7 More fixes to installer scripts. 2025-08-05 03:42:02 -04:00
Storm Dragon 6317b2098b Hopefully improve progressbars and update messages with yad. 2025-08-05 03:36:34 -04:00
Storm Dragon 8e24b73720 Fixed some game installers that got broken in the massive update for progress bars. 2025-08-05 03:29:50 -04:00
Storm Dragon e12bcadb2a Add progress bars to some more operations, e.g. installing games. This required a bulk edit to all installer scripts, thanks Claud for the assist. Oh and send downloads through a progressbar. 2025-08-05 03:11:37 -04:00
Storm Dragon 19f54405bd Clean up redundant nvda2speechd startup and DLL replacement code 2025-08-05 02:27:01 -04:00
Storm Dragon 1b50ac66c1 Because now everything is more centralized in only a couple wine bottles, make sure nvda2speechd dll files are downloaded and update them when AGM starts. This should prevent loss of speech after game updates. 2025-08-05 02:20:11 -04:00
Storm Dragon eb9ad3e38d Fix update messages so they are shown in both CLI and GUI modes. 2025-08-05 01:56:35 -04:00
Storm Dragon 7ab2cdeb60 Fixed inaccessible dialogues in yad for messages. All messages should now be readable with screen readers, not just the buttons. 2025-08-05 01:49:21 -04:00
Storm Dragon 5adce756a1 Fixed an error in game removal. Fixed an error where it would try to launch an empty file name if escape were pressed to close the menu. 2025-08-05 01:44:56 -04:00
Storm Dragon d49ca8a86b Hopefully insure people using the GUI mode with audiogame-manager do not get stuck because some messages were only appearing in the terminal which may not be present at all in the GUI. 2025-08-05 01:40:27 -04:00
Storm Dragon 25c9aeaa5a Because of the major reworking of how audiogame-manager works, had to almost completely rewrite the -r (remove game) function. Will be testing it quite a bit to make sure nothing is critically broken. 2025-08-05 01:06:04 -04:00
Storm Dragon abb0bbbb20 More syntax fixes. Thanks Claud for helping track this one down. It was very illusive. 2025-08-04 22:24:04 -04:00
Storm Dragon 87c278d935 Fixed a few syntax errors. 2025-08-04 20:18:44 -04:00
Storm Dragon ddecf09fb1 With upgrade to wow64 no need to use a variable so switch to direct wine calls. 2025-08-04 20:13:38 -04:00
Storm Dragon 4d2134b9a9 A *lot* of work done on the audiogame-manager refactor. Hopefully getting somewhat close to stability, but I doubt it. 2025-08-04 19:42:59 -04:00
Storm Dragon 76f0c66c96 Added yad dialogues if in GUI session, retains the dialog interface if in console. 2025-08-01 15:25:53 -04:00
Storm Dragon 15f90a7979 Split dependency installation scripts into distro specific scripts. This is more reliable than the script trying to figure out which distro is running on its own. 2025-08-01 14:27:44 -04:00
Storm Dragon da065e5835 A little more progress on refactor. 2025-06-10 01:54:56 -04:00
Storm Dragon e3df3c4485 More games updated for the new system. 2025-05-20 19:11:21 -04:00
Storm Dragon 737432a63f Set-voice updated to support the new system. Hopefully also more reliable. 2025-05-20 18:46:17 -04:00
Storm Dragon 6526d40c68 Fixed create_game_array function. 2025-05-20 17:51:20 -04:00
Storm Dragon d9ef202b33 more progress, but create_game_array is horribly broken. 2025-05-20 05:13:22 -04:00
Storm Dragon faba6bcbcb Work on unifying bottles for wine. Most games should now install to 1 of 2 possible locations, ~/.local/wine32 or ~/.local/wine64. Untested, will probably break a lot of things, do not use yet. 2025-05-19 00:09:35 -04:00
Storm Dragon 31018bc55f Everything moved to it's new file for now. Cleanup is well under way. Improved the unix2dos function. 2025-05-18 20:50:52 -04:00
Storm Dragon 6e4d7bae8d More conversion to a modular system. 2025-05-18 20:16:22 -04:00
Storm Dragon e892da65c8 First chunk of major refactor. Move code to external files located in .includes. Better code organization and easier to deal with. 2025-05-18 19:12:02 -04:00
Storm Dragon 623de671f2 Merge branch 'testing' latest changes. Huge refactor on the way, it may be best to use this branch until further notice. 2025-05-18 16:41:18 -04:00
Storm Dragon d6cfe797bc Latest changes before huge refactor. 2025-05-18 16:39:58 -04:00
Storm Dragon 50b577d7aa Make sure variables needed for installation scripts are exported. 2025-05-14 13:58:16 -04:00
Storm Dragon ef43dca94f Updated the clipboard translater because it could crash on some translations. 2025-05-14 04:36:30 -04:00
Storm Dragon a38fc607a8 Updated download link for "Challenge of the Horse". 2025-05-08 23:39:52 -04:00
lilmike 937b52ffd0 Added tiny game smashathon. Get angry! 2025-05-02 01:22:50 -07:00
lilmike 4ee362b1c0 Added game constant motion. This is temporary until sam releases a linux version. 2025-05-01 04:17:32 -07:00
Storm Dragon f86d25924f links for rhvoice updated. 2025-04-16 00:09:49 -04:00
Storm Dragon 6dbf578c5a Fixed a problem with the file name for BG Cricket. 2025-02-07 21:27:19 -05:00
Storm Dragon ec8bb229f0 Actually close audiogame-manager if escape is pressed instead of trying, and failing, to launch the game. 2025-01-23 16:20:03 -05:00
Storm Dragon 3d95cefb02 Updated Mist World installer for Wine 10.0. Now requires sapi. 2025-01-23 15:47:47 -05:00
Storm Dragon d9c6c80e00 Updated Swamp for wine 10.0. Removed ole32 dependency as it was causing it to fail. If you are on wine 9.0 run WINEPREFIX=~/.local/wine/aprone winetricks -q ole32 If you have problems. 2025-01-23 15:16:41 -05:00
Storm Dragon 8b8f01f39d Temporary work around for winetricks problems. Be sure to install winetricks with your package manager. 2025-01-20 17:55:23 -05:00
lilmike a18b2ec61b Shades 2.0 now works as well 2025-01-19 13:33:58 -08:00
lilmike e6cfa00c15 Shades of doom 1.2 is working for me on wine 9.22 2025-01-18 19:18:58 -08:00
Storm Dragon 0a1a130399 Fixed a bug with the default download check. 2025-01-17 17:36:40 -05:00
Storm Dragon a8833aa173 Merge branch 'testing' of git.stormux.org:storm/audiogame-manager into testing 2025-01-16 13:30:53 -05:00
Storm Dragon 447344bec9 Fixed an error with finding wine_gecko. 2025-01-16 13:30:40 -05:00
hjozwiak ae267f971a Update the installer.
I do not know if the new installer is required come January 28, but since it's
available now might as well test it out.
2025-01-16 13:26:44 -05:00
Storm Dragon fd933f6dad Removed window title reader for Mist World. Requested by player. 2025-01-13 23:37:32 -05:00
Storm Dragon e60209a85e Fixed download url in A Hreo's call for nvdaControllerClient. 2025-01-06 17:57:44 -05:00
Storm Dragon 4300c3dda3 Fixed file validation for .exe files. 2024-12-24 19:18:01 -05:00
lilmike 382c200dc3 Fix issue with scramble installer update. 2024-12-22 23:05:54 -08:00
Storm Dragon 9cc15db76e Fixed validation code so that things can actually pass validation and work. 2024-12-23 01:47:03 -05:00
lilmike 1450bbc012 Fix scramble launcher for newest versions. 2024-12-22 22:43:00 -08:00
Storm Dragon 54ce9754fe Reorganize the way notes are shown after updates so that they hopefully appear oldest to newest. 2024-12-18 04:52:34 -05:00
Storm Dragon fad25d35ec Soulblaze is now available natively in Linux, so moved to linux-game-manager. 2024-12-18 04:28:29 -05:00
Storm Dragon 5cc4eca7fd Fixed some places where wine wasn't being properly set. 2024-12-17 06:15:02 -05:00
Storm Dragon 294557fe34 Hopefully hide some messages that were making the launch menu ... interesting. 2024-12-17 05:19:04 -05:00
Storm Dragon 7ff6fd9248 Hopefully fixed problem with FEXLoader call to winetricks. 2024-12-17 05:06:37 -05:00
Storm Dragon ee1eb6be60 Found some more games that didn't make it during the switch, added those back. 2024-12-16 19:17:59 -05:00
Storm Dragon 5620623ffe Mistworld got lost in the move to the new install system, so re-added it. 2024-12-16 18:55:06 -05:00
Storm Dragon 8aee611f86 Update winetricks to use FEXLoader if present. 2024-12-16 18:49:18 -05:00
Storm Dragon 75535a27b1 Changed the way nvda2speechd is launched. 2024-12-16 14:42:25 -05:00
Storm Dragon 18a6930c7c Updated code for -t flage. Does the same thing just better implemented. 2024-12-16 04:30:42 -05:00
Storm Dragon f0e421ab33 Fixed a few installers that got mangled by the conversion script. 2024-12-16 04:25:54 -05:00
Storm Dragon ccdf8ff858 Fixed Silver Dollar installer. 2024-12-16 04:10:26 -05:00
Storm Dragon 587e1ef385 Fixed a bug that would run sandbox on non existent wine if control+c was pressed. 2024-12-15 21:41:03 -05:00
Storm Dragon b8eb927c2d Use /usr/bin/wine if nothing is set for the variable. 2024-12-15 18:48:40 -05:00
Storm Dragon b776b18cf2 Add lyubov as an RHVoice option. 2024-12-15 16:14:17 -05:00
Storm Dragon 5da5e43964 Updated Download function. 2024-12-14 15:10:04 -05:00
Storm Dragon ba2687f8ad Make sure wine is set to something for game removal function. Added game "Soulblaze" 2024-12-14 07:27:04 -05:00
Storm Dragon 8ef2532521 Fixed the -t flag which was broken by the removal of the gameList variable. 2024-12-13 05:34:53 -05:00
Storm Dragon 97665e0b22 Added comment out to files that were commented in the old gameList variable. 2024-12-13 05:23:12 -05:00
Storm Dragon 733a8a3971 Removed gameList variable as it is no longer needed. 2024-12-13 05:21:45 -05:00
Storm Dragon b804d48188 WARNING! Possibly horribly broken. For stability, switch to master branch. Completely changed the way the installer system works. 2024-12-13 05:06:58 -05:00
Storm Dragon 407cc8985b Fixed wineserver for installers so that something is always present. May need more tweaks for aarch64. 2024-12-13 04:00:57 -05:00
Storm Dragon b868c732cf Updated wineserver calls to use the wine determined in variable form. Installers may be broken for now. 2024-12-13 00:15:08 -05:00
Storm Dragon 72dcf570ad Moved the check for wine for FEXLoader to the right place. Oops. 2024-12-12 22:12:55 -05:00
Storm Dragon e017284d80 Updated FEXLoader to use /usr/bin/wine because it should be in that path, and using command to locate it will not work. 2024-12-12 21:47:32 -05:00
Storm Dragon 9f8fd947c9 Hopefully fixed bug with wine not properly being called. 2024-12-12 20:54:22 -05:00
Storm Dragon a595a9bf1a Updated minimum dependencie checker to account for aarch64. 2024-12-12 19:28:29 -05:00
Storm Dragon 7ec0035fb4 Experimental code for supporting aarch64 architecture. 2024-12-12 19:13:55 -05:00
Storm Dragon ba0844cc49 Merge branch 'testing' games added. 2024-12-12 19:02:28 -05:00
Storm Dragon 038d784ba2 Small bug fix. Hopefully working now for creating the settings.dat file. 2024-12-09 18:51:54 -05:00
Storm Dragon 7d659c3ac4 I think I found a way to enter the user name for Side Parfty score boards. 2024-12-09 18:34:40 -05:00
Storm Dragon 53c0cafcef Added game "Side Party". 2024-12-08 20:03:09 -05:00
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
lilmike 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
lilmike 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
lilmike 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
lilmike 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
Storm Dragon 2c8b419656 Merge branch 'testing' latest games and updates. 2024-04-05 19:54:23 -04:00
Storm Dragon a35cdab460 Bump Executioner's Rage version for initial install. 2024-04-04 10:59:37 -04:00
Storm Dragon 043ff528de download url for "Shooter" updated. 2024-03-28 04:30:37 -04:00
Storm Dragon 4fa928e07f Executioner's Rage has an autoupdate system that overwrites the NVDA dll, so attempt to move the override into place when the game is launched. 2024-03-21 03:04:00 -04:00
Storm Dragon 0aaad485ae Added libwbclient. 2024-03-12 02:55:08 -04:00
Storm Dragon 25f8c528ad Updated Executioner's Rage version for the installer. There's no update script, so remove -r and reinstall -i the game. 2024-03-12 00:08:09 -04:00
Storm Dragon 06c50154fc Merge branch 'testing' latest games and code with new IPFS support. 2024-02-29 04:30:03 -05:00
Storm Dragon a70df6529f Reverted experimental Crazy Party. For the foreseeable future, we are stuck on Beta 78. 2024-02-29 04:29:16 -05:00
Storm Dragon 715affe733 Revert Crazy Party update script. 2024-02-29 04:10:48 -05:00
Storm Dragon 05f428d722 Galactic Strike ready to go. Apparently the problems with it were coming from my nvidia card and the wine driver for it. 2024-02-28 12:52:38 -05:00
Storm Dragon 16a635c379 Documentation updated to detect Executioner's Rage help file. 2024-02-28 00:40:30 -05:00
Storm Dragon b34086fb38 Game "Executioner's Rage" added. 2024-02-28 00:31:11 -05:00
Storm Dragon d442acce6a More work on Galactic strike. It almost works, except for the instant completion of levels. 2024-02-22 15:48:43 -05:00
lilmike d10196cc31 Game galactic strike added, but not yet working, keyboard issues. 2024-02-18 23:43:15 -08:00
Storm Dragon 2250718e8a Aprone game "Tarot Assistant" added. 2024-02-17 16:34:33 -05:00
Storm Dragon 25b720cea3 Added new Aprone game "Penta Path". 2024-02-17 01:33:09 -05:00
Storm Dragon 7736b3a8a1 Try to fix setting default voice if not available. 2024-02-15 10:52:59 -05:00
Storm Dragon bef82cb96e Working version of game "Oh Shit" 2024-02-15 10:46:43 -05:00
hjozwiak 6acd7a27ff Update to install ole32. 2024-02-02 18:10:50 -05:00
hjozwiak 006c63bdc8 Further work on the installer.
It  does  not work just yet, so don't get too excited.
2024-02-02 17:10:35 -05:00
hjozwiak 9e257d1a07 Let's add Dreamland.
This is  not yet complete; it is simply to see if I have  push access.
2024-02-02 16:35:18 -05:00
lilmike ba4de73562 Fixed mist world installer on wine 9, hopefully also swamp 2024-01-31 16:31:35 -08:00
Storm Dragon 123b648700 More stuff moved to ipfs. 2024-01-26 04:11:26 -05:00
Storm Dragon e61f9681c1 Many many games updated to use ipfs. 2024-01-25 23:57:36 -05:00
Storm Dragon 9dde8d4a9f Updated a game link. 2024-01-19 19:11:03 -05:00
Storm Dragon c7d94629ed Make ipfs gateway configurable. Update help flag. 2024-01-19 11:26:30 -05:00
Storm Dragon 69914107d2 Kitchensinc games moved to ipfs. 2024-01-19 03:26:59 -05:00
Storm Dragon cde67d82ca Christmas Chaos moved to ipfs. 2024-01-19 03:25:13 -05:00
Storm Dragon 4e826bb9ae First go with ipfs for file download. 2024-01-19 03:15:19 -05:00
lilmike 18128ad9f2 Attempt to fix pipe2, blast chamber, hunter, and troopanum 2 installers.
Also add inquisiter's heartbeat
2023-12-24 17:15:09 -08:00
Storm Dragon c70a3128a1 Skip loading qjoypad with games that cause conflicts. 2023-12-23 17:45:38 -05:00
Storm Dragon a4f72962fd Latest version of Crazy Party, beta 81, in progress. Does not allow to set language, crashes at main menu. 2023-12-11 00:57:51 -05:00
Storm Dragon 965308db8f Updated and disabled the Crazy Party update script. It is disabled currently because of breaking changes between versions of CP. 2023-12-10 12:55:09 -05:00
lilmike 23627322dd Fix conjury installer and updater to work with both 64 and 32 bit versions of the game, as it seems 64 bit was switched for 32 bit in the latest release. Please watch for bugs. 2023-12-03 06:27:54 -08:00
Storm Dragon a3f84d2db6 A couple changes to update script for Conjury, changed the new source code for importing audiogame-manager to be more in line with coding style of the rest of the code. Also, update script will now correctly source agm no matter from where it is called. 2023-12-03 08:16:55 -05:00
lilmike f85a11b54d Very experimental changes to support running AGM functions, such as get_installer or get_steam, from other scripts. Please report if anything breaks. First script using this functionality, conjury-update, added. 2023-12-02 21:57:17 -08:00
lilmike 479a5651b6 Slight bug fix to get_steam 2023-12-02 14:53:26 -08:00
Storm Dragon b43f5a423c Conjury updated to install to a directory under Program Files instead of just plopping everything into that folder. The code for getting this installed is still new, so please let me know if there are any problems. 2023-12-02 16:39:06 -05:00
lilmike a605139210 Conjury fully added and working. 2023-12-02 13:20:20 -08:00
lilmike aedc053e5b get_steam function potentially ready. 2023-12-02 12:52:52 -08:00
Storm Dragon 166ad6469a Merge branch 'testing' of git.stormux.org:storm/audiogame-manager into testing 2023-12-02 15:41:53 -05:00
Storm Dragon 5273d7c552 Started work on a function to get games from Steam. 2023-12-02 15:41:25 -05:00
lilmike a0b7f80a3f Put a note in the grizly gulch installer about raising or lowering the combat speed. 2023-11-01 03:54:02 -07:00
lilmike 07d81e6a74 Added game they'll come from the moon 2023-10-02 05:26:52 -07:00
lilmike 875948264e Skateboarder pro fully working. 2023-09-09 08:14:31 -07:00
Storm Dragon 24d85389ac Skateboarder Pro added, but not yet launching, so commented for now. 2023-09-07 17:21:08 -04:00
Storm Dragon 3f5771c69a Swamp seems to be fixed in wine 8.14. If you are using wine earlier than this version, please use the master branch, not testing. 2023-09-02 23:40:07 -04:00
Storm Dragon 35a7907d72 Should no longer try to update if launched outside it's git directory. 2023-09-02 19:11:39 -04:00
Storm Dragon 6d21a91df9 Wave of the Undead updated, but not working yet, so commented for now. 2023-08-27 18:55:08 -04:00
Storm Dragon be67215786 Added update script for Rettou because it seems to update frequently. 2023-08-16 16:11:20 -04:00
Storm Dragon af90ba0550 Added Aprone's new game, "Rettou". 2023-08-11 17:57:25 -04:00
Storm Dragon cb755136ca Updated the documentation system to find more files. Please let me know if this is buggy. 2023-08-10 02:08:06 -04:00
Storm Dragon 8b3e1b777b Merge branch 'testing' latest game additions. 2023-08-07 20:45:44 -04:00
Storm Dragon e7c31bab62 Merge branch 'testing' of git.stormux.org:storm/audiogame-manager into testing 2023-08-07 20:43:32 -04:00
Storm Dragon 3513150f03 "A Hero's Call" is now free. Updated the link with the new version. 2023-08-07 20:43:12 -04:00
lilmike 1bb859c1ab Fix install on troopanum 2 and hunter. 2023-07-30 16:53:03 -07:00
lilmike d9b38491d8 Merge branch 'testing' of ssh://git.stormux.org/storm/audiogame-manager into testing 2023-07-24 16:23:27 -07:00
lilmike 3d54cef6cc Add pipe 2 blast chamber. 2023-07-24 16:23:04 -07:00
Storm Dragon 9c0e8385f5 After the error handling update for downloading games, I needed to reorganize a lot of the installers Thiss is a large change that affects almost every single game. So, if you notice problems installing games please let me know. 2023-06-25 21:47:37 -04:00
Storm Dragon e26cda26ba Added nvda2speed as option for VIPmud. 2023-06-24 19:04:44 -04:00
Storm Dragon d67b422a7d Hopefully better error handling for download errors and missing game files. 2023-06-24 18:36:38 -04:00
stormdragon2976 e9b23e968f Merge branch 'testing', latest code and games. 2023-06-12 15:21:03 -04:00
stormdragon2976 0e8a15611a Added internal unix2dos so that the external program is no longer needed. 2023-06-12 11:21:40 -04:00
stormdragon2976 88e3378f6a Game "Bounce Bounce" added. 2023-06-04 13:10:51 -04:00
stormdragon2976 87f2fd756c New Tolk changes pushed. if you have the old Tolk in ~/.cache/audiogame-manager, delete it and the new version will be downloaded on the next install. You can either reinstall existing STW and Christmas Chaos, or download the new Tolk.dll from https://stormgames.wolfe.casa/downloads/Tolk.dll and replace the one in your current STW and Christmas Chaos bottles. 2023-06-02 20:27:26 -04:00
lilmike 953a029c94 Fixed up survive the wild. It is officially working! 2023-05-26 06:31:43 -07:00
stormdragon2976 866db35651 Some very experimental changes. Thanks to @bgtlover@linuxrocks.online we
now have tolk support. This means that Survive the Wild works for the
most part. Also, the game Christmas Chaos works too.

There is a bit of a bug in the clipboard reader, but it only seems to
show up during the forms in STW. I'll see what I can do about getting it
fixed, but in the mean time, you may have a bit of trouble creating a
new account.

Please note that as the Tolk support improves, the way audiogame-manager
interacts with it may also change. instructions will be provided if
manual intervention is required.
2023-05-26 08:53:51 -04:00
lilmike a6e70863e7 Add battlefield 2d, by tunmi13, and moved haunted party and battlefield 2d to a 64bit tunmi13 bottle. Also added clashes of the sky, though I've been unable to test it because speechsdk refuses to install. 2023-05-24 07:09:14 -07:00
stormdragon2976 adfa7d64ac More work on Survive the Wild. Thanks Celtichawk for help with the instructions. 2023-05-13 20:31:14 -04:00
lilmike c8c1e62663 Fix random space that appeared in the middle of triple triad. 2023-05-12 15:23:42 -07:00
stormdragon2976 d3bb2c58a8 Started work on supporting the new Survive the Wild version. It is commented for now, because no speech. I'm really going to have to work on the tolk.dll problem at some point. 2023-05-12 18:16:13 -04:00
stormdragon2976 5f03df41f8 Fixed an error in the -h help text. 2023-05-01 20:10:40 -04:00
stormdragon2976 b79c72314b Forgot to remove debug statement. 2023-05-01 02:40:50 -04:00
stormdragon2976 cf85fef828 Only attempt to set default voice for the bottle if speechsdk or sapi gets installed. 2023-05-01 02:23:50 -04:00
stormdragon2976 bd70fd8c56 Changed the help text for location of configuration file so it is more clear and easier to copy the path. 2023-05-01 00:26:22 -04:00
stormdragon2976 1919fdd8ed Updated the README. 2023-05-01 00:13:46 -04:00
stormdragon2976 8161157aef Added the ability to set the default voice for the wine bottle when the game is installed. This can be done with flags at the time of install, see -h for instructions, or in the configuration file which is also covered with the -h flag. 2023-05-01 00:08:22 -04:00
stormdragon2976 8626ad9964 Set-voice.sh has been updated so that it can be completely controled with command line flags. I always hate messing around with this script, so please watch for and report bugs. 2023-04-30 23:19:30 -04:00
lilmike 59dd9ae9cd Fix crackling sound in the great toy robbery when you went farther north. 2023-04-19 14:57:25 -07:00
stormdragon2976 7240f53cd5 Updated the Wave of the Undead installer. It works now, but no speech. 2023-04-16 23:42:05 -04:00
stormdragon2976 73c3396e11 "Wave of the Undead" added, but commented because of problems with the installer. 2023-04-16 20:23:30 -04:00
lilmike 16e58d74d0 Add game Angel Gift 2023-04-06 10:39:59 -07:00
stormdragon2976 54e3ef8190 Merge branch 'testing', latest games. 2023-04-05 22:42:29 -04:00
stormdragon2976 6211a18276 Removed rhvoice from the dan-z bottle because it seems to break stuff if used. 2023-04-05 22:41:50 -04:00
lilmike 9abe1cb36c Add two more Dan Z games, lost and maze craze. Also moved super deekout to the Dan Z bottle, please reinstall super deekout to fix the bottle 2023-04-05 16:10:55 -07:00
lilmike c51eeeb40a Add Ultimate SounDoku 2023-04-03 10:21:49 -07:00
stormdragon2976 5d286cc09d Update action buttons to more closely reflect what they actually do according to the option selected. For example, the game launcher now says "Launch", the -r options now shows "Remove", etc. 2023-03-30 22:26:02 -04:00
lilmike 983d8d3934 Add sarah documentation to the documentation function. 2023-03-28 14:02:20 -07:00
lilmike 03124451c4 Add Sarah and the Castle of Witchcraft and Wizardry 2023-03-28 12:20:17 -07:00
stormdragon2976 2472ea640a Merge branch 'testing' latest fixes and instructions. 2023-03-16 16:52:38 -04:00
stormdragon2976 e8dc17c7fd Added instructions for enabling automatic login for Mist World. 2023-03-16 16:51:36 -04:00
lilmike 6303ea5b03 Create two directories not present in the mist world installation that allow saving of certain data. 2023-03-16 13:45:14 -07:00
stormdragon2976 478bdeadf0 Clipboard reader now respects the rate set in speech-dispatcher with spd-conf. 2023-03-06 21:00:46 -05:00
247 changed files with 5733 additions and 3096 deletions
+1
View File
@@ -1,2 +1,3 @@
*.x.c *.x.c
*.x *.x
music/
+270
View File
@@ -0,0 +1,270 @@
#!/usr/bin/env bash
get_bottle() {
# Simple rule: wine64 for everything, wine32 only for speech APIs
local architecture="${1:-win64}"
architecture="${architecture/win/}"
export WINEPREFIX="$HOME/.local/wine${architecture}"
# Set wine executables based on architecture - FOR LAUNCHER
if [[ "$architecture" == "32" ]] && [[ -n "$wine32" ]]; then
# Set environment variables for winetricks compatibility
export WINE="$wine32"
export WINESERVER="$wine32server"
# Also prepend to PATH for regular wine calls
export PATH="${wine32%/*}:$PATH"
# Keep WINEARCH for compatibility
echo "DEBUG: Using managed wine32 for LAUNCHER (WINE=$WINE, PATH updated)"
else
# Clear wine variables for system wine but preserve WINEARCH if set
unset WINE WINESERVER
echo "DEBUG: Using system wine for LAUNCHER (architecture $architecture)"
fi
}
# Set wine environment for installation (called from install_wine_bottle)
set_wine_env() {
local architecture="$1"
if [[ "$architecture" == "32" ]] && [[ -n "$wine32" ]]; then
export WINE="$wine32"
export WINESERVER="$wine32server"
export PATH="${wine32%/*}:$PATH"
# Don't unset WINEARCH - preserve it for proper architecture selection
echo "DEBUG: Set wine32 environment for INSTALLATION (WINE=$WINE, WINEARCH=$WINEARCH)"
else
unset WINE WINESERVER
# Don't unset WINEARCH - preserve it for proper architecture selection
echo "DEBUG: Set system wine environment for INSTALLATION (WINEARCH=$WINEARCH)"
fi
}
# Note: install_wine function removed - we now use system wine with simplified bottle management
winetricks() {
# Report used packages to the winetricks maintainer so he knows they are being used.
if ! [[ -e "${XDG_CACHE_HOME:-$HOME/.cache}/winetricks/track_usage" ]]; then
mkdir -p "${XDG_CACHE_HOME:-$HOME/.cache}/winetricks/"
echo "1" > "${XDG_CACHE_HOME:-$HOME/.cache}/winetricks/track_usage"
fi
# Temporary work around for winetricks git bugs. Requires winetricks be installed from package manager.
/usr/bin/winetricks "$@"
return
# Download or update agm's copy of winetricks
if [[ ! -e "${winetricksPath}/winetricks" ]]; then
checkWinetricksUpdate="true"
download "https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks"
mv "${cache}/winetricks" "${winetricksPath}"
chmod 755 "${winetricksPath}/winetricks"
else
if [[ "$checkWinetricksUpdate" != "true" ]]; then
checkWinetricksUpdate="true"
${winetricksPath}/winetricks --self-update
fi
fi
# Run the requested winetricks parameters
if command -v FEXLoader &> /dev/null ; then
WINE="" FEXLoader -- ${winetricksPath}/winetricks "$@"
else
${winetricksPath}/winetricks "$@"
fi
}
install_rhvoice() {
if [[ -d "${WINEPREFIX}/drive_c/Program Files/Olga Yakovleva/" ]]; then
return
fi
if [[ "$norh" == "true" ]]; then
# Try to prevent the user from breaking speech
# Also useful for games that do not work with RHVoice
if [[ "${defaultVoice}" == "RHVoice" ]]; then
unset defaultVoice
fi
return
fi
declare -A RHVoice=(
[alan]="https://github.com/RHVoice/alan-eng/releases/download/4.0/RHVoice-voice-English-Alan-v4.0.2016.21-setup.exe"
[bdl]="https://github.com/RHVoice/bdl-eng/releases/download/4.1/RHVoice-voice-English-Bdl-v4.1.2016.21-setup.exe"
[clb]="https://github.com/RHVoice/clb-eng/releases/download/4.0/RHVoice-voice-English-Clb-v4.0.2016.21-setup.exe"
[lyubov]="https://rhvoice.eu-central-1.linodeobjects.com/RHVoice-voice-English-Lyubov-v4.0.2008.15-setup.exe"
[slt]="https://github.com/RHVoice/slt-eng/releases/download/4.1/RHVoice-voice-English-Slt-v4.1.2016.21-setup.exe"
)
voiceName="${voiceName:-bdl}"
voiceName="${voiceName,,}"
if [[ "${RHVoice[${voiceName}]}" == "" ]]; then
echo "Invalid RHVoice name specified, defaulting to Bdl."
voiceName="bdl"
fi
local voiceFile="${RHVoice[${voiceName}]##*/}"
download "${RHVoice[${voiceName}]}"
winetricks -q win8 | agm_progressbox "RHVoice Setup" "Preparing Windows environment for RHVoice..."
echo "Installing RHVoice ${voiceName^}..."
wine "${cache}/${voiceFile}" &
sleep 20 | agm_progressbox "RHVoice Setup" "Installing RHVoice ${voiceName^} voice..."
wineserver -k
}
install_wine_bottle() {
# Simplified - bottles are now pre-created with dependencies
# Just set up the wine environment for game installation
# Determine architecture from WINEARCH or dependency requirements
# Preserve existing WINEARCH if already set by game installer
if [[ -z "$WINEARCH" ]]; then
# All games use wine64 now (wine32 eliminated 2025-12-06)
# SAPI support is provided by wine64 with WINETRICKS_FORCE=1
export WINEARCH="win64"
echo "DEBUG: Auto-selected wine64 (default - wine32 eliminated)"
else
echo "DEBUG: Using pre-set WINEARCH=$WINEARCH from game installer"
fi
# Set architecture for WINEPREFIX path
local architecture
if [[ "$WINEARCH" == "win32" ]]; then
architecture=32
else
architecture=64
fi
export WINEPREFIX="$HOME/.local/wine${architecture}"
# Set wine environment
set_wine_env "$architecture"
echo "Using pre-configured wine${architecture} bottle at $WINEPREFIX"
# Store winVer for per-app setting in add_launcher (don't set globally)
if [[ -n "$winVer" ]]; then
export gameWinVer="$winVer"
fi
# Install any additional game-specific dependencies if specified
if [[ $# -gt 0 ]]; then
# Filter out dependencies that are already installed in bottle creation
local depsToInstall=()
local alreadyInstalled="speechsdk sapi corefonts isolate_home"
for dep in "$@"; do
# Skip dependencies already installed during bottle creation
# Also skip winVer patterns - handled separately above
if [[ ! " $alreadyInstalled " =~ " $dep " ]] && [[ ! "$dep" =~ ^win(7|8|10)$ ]]; then
depsToInstall+=("$dep")
fi
done
if [[ ${#depsToInstall[@]} -gt 0 ]]; then
# Separate speechsdk (needs FORCE) from other deps
local regularDeps=()
local needsSpeechsdk=false
for dep in "${depsToInstall[@]}"; do
if [[ "$dep" == "speechsdk" ]]; then
needsSpeechsdk=true
else
regularDeps+=("$dep")
fi
done
# Install regular deps without FORCE
if [[ ${#regularDeps[@]} -gt 0 ]]; then
echo "Installing additional dependencies: ${regularDeps[*]}"
{
env WINE="$WINE" WINESERVER="$WINESERVER" DISPLAY="${DISPLAY:-:0}" winetricks -q isolate_home "${regularDeps[@]}" ${winetricksSettings}
} | agm_progressbox "Wine Setup" "Installing additional dependencies..."
fi
# Install speechsdk with FORCE if needed
if [[ "$needsSpeechsdk" == "true" ]]; then
echo "Installing speechsdk with WINETRICKS_FORCE=1"
{
env WINE="$WINE" WINESERVER="$WINESERVER" DISPLAY="${DISPLAY:-:0}" WINETRICKS_FORCE=1 winetricks -q speechsdk
} | agm_progressbox "Wine Setup" "Installing Speech SDK..."
fi
fi
fi
}
# Set Windows version for a specific executable (per-app, not global)
# This allows different games to use different Windows versions in the same bottle
set_app_winver() {
local exePath="$1"
local winVersion="$2"
if [[ -z "$exePath" ]] || [[ -z "$winVersion" ]]; then
return
fi
# Extract just the exe filename from path (handles both / and \ separators)
local exeName="${exePath##*\\}"
exeName="${exeName##*/}"
echo "Setting Windows version $winVersion for $exeName"
cat > /tmp/app_winver.reg << EOF
REGEDIT4
[HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\${exeName}]
"Version"="${winVersion}"
EOF
wine regedit /tmp/app_winver.reg
rm /tmp/app_winver.reg
}
add_launcher() {
# Determine architecture from WINEPREFIX path instead of WINEARCH variable
local architecture="win64" # default
if [[ "$WINEPREFIX" =~ wine32 ]]; then
architecture="win32"
fi
# Set per-app Windows version if specified
if [[ -n "$gameWinVer" ]]; then
set_app_winver "$1" "$gameWinVer"
unset gameWinVer
fi
local launchSettings="${architecture}|${1}|${game}"
shift
while [[ $# -gt 0 ]]; do
launchSettings+="|$1"
shift
done
if ! grep -F -q -x "${launchSettings}" "${configFile}" 2> /dev/null ; then
echo "${launchSettings}" >> "${configFile}"
sort -t '|' -k3,3f -o "${configFile}" "${configFile}"
# Remove .lnk files because they don't work.
find ~/Desktop -type f -iname '*.lnk' -exec bash -c '
for f ; do
mimeType="$(file -b "$f")"
mimeType="${mimeType%%,*}"
if [[ "$mimeType" == "MS Windows shortcut" ]]; then
rm -v "$f"
fi
done' _ {} +
if [[ "${noCache}" == "true" ]]; then
rm -f "${cache}/${1##*\\}"
fi
fi
}
# Install the Discord RPC bridge
install_discord_rpc_bridge() {
echo "Installing Discord RPC bridge for Wine compatibility..."
download "https://github.com/EnderIce2/rpc-bridge/releases/download/v1.4.0.1/bridge.zip"
if [[ -f "${cache}/bridge.zip" && ! -f "${cache}/bridge.exe" ]]; then
# the package is on the system, but not extracted just yet.
unzip "${cache}/bridge.zip" -d "${cache}"
fi
if [[ -f "${cache}/bridge.exe" ]]; then
wine "${cache}/bridge.exe" --install 2>&1 | grep -v "fixme:" || echo "Discord bridge installation attempted"
# Copy required bridge.sh script to Wine prefix
if [[ -f "${cache}/bridge.sh" ]]; then
cp "${cache}/bridge.sh" "${WINEPREFIX}/drive_c/windows/"
echo "Copied bridge.sh to Wine prefix"
else
echo "WARNING: bridge.sh not found in cache!"
fi
else
echo "ERROR: bridge.exe not found after extraction!"
return 1
fi
}
+117
View File
@@ -0,0 +1,117 @@
#!/usr/bin/env bash
declare -a errorList
declare -a packageList
if [[ $# -eq 0 ]]; then
echo "Checking your system..."
echo
fi
if command -v wine &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Wine is installed."
else
errorList+=("Critical: Wine is not installed. You will not be able to play any games.")
fi
packageList+=("wine")
if command -v umu-run &> /dev/null ; then
[[ $# -eq 0 ]] && echo "umu-launcher is installed."
else
errorList+=("Warning: umu-launcher is not installed. Games that require Proton/UMU will not install or launch.")
fi
packageList+=("umu-launcher")
if command -v curl &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Curl is installed."
else
errorList+=("Critical: Curl is not installed. Critical functionality will not work.")
fi
packageList+=("curl")
if command -v dialog &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Dialog is installed."
else
errorList+=("Critical: Dialog is not installed. You will not be able to install, launch, or remove any games.")
fi
packageList+=("dialog")
for i in 7z cabextract unzip xz ; do
if command -v $i &> /dev/null ; then
[[ $# -eq 0 ]] && echo "${i^} is installed."
else
errorList+=("Critical: ${i^} is not installed. You will not be able to install some games or their components.")
fi
packageList+=("$i")
done
if command -v gawk &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Gawk is installed."
else
errorList+=("Warning: gawk is not installed. Game removal with -r will not work.")
fi
packageList+=("gawk")
if command -v ocrdesktop &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Ocrdesktop is installed."
else
errorList+=("Warning: ocrdesktop is not installed. It can help if the installer gets stuck to figure out what is happening.")
fi
packageList+=("ocrdesktop")
if command -v qjoypad &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Qjoypad is installed."
else
errorList+=("Warning: qjoypad is not installed. Qjoypad allows you to play keyboard only games with a gamepad.")
fi
packageList+=("qjoypad")
if command -v sox &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Sox is installed."
else
errorList+=("Warning: Sox is not installed. Audio will not work.")
fi
packageList+=("sox")
if command -v trans &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Translate-shell is installed."
else
errorList+=("Warning: translate-shell is not installed. Games that require translation will not be translated.")
fi
packageList+=("translate-shell")
if command -v sqlite3 &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Sqlite3 is installed."
else
errorList+=("Warning: sqlite is not installed. Required for games that need to be translated.")
fi
if command -v perl &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Perl is installed."
else
errorList+=("Warning: perl is not installed. Required for games that need to be translated.")
fi
packageList+=("perl")
packageList+=("sqlite")
if command -v w3m &> /dev/null ; then
[[ $# -eq 0 ]] && echo "W3m is installed."
else
errorList+=("Warning: w3m is not installed. W3m is used to view game documentation.")
fi
packageList+=("w3m")
if command -v xclip &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Xclip is installed."
else
errorList+=("Warning: Xclip is not installed. Some games may not speak or register properly.")
fi
packageList+=("xclip")
if command -v xdotool &> /dev/null ; then
[[ $# -eq 0 ]] && echo "Xdotool is installed."
else
errorList+=("Warning: Xdotool is not installed. Some installers may not work or may need manual intervention.")
fi
packageList+=("xdotool")
# Show the results
if [[ $# -ne 0 ]]; then
for i in "${packageList[@]}" ; do
echo "$i"
done | sort
exit 0
fi
if [[ ${#errorList[@]} -eq 0 ]]; then
echo "No problems found, you are good to go."
exit 0
fi
echo "Errors detected, here is a list along with the severity."
echo "Note that errors marked critical mean that you will not be able to install and play games until they are resolved."
for i in "${errorList[@]}" ; do
echo "$i"
done
exit 0
+35
View File
@@ -0,0 +1,35 @@
# Create desktop launcher file
desktop_launcher() {
local desktopFile="${HOME}/audiogame-manager.desktop"
if [[ -e "${desktopFile}" ]]; then
echo "the file ${desktopFile} exists. Cannot create the launcher."
exit 1
fi
local dotDesktop
local terminal
# Try to find an accessible terminal
for i in mate-terminal lxterminal terminator gnome-terminal ; do
if command -v $i &> /dev/null ; then
terminal="$i"
break
fi
done
dotDesktop=('[Desktop Entry]'
'Name=Audiogame manager'
'GenericName=Audiogame Manager'
'Comment=Play audio games'
"Exec=${terminal} -t \"Audiogame Manager\" -e \"/usr/bin/bash -c 'nohup $(readlink -e "$0") 2> /dev/null'\""
'Terminal=false'
'Type=Application'
'StartupNotify=false'
'Keywords=game;'
'Categories=Game;'
'Version=1.0')
for i in "${dotDesktop[@]}" ; do
echo "$i" >> "${desktopFile}"
done
desktop-file-install --dir "${HOME}/.local/share/applications" -m 755 "${desktopFile}"
xdg-desktop-icon install ~/.local/share/applications/audiogame-manager.desktop
rm "${desktopFile}"
exit 0
}
+537
View File
@@ -0,0 +1,537 @@
#!/usr/bin/env bash
# Dialog interface wrapper for audiogame-manager
# Automatically switches between dialog (console) and yad (GUI) based on DISPLAY environment
# This provides better accessibility for GUI environments while maintaining console functionality
# Note: dialogType is now detected in the main script before DISPLAY is modified
# This ensures console detection works correctly when AGM sets DISPLAY=":0"
# If dialogType is not set (e.g., when called from standalone scripts), detect it
if [[ -z "$dialogType" ]]; then
if [[ -z "$DISPLAY" ]]; then
dialogType="dialog"
elif command -v yad &> /dev/null; then
dialogType="yad"
else
dialogType="dialog"
fi
fi
# Wrapper function for menu selection
# Usage: agm_menu "title" "backtitle" "text" option1 "description1" option2 "description2" ...
agm_menu() {
local title="$1"
local backTitle="$2"
local text="$3"
shift 3
if [[ "$dialogType" == "yad" ]]; then
# Build yad list format: Display only, then map back to value
local yadList=""
declare -A valueMap
while [[ $# -gt 0 ]]; do
local option="$1"
local description="$2"
valueMap["$description"]="$option"
if [[ -n "$yadList" ]]; then
yadList="$yadList\n"
fi
yadList="${yadList}${description}"
shift 2
done
local selectedDescription
selectedDescription=$(echo -e "$yadList" | yad --list \
--title="$title" \
--text="$text" \
--column="Option" \
--no-headers \
--selectable-labels \
--search-column=1 \
--height=400 \
--width=600)
# Strip trailing pipes and return the mapped value
if [[ -n "$selectedDescription" ]]; then
selectedDescription="${selectedDescription%|}"
echo "${valueMap["$selectedDescription"]}"
fi
else
# Build dialog menu format with mapping (same approach as yad)
local dialogArgs=()
declare -A valueMap
while [[ $# -gt 0 ]]; do
local option="$1"
local description="$2"
valueMap["$description"]="$option"
dialogArgs+=("$description" "$description")
shift 2
done
local selectedDescription
selectedDescription=$(dialog --backtitle "$backTitle" \
--title "$title" \
--no-tags \
--menu "$text" 0 0 0 \
"${dialogArgs[@]}" \
--stdout)
# Return the mapped value
if [[ -n "$selectedDescription" ]]; then
echo "${valueMap["$selectedDescription"]}"
fi
fi
}
# Specialized game launcher menu with "Read Documentation" button
# Usage: agm_game_menu "title" "backtitle" "text" option1 "description1" option2 "description2" ...
# Returns: exit code 0=Launch, 1=Cancel, 2/3=Documentation (yad/dialog)
agm_game_menu() {
local title="$1"
local backTitle="$2"
local text="$3"
shift 3
if [[ "$dialogType" == "yad" ]]; then
# Use custom buttons to match dialog behavior (launch/doc/cancel)
local yadList=""
declare -A valueMap
while [[ $# -gt 0 ]]; do
local option="$1"
local description="$2"
valueMap["$description"]="$option"
if [[ -n "$yadList" ]]; then
yadList="$yadList\n"
fi
yadList="${yadList}${description}"
shift 2
done
local selectedDescription
selectedDescription=$(echo -e "$yadList" | yad --list \
--title="$title" \
--text="$text" \
--column="Option" \
--no-headers \
--selectable-labels \
--search-column=1 \
--height=400 \
--width=600 \
--button="Launch:0" \
--button="Read Documentation:2" \
--button="Cancel:1")
local menuCode=$?
# Strip trailing pipes and return the mapped value
if [[ -n "$selectedDescription" ]]; then
selectedDescription="${selectedDescription%|}"
echo "${valueMap["$selectedDescription"]}"
fi
return $menuCode
else
# Build dialog menu format with mapping (same approach as yad)
local dialogArgs=()
declare -A valueMap
while [[ $# -gt 0 ]]; do
local option="$1"
local description="$2"
valueMap["$description"]="$option"
dialogArgs+=("$description" "$description")
shift 2
done
local selectedDescription
selectedDescription=$(dialog --backtitle "$backTitle" \
--title "$title" \
--extra-button \
--extra-label "Read Documentation" \
--no-tags \
--menu "$text" 0 0 0 \
"${dialogArgs[@]}" \
--stdout)
local menuCode=$?
# Return the mapped value
if [[ -n "$selectedDescription" ]]; then
echo "${valueMap["$selectedDescription"]}"
fi
return $menuCode
fi
}
# Wrapper function for checklist selection
# Usage: agm_checklist "title" "backtitle" "text" option1 "description1" "status1" option2 "description2" "status2" ...
agm_checklist() {
local title="$1"
local backTitle="$2"
local text="$3"
shift 3
if [[ "$dialogType" == "yad" ]]; then
local yadList=""
while [[ $# -gt 0 ]]; do
local option="$1"
local description="$2"
local status="$3"
local checked="FALSE"
[[ "$status" == "on" ]] && checked="TRUE"
if [[ -n "$yadList" ]]; then
yadList="$yadList\n"
fi
yadList="${yadList}${checked}|${description}|${option}"
shift 3
done
echo -e "$yadList" | yad --list \
--title="$title" \
--text="$text" \
--checklist \
--column="Select:CHK" \
--column="Option" \
--column="Value:HD" \
--hide-column=3 \
--print-column=3 \
--no-headers \
--selectable-labels \
--height=400 \
--width=600 \
--separator=" "
else
local dialogArgs=()
while [[ $# -gt 0 ]]; do
dialogArgs+=("$1" "$2" "$3")
shift 3
done
dialog --backtitle "$backTitle" \
--title "$title" \
--checklist "$text" 0 0 0 \
"${dialogArgs[@]}" \
--stdout
fi
}
# Wrapper function for input dialog
# Usage: agm_inputbox "title" "backtitle" "text" "default_value"
agm_inputbox() {
local title="$1"
local backTitle="$2"
local text="$3"
local defaultValue="$4"
if [[ "$dialogType" == "yad" ]]; then
yad --entry \
--title="$title" \
--text="$text" \
--entry-text="$defaultValue" \
--selectable-labels \
--width=400
else
dialog --backtitle "$backTitle" \
--title "$title" \
--inputbox "$text" 0 0 "$defaultValue" \
--stdout
fi
}
# Wrapper function for message box
# Usage: agm_msgbox "title" "backtitle" "text"
agm_msgbox() {
local title="$1"
local backTitle="$2"
local text="$3"
if [[ "$dialogType" == "yad" ]]; then
echo -e "$text" | yad --text-info \
--title="$title" \
--show-cursor \
--button="OK:0" \
--width=600 \
--height=400
else
dialog --backtitle "$backTitle" \
--title "$title" \
--msgbox "$text" 0 0
fi
}
# Wrapper function for yes/no dialog
# Usage: agm_yesno "title" "backtitle" "text" ["yes_label"] ["no_label"]
agm_yesno() {
local title="$1"
local backTitle="$2"
local text="$3"
local yesLabel="${4:-Yes}"
local noLabel="${5:-No}"
if [[ "$dialogType" == "yad" ]]; then
echo -e "$text" | yad --text-info \
--title="$title" \
--show-cursor \
--button="$yesLabel:0" \
--button="$noLabel:1" \
--width=600 \
--height=400
else
# dialog --yesno doesn't support custom labels, use menu instead
if [[ "$yesLabel" != "Yes" ]] || [[ "$noLabel" != "No" ]]; then
# Custom labels requested, use menu
local choice
choice=$(dialog --backtitle "$backTitle" \
--title "$title" \
--no-tags \
--menu "$text" 0 0 0 \
"1" "$yesLabel" \
"2" "$noLabel" \
--stdout)
[[ "$choice" == "1" ]]
else
# Default Yes/No
dialog --backtitle "$backTitle" \
--title "$title" \
--yesno "$text" 0 0
fi
fi
}
# Wrapper function for info box (non-blocking message)
# Usage: agm_infobox "title" "backtitle" "text"
agm_infobox() {
local title="$1"
local backTitle="$2"
local text="$3"
if [[ "$dialogType" == "yad" ]]; then
# For yad, we'll use a notification since infobox is non-blocking
yad --notification \
--text="$text" \
--timeout=3
else
dialog --backtitle "$backTitle" \
--title "$title" \
--infobox "$text" 0 0
fi
}
# Wrapper function for progress box
# Usage: command | agm_progressbox "title" "text"
agm_progressbox() {
local title="$1"
local text="$2"
if [[ "$dialogType" == "yad" ]]; then
# Start audio feedback for accessibility
local beepPid
local yadPid
# Cleanup function for traps
cleanup_progress() {
[[ -n "$beepPid" ]] && kill "$beepPid" 2>/dev/null
[[ -n "$yadPid" ]] && kill "$yadPid" 2>/dev/null
}
# Set trap to ensure cleanup on interruption
trap cleanup_progress EXIT INT TERM
if command -v sox >/dev/null 2>&1; then
{
while true; do
# Generate a short, pleasant progress beep (440Hz for 0.1s)
sox -q -n -d synth 0.1 sine 440 vol 0.3 2>/dev/null
sleep 2 # Beep every 2 seconds
done
} &
beepPid=$!
fi
# Start visual progress dialog with auto-close, redirect stdin to prevent conflicts
yad --progress \
--title="$title" \
--text="$text" \
--auto-close \
--pulsate \
--width=400 \
--height=100 </dev/null &
yadPid=$!
# Pass through all input completely unchanged
cat
# Clean up background processes
cleanup_progress
trap - EXIT INT TERM # Remove traps
else
dialog --title "$title" \
--progressbox "$text" 20 70
fi
}
# Simple progress box that just shows the operation is running (no command output)
# Usage: command | agm_simple_progressbox "title" "text"
agm_simple_progressbox() {
local title="$1"
local text="$2"
if [[ "$dialogType" == "yad" ]]; then
# Start audio feedback for accessibility
local beepPid
local yadPid
# Cleanup function for traps
cleanup_simple_progress() {
[[ -n "$beepPid" ]] && kill "$beepPid" 2>/dev/null
[[ -n "$yadPid" ]] && kill "$yadPid" 2>/dev/null
}
# Set trap to ensure cleanup on interruption
trap cleanup_simple_progress EXIT INT TERM
if command -v sox >/dev/null 2>&1; then
{
while true; do
# Generate a short, pleasant progress beep (440Hz for 0.1s)
sox -q -n -d synth 0.1 sine 440 vol 0.3 2>/dev/null
sleep 2 # Beep every 2 seconds
done
} &
beepPid=$!
fi
# Show progress dialog with pulsating
yad --progress \
--title="$title" \
--text="$text" \
--auto-close \
--pulsate \
--width=400 \
--height=100 &
yadPid=$!
# Read from stdin and discard, but keep dialogs open until command finishes
cat > /dev/null
# Clean up background processes
cleanup_simple_progress
trap - EXIT INT TERM # Remove traps
else
dialog --title "$title" \
--progressbox "$text" 20 70
fi
}
# Alternative status box for simple operations without meaningful progress
# Usage: agm_statusbox "title" "text" & statusPid=$!; command; kill $statusPid 2>/dev/null
agm_statusbox() {
local title="$1"
local text="$2"
if [[ "$dialogType" == "yad" ]]; then
# Show a simple status message that screen readers can access
yad --form \
--title="$title" \
--field="$text:LBL" \
--selectable-labels \
--no-buttons \
--timeout=0 \
--width=400 \
--height=100
else
# Use infobox for console
dialog --title "$title" \
--infobox "$text" 5 50
fi
}
# Real progress bar with percentage updates (for operations that can report progress)
# Usage: agm_progress_with_percent "title" "text"
# Then send "percentage" or "#status text" to the returned file descriptor
agm_progress_with_percent() {
local title="$1"
local text="$2"
if [[ "$dialogType" == "yad" ]]; then
# Start audio feedback for accessibility
local beepPid
local yadPid
# Cleanup function for traps
cleanup_percent_progress() {
[[ -n "$beepPid" ]] && kill "$beepPid" 2>/dev/null
[[ -n "$yadPid" ]] && kill "$yadPid" 2>/dev/null
}
# Set trap to ensure cleanup on interruption
trap cleanup_percent_progress EXIT INT TERM
if command -v sox >/dev/null 2>&1; then
{
while true; do
# Generate a short, pleasant progress beep (440Hz for 0.1s)
sox -q -n -d synth 0.1 sine 440 vol 0.3 2>/dev/null
sleep 2 # Beep every 2 seconds
done
} &
beepPid=$!
fi
# Create a true progress dialog that accepts percentage updates with tee for cleanup
{
cat
cleanup_percent_progress
trap - EXIT INT TERM
} | yad --progress \
--title="$title" \
--text="$text" \
--auto-close \
--width=400 \
--height=150
else
# For dialog, we'll simulate with a gauge
dialog --title "$title" \
--gauge "$text" 6 50 0
fi
}
# Wrapper function for file selection
# Usage: agm_fselect "title" "backtitle" "default_path"
agm_fselect() {
local title="$1"
local backTitle="$2"
local defaultPath="$3"
if [[ "$dialogType" == "yad" ]]; then
yad --file \
--title="$title" \
--filename="$defaultPath" \
--width=600 \
--height=400
else
dialog --backtitle "$backTitle" \
--title "$title" \
--fselect "$defaultPath" 0 0 \
--stdout
fi
}
# Wrapper function for directory selection
# Usage: agm_dselect "title" "backtitle" "default_path"
agm_dselect() {
local title="$1"
local backTitle="$2"
local defaultPath="$3"
if [[ "$dialogType" == "yad" ]]; then
yad --file \
--directory \
--title="$title" \
--filename="$defaultPath" \
--width=600 \
--height=400
else
dialog --backtitle "$backTitle" \
--title "$title" \
--dselect "$defaultPath" 0 0 \
--stdout
fi
}
+253
View File
@@ -0,0 +1,253 @@
#!/usr/bin/env bash
# shellcheck disable=SC2034,SC2154 # sourced by audiogame-manager with shared globals and exported state
# Source IPFS game URLs
source "${BASH_SOURCE[0]%/*}/ipfs.sh"
# Alerts, for when user needs to read something.
alert() {
local title="Alert"
local backTitle=""
local message="Press OK to continue."
if [[ $# -eq 1 ]]; then
message="$1"
elif [[ $# -eq 2 ]]; then
title="$1"
backTitle="$1"
message="$2"
elif [[ $# -ge 3 ]]; then
title="$1"
backTitle="$2"
shift 2
message="$*"
fi
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
agm_msgbox "${title}" "${backTitle}" "${message}"
}
check_requirements() {
# Make sure this is not ran as root
if [[ "$(whoami)" == "root" ]]; then
echo "Please do not run ${0##*/} as root."
return 1
fi
# Make sure the minimum dependencies are installed
if [[ "$(uname -m)" == "aarch64" ]]; then
minimumDependencies=("FEXLoader")
wine="FEXLoader -- /usr/bin/wine"
else
minimumDependencies=(
"curl"
"dialog"
"sox"
"wine"
)
fi
for i in "${minimumDependencies[@]}" ; do
if ! command -v "$i" &> /dev/null ; then
echo "Please install $i before continuing."
return 1
fi
done
return 0
}
clear_cache() {
if [[ ! -d "${cache}" ]]; then
agm_msgbox "Clear Cache" "" "No cache found at ${cache}."
return
fi
if ! agm_yesno "Clear Cache" "" "This will delete all contents of ${cache}. Are you sure you want to continue?"; then
return
fi
# All safety checks done. Delete the cache.
rm -rfv "${cache}" | agm_progressbox "Clear Cache" "Deleting cache files..."
agm_msgbox "Clear Cache" "" "Cache deleted."
}
download() {
local source=("$@")
for i in "${source[@]}" ; do
local dest="${i##*/}"
dest="${dest//%20/ }"
dest="${dest#*\?filename=}"
dest="${dest%\?*}"
# Remove the destination file if it is empty.
[[ -s "${cache}/${dest}" ]] || rm -f "${cache}/${dest}" 2> /dev/null
if [[ "${redownload}" == "true" ]] && [[ -e "${cache}/${dest}" ]]; then
rm -v "${cache}/${dest}"
fi
# Skip if the item is in cache.
[[ -e "${cache}/${dest}" ]] && continue
if [[ "$dialogType" == "yad" ]]; then
# Use curl's progress bar with better parsing for yad
if ! {
curl -L4 -C - --retry 10 --progress-bar --output "${cache}/${dest}" "${i}" 2>&1 | \
stdbuf -oL grep -o '[0-9]*%' | \
stdbuf -oL sed -u 's/%$//' | \
while read -r percent; do
echo "$percent"
echo "# Downloading $dest - ${percent}%"
done
} | agm_progress_with_percent "Audio Game Manager" "Downloading \"$dest\"..."; then
agm_infobox "Audio Game Manager" "Audio Game Manager" "Could not download \"$dest\". Installation cannot continue."
exit 1
fi
else
# Use the original method for dialog (console)
if ! curl -L4 -C - --retry 10 --output "${cache}/${dest}" "${i}" 2>&1 | agm_progressbox "Audio Game Manager" "Downloading \"$dest\"..."; then
agm_infobox "Audio Game Manager" "Audio Game Manager" "Could not download \"$dest\". Installation cannot continue."
exit 1
fi
fi
local downloadError=1
case "${dest##*.}" in
"pk3"|"zip")
unzip -tq "${cache}/${dest}" | agm_progressbox "Audio Game Manager" "Validating ${dest##*.} file"
downloadError=$?
;;
"7z")
7z t "${cache}/${dest}" | agm_progressbox "Audio Game Manager" "Validating 7z file"
downloadError=$?
;;
"exe")
# Check if it's a valid Windows executable by looking at the MZ header
hexdump -n 2 -v -e '/1 "%02X"' "${cache}/${dest}" | grep -q "4D5A"
downloadError=$?
;;
"wad")
if [[ "$(file -b --mime-type "${cache}/${dest}")" != "application/octet-stream" ]]; then
downloadError=0
fi
;;
*)
# Add HTML check for other file types
if file -b "${cache}/${dest}" | grep -q "HTML document" ; then
echo "File not found: \"$i\" (HTML document probably 404)"
downloadError=1
else
downloadError=0
fi
;;
esac
if [[ $downloadError -ne 0 ]]; then
rm -fv "${cache}/${dest}"
alert "Audio Game Manager" "Audio Game Manager" "Error downloading \"${dest}\". Installation cannot continue."
exit 1
fi
done
}
get_installer() {
trap "exit 0" SIGINT
# If the file is in cache nothing else needs to be done.
if [[ -f "${cache}/$1" ]]; then
return
fi
# Create message for dialog.
local message="Make sure $1 is available in either your Downloads or Desktop directory and press enter to continue."
if [[ -n "$2" ]]; then
message+="\n\nThe last good known URL for $game is:"
message+="\n$2"
fi
if echo "$2" | xclip -selection clipboard 2> /dev/null ; then
message+="\n\nThe URL has been copied to the clipboard."
fi
alert "Audiogame Manager" "Audiogame Manager" "$message"
# Search the Desktop and Downloads directories for the installation file
for i in ~/Downloads ~/Desktop ; do
find "$i" -type f -name "$1" -exec cp -v {} "${cache}/" \;
done
# If the file is still not available abort.
if [[ ! -f "${cache}/$1" ]]; then
echo "couldn't find $1. Please download the file and try again."
exit 1
fi
}
get_steam() {
# Arguments: $1 id of item for download, $2 url for game
trap "exit 0" SIGINT
alert "Audiogame Manager" "Audiogame Manager" "Manual intervention required."
agm_yesno "Audiogame Manager" "Audiogame Manager" "To install the game manually, place files in \"${WINEPREFIX}/drive_c/Program Files/${game}\". Continue with Steam installation?"
case $? in
0) echo "The next steps will install through steamcmd." ;;
1)
mkdir -p "${WINEPREFIX}/drive_c/Program Files/${game}"
agm_msgbox "Audiogame Manager" "Audiogame Manager" "Place game files in \"${WINEPREFIX}/drive_c/Program Files/${game}\" and press enter to continue."
return
;;
*) exit 0 ;;
esac
# Check for steamcmd
if ! command -v steamcmd &> /dev/null ; then
agm_infobox "Audiogame Manager" "Audiogame Manager" "This installer requires steamcmd. Please install steamcmd and try again."
exit 1
fi
# Create message for dialog.
local message="Make sure ${game} is available in your Steam library and press enter to continue. The URL for ${game} is $2"
if echo "$2" | xclip -selection clipboard 2> /dev/null ; then
message+="\n\nThe URL has been copied to the clipboard."
fi
agm_msgbox "Audiogame Manager" "Audiogame Manager" "$message"
# Get Steam user name.
steamUser="$(agm_inputbox "Audiogame Manager" "Audiogame Manager" "Please enter your Steam user name:" "")"
# Download the game
mkdir -p "${WINEPREFIX}/drive_c/Program Files/${game}"
steamcmd +@sSteamCmdForcePlatformType windows +force_install_dir "${WINEPREFIX}/drive_c/Program Files/$game" +login "$steamUser" +app_update "$1" +quit || { agm_infobox "Audiogame Manager" "Audiogame Manager" "Something went wrong. Please make sure you have a stable internet connection, and if the problem persists, contact audiogame-manager's developers."
exit 1; }
}
# Function to open urls across OS.
open_url() {
if [[ "$(uname)" == "Darwin" ]]; then
open "${*}" 2> /dev/null
else
xdg-open "${*}" 2> /dev/null
fi
}
unix2dos() {
if [[ $# -eq 0 ]]; then
echo "Usage: unix2dos file(s)."
exit 1
fi
for file in "$@"; do
sed -i 's/\r\{0,\}$/\r/' "$file"
done
}
# Progress wrapper for game installation operations
install_with_progress() {
local operation="$1"
local message="$2"
shift 2
case "$operation" in
"unzip")
# Always overwrite without prompting to prevent invisible terminal prompts
unzip -o "$@" | agm_progressbox "Game Installation" "$message"
;;
"7z")
# Always overwrite without prompting for 7z as well
7z -y "$@" | agm_progressbox "Game Installation" "$message"
;;
"cp"|"copy")
# Always force overwrite to prevent invisible prompts in GUI mode
cp -fv "$@" | agm_progressbox "Game Installation" "$message"
;;
"find")
find "$@" | agm_progressbox "Game Installation" "$message"
;;
*)
# Default: run command with progress box
"$operation" "$@" | agm_progressbox "Game Installation" "$message"
;;
esac
}
+191
View File
@@ -0,0 +1,191 @@
#!/usr/bin/env bash
# shellcheck disable=SC2154 # Sourced by audiogame-manager with shared globals.
documentation() {
if [[ "$2" == "Become a Patron" ]]; then
return
fi
if [[ "$2" == "Donate" ]]; then
return
fi
# Extract architecture from first parameter (format: "win64|path")
local wineArch="${1%%|*}"
if [[ "$wineArch" == "umu" ]]; then
local launcherLine=""
local docFlag=""
local umuGameId=""
local -a documentationGame=()
launcherLine="$(grep -F -m1 "${1}|" "$configFile" 2> /dev/null || true)"
IFS='|' read -ra documentationGame <<< "$launcherLine"
for docFlag in "${documentationGame[@]:3}" ; do
if [[ "$docFlag" =~ ^export\ [a-zA-Z_][a-zA-Z0-9_]*=\'?.*\'?$ ]]; then
eval "$docFlag"
fi
done
if [[ -z "$umuGameId" ]]; then
echo "Unable to find UMU game id for documentation lookup."
return
fi
get_umu_bottle "$umuGameId"
else
get_bottle "$wineArch"
fi
echo "Loading documentation, please wait..."
# Try to find documentation based on common naming conventions.
local gamePath
if [[ "$wineArch" == "umu" ]]; then
gamePath="$(umu_windows_path_to_unix "$2")"
else
gamePath="$(winepath -u "$2" 2> /dev/null)"
fi
gamePath="${gamePath%/*}"
local gameDoc=""
local isUrl="false"
gameDoc="$(find "$gamePath" -type f -iname 'user_manual.htm*' -or -iname 'user manual.htm*' -or -iname '*user guide.htm*' | head -1)"
# Game name specific docs, add the name to the for loop.
if [[ -z "$gameDoc" ]]; then
for i in "troopanum.txt" "superdeekout.txt" scw.html ; do
gameDoc="$(find "$gamePath" -type f -iname "$i" -or -iname 'manual.htm' | head -1)"
done
fi
if [[ -z "$gameDoc" ]]; then
gameDoc="$(find "$gamePath" -type f -path '*/Manual/index.html' | head -1)"
fi
if [[ -z "$gameDoc" ]]; then
gameDoc="$(find "$gamePath" -type f -iname '[A-Z]*Help.htm' -or -iname '[A-Z]*Help.html' | head -1)"
fi
if [[ -z "$gameDoc" ]]; then
gameDoc="$(find "$gamePath" -type f -iname 'manual.html' -or -iname 'manual.htm' | head -1)"
fi
if [[ -z "$gameDoc" ]]; then
gameDoc="$(find "$gamePath" -type f -iname 'en.html' -or -iname 'en.htm' | head -1)"
fi
if [[ -z "$gameDoc" ]]; then
gameDoc="$(find "$gamePath" -type f -iname 'readme.html' -or -iname 'readme.htm' | head -1)"
fi
if [[ -z "$gameDoc" ]]; then
gameDoc="$(find "$gamePath" -type f -iname 'manual.txt' | head -1)"
fi
if [[ -z "$gameDoc" ]]; then
gameDoc="$(find "$gamePath" -type f -iname 'readme.txt' -or -iname 'help.txt' | head -1)"
fi
if [[ -z "$gameDoc" ]]; then
gameDoc="$(find "$gamePath" -type f -iname '*.url' -exec grep -i 'url=' {} \; | grep -iv 'score' | head -1)"
gameDoc="${gameDoc#*=}"
gameDoc="${gameDoc//[[:cntrl:]]/}"
[[ -n "$gameDoc" ]] && isUrl="true"
fi
# Display documentation if available
if [[ -n "$gameDoc" ]]; then
if [[ "$isUrl" == "true" ]]; then
# URL extracted from .url file - open in browser
open_url "$gameDoc"
elif [[ "$dialogType" == "yad" ]]; then
# GUI mode: use appropriate viewer
if [[ "${gameDoc,,}" =~ \.(html?)$ ]]; then
# HTML files: use xdg-open for default browser
xdg-open "$gameDoc" 2>/dev/null &
else
# Text files: use yad text-info for accessibility
yad --text-info \
--title="Game Documentation" \
--filename="$gameDoc" \
--width=800 \
--height=600 \
--button="Close:0"
fi
else
# Console mode: use w3m or fallback
if command -v w3m &> /dev/null; then
w3m "$gameDoc"
elif [[ "${gameDoc,,}" =~ \.(html?)$ ]]; then
echo "Install w3m to view HTML documentation in console mode."
echo "Documentation location: $gameDoc"
read -rp "Press Enter to continue..."
else
less "$gameDoc"
fi
fi
else
if [[ "$dialogType" == "yad" ]]; then
agm_msgbox "Documentation" "" "No documentation found for this game."
else
echo "No documentation found."
read -rp "Press Enter to continue..."
fi
fi
exit 0
}
help() {
echo "${0##*/}"
echo "Released under the terms of the Common Public Attribution License Version 1.0"
echo -e "This is a Stormux project: https://stormux.org\n"
echo -e "Usage:\n"
echo "With no arguments, open the game launcher."
for i in "${!command[@]}" ; do
echo "-${i/:/ <parameter>}: ${command[${i}]}"
done | sort
echo
echo "Some settings that are often used can be stored in a settings.conf file."
echo "If wanted, place it at the following location:"
echo "${configFile%/*}/settings.conf"
echo "The syntax is variable=\"value\""
echo
echo "ipfsGateway=\"https://ipfs.stormux.org\" # Gateway to be used for ipfs downloads."
echo "noCache=\"true\" # Do not keep downloaded items in the cache."
echo "noqjoypad=\"true\" # Do not launch qjoypad."
echo "norh=\"true\" # Do not install RHVoice."
echo "redownload=\"true\" # Redownload sources, do not use the version stored in cache."
echo "voiceName=\"voicename\" # Select the voice to be installed (default Bdl)."
echo "defaultVoice=\"voicename\" # Select the default voice to use for the bottle, e.g. MSMike or RHVoice."
echo "defaultRate=\"Default voice rate for the bottle, default 7, may not work in all games. Values 1-9 or A."
echo "winedebug=\"flag(s)\" # Set wine debug flags, useful for development."
exit 0
}
license() {
cat << EOF
■The contents of this file are subject to the Common Public Attribution
License Version 1.0 (the ■License■); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
https://opensource.org/licenses/CPAL-1.0. The License is based on the Mozilla Public License Version
1.1 but Sections 14 and 15 have been added to cover use of software over a
computer network and provide for limited attribution for the Original
Developer. In addition, Exhibit A has been modified to be consistent with
Exhibit B.
Software distributed under the License is distributed on an ■AS IS■ basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is audiogame manager.
The Original Developer is not the Initial Developer and is . If
left blank, the Original Developer is the Initial Developer.
The Initial Developer of the Original Code is Billy "Storm Dragon" Wolfe. All portions of
the code written by Billy Wolfe are Copyright (c) 2020, 2024. All Rights
Reserved.
Contributor Michael Taboada.
Attribution Copyright Notice: Audiogame manager copyright 2020 Storm Dragon. All rights reserved.
Attribution Phrase (not exceeding 10 words): A Stormux project
Attribution URL: https://stormgames.wolfe.casa
Graphic Image as provided in the Covered Code, if any.
Display of Attribution Information is required in Larger
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.
EOF
}
+63
View File
@@ -0,0 +1,63 @@
# shellcheck shell=bash
# Central repository for IPFS game download URLs
# This file is sourced by functions.sh
declare -Ag ipfs=(
# Core System Files
[nvdaControllerClient32]="${ipfsGateway}/ipfs/QmTrRrT4QFKSkZ8ivfUawA6iJ6adEyyogccE3nLDTfSK8u?filename=nvdaControllerClient32.dll"
[nvdaControllerClient64]="${ipfsGateway}/ipfs/QmaYE7RFDtwHCiXCVLcuA3esfFx6E7koidtvrck9AwPuuN?filename=nvdaControllerClient64.dll"
[nvda2speechd]="${ipfsGateway}/ipfs/QmPxhoNsoFoJC7bCfioBBCcK8tEoSoYpm342z6u7KjFsVz?filename=nvda2speechd"
# Games (alphabetical order)
[BG 15 Puzzle]="${ipfsGateway}/ipfs/QmQiocMpMXoxejDftKKvmrR5xxpj1qcWcgkhBBwTcyijXg?filename=FPB32Setup10a.exe"
[BG 2048]="${ipfsGateway}/ipfs/QmPNt3c78UBgEMrTH3eJ5eD2mCMdth6jwes1iDKGW24Uj5?filename=BG204832Setup10a.exe"
[BG Aces Up Solitaire]="${ipfsGateway}/ipfs/QmTshtHBEV9dh7wFtaQpNUEYHZ3fBpuhSRZqc7k8HwmtPM?filename=ASB32Setup10.exe"
[BG Alchemy]="${ipfsGateway}/ipfs/Qma76HXBhmKgMDeHH1XLePsaWzzzLsBS2HRL3c7MVwDokg?filename=BAC32Setup10.exe"
[BG Battleship]="${ipfsGateway}/ipfs/Qmaq9P9fxdLTEFMGg4mhHrRuUbPg6HgU3eYVJNqZUimHjo?filename=BGB32Setup10.exe"
[BG Boggle]="${ipfsGateway}/ipfs/QmQwWiJw9hDiPdfwDyL4XepeoD66ztVRi3HwbSjFFP4CNg?filename=BGB32Setup10a.exe"
[BG Boxes]="${ipfsGateway}/ipfs/QmRn21tREXxXVSaDe9i54zEPzPSespjJAFBqu4DWocuagD?filename=BXB32Setup10.exe"
[BG Brainiac]="${ipfsGateway}/ipfs/QmWEdmTkQsjSqBgWUgnDajMf8QvQBbEF4Nxo6mhkXYzBtQ?filename=BRN32Setup10a.exe"
[BG Chess Challenge]="${ipfsGateway}/ipfs/QmT2yBpU5Jqna18FxYtyWzi4xMGAY9PyJWStAskxCHqBDw?filename=BGC32Setup10d.exe"
[BG Code Breaker]="${ipfsGateway}/ipfs/QmU486SssAdM7kPKwDyAKDLQs3Z92bG6wFjaLhzqDZCxAF?filename=BCB32Setup10.exe"
[BG Cribbage]="${ipfsGateway}/ipfs/QmeFud3EPHy7wQe8UENgvh96HdAazEkwqA2AutCNkYvB3t?filename=BGC32Setup12e.exe"
[BG Cribbage Solitaire]="${ipfsGateway}/ipfs/QmbRUiknnNcibWD3NwK4DFZGNHWswBgsFidUzU1TFGJ5Ra?filename=BCS32Setup10.exe"
[BG Crossword Puzzle]="${ipfsGateway}/ipfs/QmZQGY9CeATEiWrSqsKBz4AN6jPgQuvbBZSpQoLiMjoDr2?filename=BGX32Setup10h.exe"
[BG Draw Dominoes]="${ipfsGateway}/ipfs/QmZQGY9CeATEiWrSqsKBz4AN6jPgQuvbBZSpQoLiMjoDr2?filename=BDD32Setup.exe"
[BG Elevens Solitaire]="${ipfsGateway}/ipfs/QmWWZByYL5CsDSi6gQLGcMyBL7zqD5hWXbPXJr3shRt5AQ?filename=ESB32Setup10.exe"
[BG Fives Dominoes]="${ipfsGateway}/ipfs/QmSZt6dz7WQkNrFBmYq9n4WdYrrZyQAebTBPo46uHqCuNi?filename=BFD32Setup10.exe"
[BG Free Cell Solitaire]="${ipfsGateway}/ipfs/QmVfQMMnqTD9Zm8Xwv7rGrUTdS9FXToq7Fv6wtQQVgbQGR?filename=BGF32Setup20.exe"
[BG Golf Solitaire]="${ipfsGateway}/ipfs/QmfAp9EYou1pndLwYSdpYdUCHBv2DR94oFccQh1ii9JVLD?filename=GSB32Setup10a.exe"
[BG Hangman]="${ipfsGateway}/ipfs/QmXTPMmvw7JE2eLuPBLGSpkZqUn12TX7QEQZbX8qtp7GBx?filename=HMB32Setup10.exe"
[BG Hearts]="${ipfsGateway}/ipfs/QmdU5ag1PRjvG28wNX7aNuJqZSVxaqEEKjgG6GoRoDT8k4?filename=BGH32Setup10b.exe"
[BG Klondike Solitaire]="${ipfsGateway}/ipfs/QmctBDvhQWwER94LvgauR7sMDxv9D1mS9cToV47orTCdzU?filename=BGK32Setup10b.exe"
[BG LAP]="${ipfsGateway}/ipfs/Qma5WeCC9B2P5abRGX9nGYV8Zi9F8vfCCr4ehejP2bgmNm?filename=LAP32Setup10.exe"
[BG Master Mind]="${ipfsGateway}/ipfs/QmP6cwMbirbBqAaG9JLfNRnD2dvJfh6nq74kfwxs5hN2RQ?filename=BMM32Setup10.exe"
[BG Mine Sweeper]="${ipfsGateway}/ipfs/QmRa54HroWjwxHYfKr6hdmP34sHW5G3ecuzcjMA5UBBVKa?filename=MSB32Setup10.exe"
[BG Nomination Whist]="${ipfsGateway}/ipfs/Qmb7eGTMDgiaDC9muMW9n8bHoistGcNm1VgHc6sr7dRyHU?filename=BNW32Setup10a.exe"
[BG Penguin Solitaire]="${ipfsGateway}/ipfs/QmXKvQ6WNNSnDiSyYmvAhZXVdALnuhUGK7dSMQVkQNReJr?filename=BPS32Setup10c.exe"
[BG Poker Solitaire]="${ipfsGateway}/ipfs/QmPLv74LiDgVGuiGhu9HuPhx3uoMm9QyCYk6jgeFUHjj3S?filename=BPS32Setup10.exe"
[BG Pyramid Solitaire]="${ipfsGateway}/ipfs/QmaqXaBKD3xY2smhU2LcejXRTPnWZHqaTW9se8yRepLsHu?filename=PSB32Setup10a.exe"
[BG Scorpion Solitaire]="${ipfsGateway}/ipfs/QmSxJs2MiLQ61Fgx6vCpSD7GmQziLiCEU3sZ3mgWc7RsJ8?filename=BSS32Setup10.exe"
[BG Scrabble]="${ipfsGateway}/ipfs/QmVrwyPdJBnmc4wLW7oT2hexxXnXxs8bA7gfiqbnJsWJ16?filename=BGS32Setup20.exe"
[BG Simon]="${ipfsGateway}/ipfs/QmXtBCqB6VCFPaDYuLaFNP1BDtJSLCJdJZzgm61zMtrsQt?filename=BGS32Setup10.exe"
[BG Spider Solitaire]="${ipfsGateway}/ipfs/QmdWBaDnLVbKCJSpiqF675ew6nJ6KHUVXA5FEH3t3E7UAu?filename=SPB32Setup10b.exe"
[BG Sudoku]="${ipfsGateway}/ipfs/QmXCAHEVRGZBc8t45Jgn2vkxicwF9Aox6yz9XrQBdkv7WY?filename=SDB32Setup10a.exe"
[BG Tablic Solitaire]="${ipfsGateway}/ipfs/QmYoiFQ6JuSXfZfZXT3SQDsYzMWLBu9rW9yivi1xiPjqZx?filename=SDB32Setup10a.exe"
[BG Tri-Peaks Solitaire]="${ipfsGateway}/ipfs/QmWJGvSR6iaQfMHM3XuGCkWxx285jkzSDdNSvvk3bSCH8S?filename=TPB32Setup10a.exe"
[BG Twenty 20 Cricket]="${ipfsGateway}/ipfs/QmWAk2TMHMvW6Kjc1sZBEPsxmCNHfY3nF1K723PCqaTa57?filename=T20B32Setup10.exe"
[BG Uno]="${ipfsGateway}/ipfs/QmVsfPkebSoTDwYSXF1n7y4P9eGJTgTcGXdrEjpcV8A3Dv?filename=BGU32Setup11a.exe"
[BG Word Builder]="${ipfsGateway}/ipfs/QmXtR49EZShyj15Tc9CXQpBYVmKNfZpp4515Epm16bviuH?filename=BWB32Setup10.exe"
[BG Word Candy]="${ipfsGateway}/ipfs/QmfTgfRzd4JMRqKSfDiz76iMorkaG19BqH1K7nRCCDwo4H?filename=WCB32Setup10a.exe"
[BG Word Jumble]="${ipfsGateway}/ipfs/QmYQWZZifzKJSuVRCC1SabwRmEDz95GdFvbzRvsBMmTt6e?filename=BWJ32Setup10.exe"
[BG Word Maze]="${ipfsGateway}/ipfs/QmXPtj5PkVZjXpU3m6FAfm8MwVL6bQCvhEDoR385u6FGTL?filename=BWM32Setup10.exe"
[BG Word Solitaire]="${ipfsGateway}/ipfs/QmZp73ARDPqgnCz7zxfKeBHjNoHrgZSgg2NdQZR2sMyZGD?filename=WSB32Setup10.exe"
[BG Word Target]="${ipfsGateway}/ipfs/QmWWZFXVHNtmNkH55oermWWtrMcQ8qVqL687B7kGFyeezq?filename=WTB32Setup10a.exe"
[BG Word Yahtzee]="${ipfsGateway}/ipfs/QmdicAVDegDktY3euVAC2PPn4YBGz96KedxYXNe4WDQaoq?filename=BWY32Setup10.exe"
[BG Yahtzee]="${ipfsGateway}/ipfs/QmZebvkKgFAADnb1cgW6Bz7wTYdUh82X61QdtW66KcvmpF?filename=BGY32Setup10a.exe"
[Bloodshed]="${ipfsGateway}/ipfs/QmcTCTMep4zp5zTw8ZaXYpjtu9inNPn8bNzwhW6cX97egw?file=bloodshed.exe"
[Chopper Challenge]="${ipfsGateway}/ipfs/QmY1jmwVkmwEcqBs84i4mpancD3R1W4Vu6w1RdcrFUnbGx?filename=chopper%20challenge.zip"
[Christmas Chaos]="${ipfsGateway}/ipfs/QmYx11vsMDBgjPd1coZPGHxMXf2qtf4icqmB3Q9iUazyQv?filename=ChristmasChaos.zip"
[Kitchensinc Games]="${ipfsGateway}/ipfs/QmdkLPig6Kp3AZTwKAhjrhhsEuvhFCFhm6SHLUQVeNNYCb?filename=kitchen.tar.xz"
[Oh Shit]="${ipfsGateway}/ipfs/QmQnAJJrt5uABFziQc7enXYrJ74J9GKQSMi8Ry8ebsxfPV?filename=OhShit.zip"
[Villains From Beyond]="${ipfsGateway}/ipfs/QmWx271xuk3Mv9XTBoVu5BDJvXFZdasawC2nhtV21WAaUU?filename=villains_en.zip"
)
+119
View File
@@ -0,0 +1,119 @@
#!/usr/bin/env bash
# shellcheck disable=SC2034,SC2154 # Sourced by audiogame-manager and installers with shared globals.
require_umu() {
if command -v umu-run &> /dev/null; then
return 0
fi
local message="This game requires umu-launcher. Please install umu-launcher and try again."
if declare -F agm_msgbox &> /dev/null; then
agm_msgbox "Audio Game Manager" "Audio Game Manager" "$message"
else
echo "$message" >&2
fi
return 1
}
get_umu_bottle() {
local gameId="$1"
if [[ -z "$gameId" ]]; then
echo "get_umu_bottle requires a game id." >&2
return 1
fi
export umuGameId="$gameId"
export WINEPREFIX="${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/protonBottles/${gameId}"
export GAMEID="$gameId"
export STORE="${umuStore:-none}"
export DISPLAY="${DISPLAY:-:0}"
mkdir -p "$WINEPREFIX"
}
install_proton_bottle() {
local gameId="$1"
shift || true
require_umu || return 1
get_umu_bottle "$gameId" || return 1
if [[ ! -f "${WINEPREFIX}/system.reg" ]]; then
umu-run ""
fi
if [[ $# -gt 0 ]]; then
umu-run winetricks "$@"
fi
}
umu_windows_path_to_unix() {
local windowsPath="$1"
local relativePath=""
if [[ "$windowsPath" =~ ^[cC]:\\ ]]; then
relativePath="${windowsPath:3}"
relativePath="${relativePath//\\//}"
printf '%s/drive_c/%s\n' "$WINEPREFIX" "$relativePath"
return 0
fi
winepath -u "$windowsPath"
}
run_umu_game() {
local windowsPath="$1"
local exePath=""
require_umu || return 1
if [[ -z "${umuGameId:-}" ]]; then
echo "UMU game id is not set for ${game[2]:-selected game}." >&2
return 1
fi
get_umu_bottle "$umuGameId" || return 1
exePath="$(umu_windows_path_to_unix "$windowsPath")"
if [[ ! -f "$exePath" ]]; then
echo "UMU executable not found: $exePath" >&2
return 1
fi
pushd "${exePath%/*}" > /dev/null || return 1
umu-run "$exePath"
popd > /dev/null || return 1
}
add_umu_launcher() {
local gameId="$1"
local windowsPath="$2"
shift 2
local launchSettings="umu|${windowsPath}|${game}|export umuGameId=${gameId}"
while [[ $# -gt 0 ]]; do
launchSettings+="|$1"
shift
done
if ! grep -F -q -x "$launchSettings" "$configFile" 2> /dev/null; then
echo "$launchSettings" >> "$configFile"
sort -t '|' -k3,3f -o "$configFile" "$configFile"
fi
}
set_umu_reg_value() {
local key="$1"
local valueName="$2"
local valueData="$3"
wine reg add "$key" /v "$valueName" /t REG_SZ /d "$valueData" /f
}
set_umu_app_winver() {
local exeName="$1"
local winVersion="$2"
set_umu_reg_value "HKCU\\Software\\Wine\\AppDefaults\\${exeName}" "Version" "$winVersion"
}
install_crlf_file() {
local sourceFile="$1"
local destFile="$2"
mkdir -p "${destFile%/*}"
perl -pe 's/\r?\n/\r\n/' "$sourceFile" > "$destFile"
}
stop_umu_bottle() {
if command -v wineserver &> /dev/null; then
wineserver -k 2> /dev/null || true
fi
}
+67
View File
@@ -0,0 +1,67 @@
#!/usr/bin/env bash
# Check for latest news
check_news() {
# For use by update scripts that want to source functions in this file.
[[ "$agmNoLaunch" == "true" ]] && return
trap return INT
# url for news file
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
agm_yesno 'Audiogame Manager News' 'Audiogame Manager News' 'Audiogame manager news is available. Would you like to play it now?' || return
sox -qV0 "$newsFile" -d &> /dev/null
echo -n "$newsTag" > "$newsPath"
fi
}
# Automatic update function
# Automatic update function
update() {
if ! [[ -d ".git" ]]; then
return
fi
# Check if we're in a detached HEAD state
if ! git symbolic-ref -q HEAD &> /dev/null; then
return
fi
local url="$(git ls-remote --get-url)"
if [[ "$url" =~ ^ssh://|git@|gitea@ ]] || [[ -z "$url" ]]; then
return
fi
git remote update &> /dev/null
local upstream='@{u}'
local home="$(git rev-parse @)"
local remote="$(git rev-parse "$upstream")"
if [[ "$home" == "$remote" ]]; then
return
fi
agm_yesno "Audiogame Manager" "Audiogame Manager" "Updates are available. Would you like to update now?" || return
# Perform git pull quietly, then show only the important changes
local updateResult
git pull --quiet >/dev/null 2>&1
updateResult=$?
# Get the important information: commit messages and summary
local changesSummary
changesSummary=$({
echo "UPDATE COMPLETED"
echo
echo "Recent changes:"
git log '@{1}..' --pretty=format:'• %an: %s' | tac
echo
echo "Update summary:"
git diff --stat '@{1}..' | tail -1
} 2>/dev/null)
# Show only the meaningful update information
agm_msgbox "Update Complete" "Audiogame Manager" "$changesSummary"
exit $updateResult
}
+9
View File
@@ -0,0 +1,9 @@
download "https://blindgamers.com/downloads/a-heros-call-freeware.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
export winVer="win7"
export winetricksSettings="vd=1024x768"
install_wine_bottle
# Dotnet is evil. That is all.
LC_ALL=C DISPLAY="" winetricks -q dotnet462 xna40
wineserver -k # Really!
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/a-heros-call-freeware.zip"
add_launcher "c:\Program Files\a-heros-call\A Hero's Call.exe"
+4
View File
@@ -0,0 +1,4 @@
download "https://agarchive.net/games/mt/adrian's%20doom.exe"
install_wine_bottle
wine "${cache}/adrian's doom.exe" /silent
add_launcher "c:\Program Files (x86)\Two Caring Citizens\Adrian's Doom!\adrian.exe"
+5
View File
@@ -0,0 +1,5 @@
download "http://www.vgstorm.com/aac/aac.zip" "https://www.agarchive.net/games/vg/adventure%20at%20c%20stages.7z"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/aac" "${cache}/aac.zip"
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/Program Files/aac/stages" "${cache}/adventure at c stages.7z"
add_launcher "c:\Program Files\aac\aac.exe"
+12
View File
@@ -0,0 +1,12 @@
download "http://download.dracoent.com/Windows/classic/AOSetup.exe"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle vb6run dx8vb quartz
cp -fv "${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.
# 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 (x86)\Draconis Entertainment\Alien Outback\ao.exe"
+4
View File
@@ -0,0 +1,4 @@
download "https://agarchive.net/games/other/AngelGift.zip"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/Angel Gift" "$cache/AngelGift.zip"
add_launcher 'c:\Program Files\Angel Gift\ag.exe'
+4
View File
@@ -0,0 +1,4 @@
download "https://agarchive.net/games/other/audiodisc.zip"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/audiodisc.zip"
add_launcher "c:\Program Files\audiodisc\disco.exe"
+8
View File
@@ -0,0 +1,8 @@
# shellcheck shell=bash disable=SC2154 # cache and WINEPREFIX are set by audiogame-manager
download "https://github.com/matatk/agrip/releases/download/2020.0-beta1/AudioQuake+LDL_2020.0-beta1_Windows.zip" "https://stormgames.wolfe.casa/downloads/quake.zip"
export winVer="win7"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/AudioQuake+LDL_2020.0-beta1_Windows.zip"
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/AudioQuake/id1" "${cache}/quake.zip"
add_launcher "c:\Program Files\AudioQuake\AudioQuake.exe"
alert "After you launch the game, press tab then enter and it should begin speaking."
+4
View File
@@ -0,0 +1,4 @@
download "https://axelek.pl/index/axel_pong.7z"
install_wine_bottle
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/Program Files/Axel Pong" "${cache}/axel_pong.7z"
add_launcher "c:\Program Files\Axel Pong\axel_pong.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG 15 Puzzle]}"
install_wine_bottle
wine "${cache}/FPB32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\FifteenB\FifteenB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG 2048]}"
install_wine_bottle
wine "${cache}/BG204832Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\BG2048B\BG2048.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Aces Up Solitaire]}"
install_wine_bottle
wine "${cache}/ASB32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\AcesUpB\AcesUpB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Alchemy]}"
install_wine_bottle
wine "${cache}/BAC32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\AlchemyB\AlchemyB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Battleship]}"
install_wine_bottle
wine "${cache}/BGB32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\BattleshipB\BGBattleship.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Boggle]}"
install_wine_bottle
wine "${cache}/BGB32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\BoggleB\BoggleB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Boxes]}"
install_wine_bottle
wine "${cache}/BXB32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\BoxesB\BoxesB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Brainiac]}"
install_wine_bottle
wine "${cache}/BRN32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\BrainiacB\BrainiacB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Chess Challenge]}"
install_wine_bottle
wine "${cache}/BGC32Setup10d.exe" /silent
add_launcher "c:\Program Files (x86)\Games\ChessB\BGChess.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Code Breaker]}"
install_wine_bottle
wine "${cache}/BCB32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\CodeBreakerB\BGCodeBreaker.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Cribbage Solitaire]}"
install_wine_bottle
wine "${cache}/BCS32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\CribSolB\CribSolB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Cribbage]}"
install_wine_bottle
wine "${cache}/BGC32Setup12e.exe" /silent
add_launcher "c:\Program Files (x86)\Games\CribbageB\CribbageB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Crossword Puzzle]}"
install_wine_bottle
wine "${cache}/BGX32Setup10h.exe" /silent
add_launcher "c:\Program Files (x86)\Games\CrosswordB\CrosswordB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Draw Dominoes]}"
install_wine_bottle
wine "${cache}/BDD32Setup.exe" /silent
add_launcher "c:\Program Files (x86)\Games\DrawDominoesB\DrawDominoesB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Elevens Solitaire]}"
install_wine_bottle
wine "${cache}/ESB32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\ElevensB\ElevensB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Fives Dominoes]}"
install_wine_bottle
wine "${cache}/BFD32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\FivesDominoesB\FivesDominoesB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Free Cell Solitaire]}"
install_wine_bottle
wine "${cache}/BGF32Setup20.exe" /silent
add_launcher "c:\Program Files (x86)\Games\FreecellB\FreecellB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Golf Solitaire]}"
install_wine_bottle
wine "${cache}/GSB32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\GolfSolitaireB\GolfSolitaireB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Hangman]}"
install_wine_bottle
wine "${cache}/HMB32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\HangmanB\HangmanB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Hearts]}"
install_wine_bottle
wine "${cache}/${BGH32Setup10b.exe}" /silent
add_launcher "c:\Program Files (x86)\Games\HeartsB\HeartsB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Klondike Solitaire]}"
install_wine_bottle
wine "${cache}/BGK32Setup10b.exe" /silent
add_launcher "c:\Program Files (x86)\Games\KlondikeB\KlondikeB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG LAP]}"
install_wine_bottle
wine "${cache}/LAP32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\LAP\LAP.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Master Mind]}"
install_wine_bottle
wine "${cache}/BMM32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\MastermindB\BGMasterMind.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Mine Sweeper]}"
install_wine_bottle
wine "${cache}/MSB32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\MinesweeperB\MinesweeperB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Nomination Whist]}"
install_wine_bottle
wine "${cache}/BNW32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\NomWhistB\NomWhistB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Penguin Solitaire]}"
install_wine_bottle
wine "${cache}/BPS32Setup10c.exe" /silent
add_launcher "c:\Program Files (x86)\Games\PenguinB\PenguinB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Poker Solitaire]}"
install_wine_bottle
wine "${cache}/BPS32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\PokerSolB\PokerSolB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Pyramid Solitaire]}"
install_wine_bottle
wine "${cache}/PSB32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\PyramidB\PyramidB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Scorpion Solitaire]}"
install_wine_bottle
wine "${cache}/BSS32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\ScorpionB\ScorpionB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Scrabble]}"
install_wine_bottle
wine "${cache}/BGS32Setup20.exe" /silent
add_launcher "c:\Program Files (x86)\Games\ScrabbleB\ScrabbleB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Simon]}"
install_wine_bottle
wine "${cache}/BGS32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\SimonB\SimonB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Spider Solitaire]}"
install_wine_bottle
wine "${cache}/SPB32Setup10b.exe" /silent
add_launcher "c:\Program Files (x86)\Games\SpiderB\SpiderB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Sudoku]}"
install_wine_bottle
wine "${cache}/SDB32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\SudokuB\SudokuB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Tablic Solitaire]}"
install_wine_bottle
wine "${cache}/SDB32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\TabSolB\BGTabSol.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Tri-Peaks Solitaire]}"
install_wine_bottle
wine "${cache}/TPB32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\TriPeaksB\TriPeaksB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Twenty 20 Cricket]}"
install_wine_bottle
wine "${cache}/T20B32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\T20CricketB\CricketB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Uno]}"
install_wine_bottle
wine "${cache}/BGU32Setup11a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\UnoB\UnoB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Word Builder]}"
install_wine_bottle
wine "${cache}/BWB32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\WordBuilderB\WordBuilderB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Word Candy]}"
install_wine_bottle
wine "${cache}/WCB32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\WordCandyB\WordCandyB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Word Jumble]}"
install_wine_bottle
wine "${cache}/BWJ32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\WordJumbleB\WordJumbleB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Word Maze]}"
install_wine_bottle
wine "${cache}/BWM32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\WordMazeB\WordMazeB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Word Solitaire]}"
install_wine_bottle
wine "${cache}/WSB32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\WordSolitaireB\WordSolitaireB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Word Target]}"
install_wine_bottle
wine "${cache}/WTB32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\WordTargetB\WordTargetB.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Word Yahtzee]}"
install_wine_bottle
wine "${cache}/BWY32Setup10.exe" /silent
add_launcher "c:\Program Files (x86)\Games\WordYahtzeeB\BGWordYahtzee.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[BG Yahtzee]}"
install_wine_bottle
wine "${cache}/BGY32Setup10a.exe" /silent
add_launcher "c:\Program Files (x86)\Games\yahtzeeB\BGYahtzee.exe"
+15
View File
@@ -0,0 +1,15 @@
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"
install_with_progress unzip "Extracting game files..." -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 -fv BlackHole/bin/*.dll "$WINEPREFIX/drive_c/Program Files/Balatro"
cp -fv "$cache/Tolk.dll" "$WINEPREFIX/drive_c/Program Files/Balatro/tolk.dll"
cp -fv "$cache/Tolk.dll" BlackHole/bin/tolk.dll
cp -fv ../version.dll "$WINEPREFIX/drive_c/Program Files/Balatro"
add_launcher 'c:\Program Files\Balatro\Balatro.exe' 'export WINEDLLOVERRIDES=version=n,b'
+5
View File
@@ -0,0 +1,5 @@
download "https://www.agarchive.net/games/gameMadnessInteractive/battle%20zone%2013.5%20setup.exe"
export winVer="win7"
install_wine_bottle
wine "${cache}/battle zone 13.5 setup.exe" /silent
add_launcher "c:\Program Files (x86)\Battle Zone\ss.exe"
+6
View File
@@ -0,0 +1,6 @@
download "http://files.tunmi13.com/projects_archive/bth.zip"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/$game" "${cache}/bth.zip"
add_launcher "c:\Program Files\\${game}\bth.exe"
+7
View File
@@ -0,0 +1,7 @@
get_installer "bf.zip" "https://tunmi13.itch.io/battlefield-2d"
export WINEARCH=win64
export winVer="win8"
# Uses standard wine path based on architecture (win32/win64)
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/bf.zip"
add_launcher "c:\Program Files\bf\bf.exe"
+8
View File
@@ -0,0 +1,8 @@
#//
download "https://oriolgomez.com/games/beat_windows.zip"
# Sapi is broken on win64 for now, and this game doesn't support nvda it seems.
export WINEARCH=win64
export winVer="win7"
install_wine_bottle mf
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/Beatstar Pro" "${cache}/beat_windows.zip"
add_launcher "c:\Program Files\Beatstar Pro\beatstar.exe"
+6
View File
@@ -0,0 +1,6 @@
#//Disable
download "https://nibblenerds.com/static/blades_of_glory.zip"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/Blades of Glory" "${cache}/blades_of_glory.zip"
install_discord_rpc_bridge
add_launcher "c:\Program Files\Blades of Glory\blades_of_glory.exe"
+9
View File
@@ -0,0 +1,9 @@
get_installer "Blind Drive 1.1.112.00i-win64.zip" "https://lofipeople.itch.io/blind-drive"
export WINEARCH=win64
export winVer="win8"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/blind-drive" "${cache}/Blind Drive 1.1.112.00i-win64.zip"
# Weird work around to get keyboard working.
winetricks -q usetakefocus=y
winetricks -q usetakefocus=n
add_launcher "c:\Program Files\blind-drive\Blind Drive.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH="win64" # Migrated to wine64
download "${ipfs[Bloodshed]}"
install_wine_bottle
cp "${cache}/bloodshed.exe" "$WINEPREFIX/drive_c/Program Files/"
add_launcher "c:\Program Files\bloodshed.exe"
+6
View File
@@ -0,0 +1,6 @@
export WINEARCH="win64" # Migrated to wine64
download "https://www.nyanchangames.com/softs/nn2_setup.exe"
export winVer="win7"
install_wine_bottle
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/nyanchangame/bk2" "${cache}/nn2_setup.exe"
add_launcher "c:\nyanchangame\bk2\play.exe"
+27
View File
@@ -0,0 +1,27 @@
export WINEARCH="win64" # Migrated to wine64
download "https://www.nyanchangames.com/softs/nn3_setup.exe"
export winVer="win7"
install_wine_bottle
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/nyanchangame/bk3" "${cache}/nn3_setup.exe"
if [[ ! -r "${cache}/bk3-dict.dat" ]]; then
echo "http://www.nyanchangames.com/order/bk3translate.html" | xclip -selection clipboard 2> /dev/null
agm_msgbox "Bokurano Daibouken 3" "Bokurano Daibouken 3" "If you would like English translations, the file is available at http://www.nyanchangames.com/order/bk3translate.html. Save the dict.dat file to your Downloads or Desktop directory. For convenience the url has been copied to your clipboard. Press enter when you are ready to continue."
fi
dictFile=""
for i in "${HOME}/Downloads/dict.dat" "${HOME}/Desktop/dict.dat" ; do
if [[ -r "$i" ]]; then
dictFile="$i"
fi
done
if [[ "${#dictFile}" -ge 3 ]] && [[ ! -r "${cache}/bk3-dict.dat" ]]; then
agm_yesno "Bokurano Daibouken 3" "Bokurano Daibouken 3" "Possible English translation file found at $dictFile. Would you like to use it for BK3?" && cp -fv "$dictFile" "${cache}/bk3-dict.dat"
fi
if [[ -f "${cache}/bk3-dict.dat" ]] ; then
cp -fv "${cache}/bk3-dict.dat" "${WINEPREFIX}/drive_c/nyanchangame/bk3/dict.dat"
if [[ -f "${cache}/nvdaControllerClient32.dll" ]] ; then
cp -fv "${cache}/nvdaControllerClient32.dll" "${WINEPREFIX}/drive_c/nyanchangame/bk3/data/nvdaControllerClient32.dll"
fi
else
rm -fv "${WINEPREFIX}/drive_c/nyanchangame/bk3/data/nvdaControllerClient32.dll"
fi
add_launcher "c:\nyanchangame\bk3\play.exe"
+6
View File
@@ -0,0 +1,6 @@
download "https://www.nyanchangames.com/softs/nn_setup.exe"
export WINEARCH="win64" # Migrated to wine64
export winVer="win7"
install_wine_bottle
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/nyanchangame/bk" "${cache}/nn_setup.exe"
add_launcher "c:\nyanchangame\bk\play.exe"
+6
View File
@@ -0,0 +1,6 @@
download "http://oriolgomez.com/games/bombercats_en.zip"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/bomvercats" "${cache}/bombercats_en.zip"
add_launcher "c:\Program Files\bomvercats\game.exe"
+5
View File
@@ -0,0 +1,5 @@
download "http://www.masonasons.me/softs/BopItEmulator3.1PasswordIsBopIt.7z"
export winVer="win7"
install_wine_bottle
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/Program Files/Bop It" "${cache}/BopItEmulator3.1PasswordIsBopIt.7z" -pBopIt
add_launcher "c:\Program Files\Bop It\bop.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH=win64
get_installer "bounce_bounce.rar" "https://kavyapriya.itch.io/bounce-bounce"
install_wine_bottle
unrar x "${cache}/bounce_bounce.rar" -op"$WINEPREFIX/drive_c/Program Files"
add_launcher "c:\Program Files\bounce_bounce\bounce.exe"
+6
View File
@@ -0,0 +1,6 @@
#//
download "https://hirotaka2014.sakura.ne.jp/mh0406/game/breed_memorial.zip" "${nvdaControllerClient32Dll}"
export winVer="win7"
install_wine_bottle cjkfonts
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/breed_memorial.zip"
add_launcher "c:\Program Files\Breed memorial\Breed memorial\breed memorial.exe"
+6
View File
@@ -0,0 +1,6 @@
get_installer "breu2.zip" "https://breu.itch.io/shadowhunt"
export WINEARCH=win64
export winVer="win8"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/breu2.zip"
add_launcher "c:\Program Files\breu2\breu2.exe"
+7
View File
@@ -0,0 +1,7 @@
download "http://www.kaldobsky.com/audiogames/castaways2beta.zip"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle vb6run dx8vb
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/castaways2" "${cache}/castaways2beta.zip"
wine "c:\Program Files\castaways2\Checkup.exe" /verysilent
add_launcher "c:\Program Files\castaways2\Castaways2.exe"
+7
View File
@@ -0,0 +1,7 @@
download "https://www.kaldobsky.com/audiogames/castaways.zip"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle vb6run dx8vb
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/castaways" "${cache}/castaways.zip"
wine "c:\Program Files\castaways\Checkup.exe" /verysilent
add_launcher "c:\Program Files\castaways\Castaways.exe"
+5
View File
@@ -0,0 +1,5 @@
download "http://files.tunmi13.com/projects_archive/coth.zip"
export winVer="win7"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/$game" "${cache}/coth.zip"
add_launcher "c:\Program Files\\${game}\game.exe"
+12
View File
@@ -0,0 +1,12 @@
download "https://download.dracoent.com/Windows/ChangeReactionSetup.exe"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle vb6run dx8vb quartz
cp -fv "${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 (x86)\Draconis Entertainment\Change Reaction\ChangeReactionGui.exe"
+4
View File
@@ -0,0 +1,4 @@
download "https://stormgames.wolfe.casa/downloads/chillingham.zip"
install_wine_bottle vb6run mfc42
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "$cache/chillingham.zip"
add_launcher "c:\Program Files\chillingham\Chillingham.exe"
+4
View File
@@ -0,0 +1,4 @@
download "${ipfs[Chopper Challenge]}"
install_wine_bottle vb6run dx8vb
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/chopper challenge.zip"
add_launcher "c:\Program Files\chopper challenge\Chopper.exe"
+7
View File
@@ -0,0 +1,7 @@
export WINEARCH=win64
export winVer="win7"
download "${ipfs[Christmas Chaos]}" "https://stormgames.wolfe.casa/downloads/Tolk.dll"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/ChristmasChaos.zip"
find "${WINEPREFIX}" -type f -name 'Tolk.dll' -exec cp -fv "${cache}/Tolk.dll" "{}" \;
add_launcher "c:\Program Files\ChristmasChaos\ChristmasChaos.exe"
+4
View File
@@ -0,0 +1,4 @@
download "https://www.agarchive.net/games/draconis/christmas%20whoopass%20setup.exe"
install_wine_bottle vb6run dx8vb
wine "${cache}/christmas whoopass setup.exe" /sp- /silent
add_launcher "c:\Program Files (x86)\Draconis Entertainment\Christmas Whoop Ass\wa.exe"
+6
View File
@@ -0,0 +1,6 @@
get_installer "clashes_of_the_sky.zip" "https://tunmi13.itch.io/clashes-of-the-sky"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/clashes_of_the_sky.zip"
add_launcher 'c:\Program Files\clashes_of_the_sky\clash.exe'
+9
View File
@@ -0,0 +1,9 @@
get_installer "codedungeon-win-64.zip" "https://stealcase.itch.io/codedungeon"
export WINEARCH=win64
export winVer="win8"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/code-dungeon" "${cache}/codedungeon-win-64.zip"
# Weird work around to get keyboard working.
winetricks -q usetakefocus=y
winetricks -q usetakefocus=n
add_launcher "c:\Program Files\code-dungeon\Code Dungeon.exe"
+5
View File
@@ -0,0 +1,5 @@
export WINEARCH=win64
export winVer="win8"
install_wine_bottle
get_steam 2684520 "https://store.steampowered.com/app/2684520/Conjury/"
add_launcher 'c:\Program Files\Conjury\release\Conjury.exe'
+6
View File
@@ -0,0 +1,6 @@
#//
export winVer="win7"
download "https://renovagames.com/bc/BC-Setup.exe"
install_wine_bottle cjkfonts
wine "${cache}/BC-Setup.exe" /silent
#add_launcher "c:\Program Files (x86)\"
+6
View File
@@ -0,0 +1,6 @@
export WINEARCH=win64
export winVer="win7"
download "https://samtupy.com/games/cm.zip"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/ConstantMotion" "$cache/cm.zip"
add_launcher 'c:\Program Files\ConstantMotion\cm.exe'
+5
View File
@@ -0,0 +1,5 @@
export winVer="win7"
download "http://oriolgomez.com/games/copter_en.zip"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/copter mission" "${cache}/copter_en.zip"
add_launcher "c:\Program Files\copter mission\game.exe"
+7
View File
@@ -0,0 +1,7 @@
download "http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta82.zip" "https://stormgames.wolfe.casa/downloads/Tolk.dll"
export WINEARCH=win64
export winVer="win8"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/Crazy-Party-beta82.zip"
find "${WINEPREFIX}" -type f -name 'Tolk.dll' -exec cp -fv "${cache}/Tolk.dll" "{}" \;
add_launcher "c:\Program Files\Crazy-Party-beta82\Crazy Party.exe"
+4
View File
@@ -0,0 +1,4 @@
download "https://www.agarchive.net/games/VIP/crazy%20tennis%20setup.exe"
install_wine_bottle
wine "${cache}/crazy tennis setup.exe" /sp- /silent
add_launcher "c:\Program Files (x86)\Crazytennis\crazytennis.exe"
+6
View File
@@ -0,0 +1,6 @@
export WINEARCH=win64
export winVer="win7"
download "http://masonasons.me/softs/CH2.0Win.zip"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/crime-hunter" "${cache}/CH2.0Win.zip"
add_launcher "c:\Program Files\crime-hunter\ch.exe"
+9
View File
@@ -0,0 +1,9 @@
download "https://www.agarchive.net/games/xl/DangerCityBeta2.exe"
install_wine_bottle vb6run dx8vb
wine "$cache/DangerCityBeta2.exe" /silent &
xdotool sleep 15 key --clearmodifiers --delay 200 Return 2> /dev/null
xdotool sleep 5 key --clearmodifiers --delay 200 Return 2> /dev/null
xdotool sleep 5key --clearmodifiers --delay 200 Return 2> /dev/null
xdotool sleep 10 --clearmodifiers --delay 200 Return 2> /dev/null
wineserver -w
add_launcher 'c:\Program Files\Danger City\dc.exe'
+6
View File
@@ -0,0 +1,6 @@
download "http://oriolgomez.com/games/wheel_en.zip"
# Uses standard wine path based on architecture (win32/win64)
export winVer="win7"
install_wine_bottle
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/danger on the wheel" "${cache}/wheel_en.zip"
add_launcher "c:\Program Files\danger on the wheel\game.exe"
+6
View File
@@ -0,0 +1,6 @@
#//
# No custom bottle needed - use standard wine path based on architecture
download "https://www.agarchive.net/games/pb/Dark-Destroyer-Setup.exe"
install_wine_bottle ie6
wine "$cache/Dark-Destroyer-Setup.exe" /silent
add_launcher 'c:\Pbgames\Dark_destroyer\darkdestroyer.exe'
+7
View File
@@ -0,0 +1,7 @@
export winVer="win7"
export winetricksSettings="vd=1024x768"
download "https://kaldobsky.com/audiogames/Daytona.zip"
install_wine_bottle vb6run dx8vb quartz
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/daytona" "${cache}/Daytona.zip"
wine 'c:\Program Files\daytona\checkup.exe' /verysilent
add_launcher "c:\Program Files\daytona\Daytona.exe"

Some files were not shown because too many files have changed in this diff Show More