audiogame-manager
Installer and launcher for Windows based audio games under wine for Linux.
Usage
./audiogame-manager.sh -c
Check your system for components needed by the audiogame manager program.
./audiogame-manager.sh -h
Get usage instructions.
./audiogame-manager.sh -i
Select from a list of games to install.
With no arguments, the list of installed games will be displayed. In all the menus, both installer and launcher, use the up and down arrow keys to find the game you want. Press enter on the game to perform the action. For more detailed help, try the -h flag.
Use ./audiogame-manager.sh -s to open the launcher without automatically
replacing NVDA controller DLLs with the nvda2speechd versions. This also works
with launch options, for example ./audiogame-manager.sh -s -l bottle-name.
Uppercase -S remains the speech-rate option.
To skip replacement on every launch, add skipDllReplace="true" to
${XDG_CONFIG_HOME:-$HOME/.config}/storm-games/audiogame-manager/settings.conf.
Replacement is also skipped when wine-access.exe is running under the current
user, regardless of which screen reader started it. Wine Access starts on demand,
so use the flag or setting when it has not started yet. These controls leave
already-replaced DLLs as they are and apply to launch-time changes; individual
game installers and update scripts still install their speech support, including
Tolk DLLs, as before.
Language and Keyboard
if you are using a language on your system other than English, you may need to temperarily change the keyboard layout while playing some games. To find out which keyboard layout you are currently using, run the following command:
setxkbmap -print -verbose 10 | grep -m1 'layout:'
If the layout is not us, and if you are having some problems with keys not working, before you launch the game, run the following command to switch keyboard layout:
setxkbmap us
When you are done with the game, switch back to your original layout so things will work as expected. The following example will switch your keyboard back to the Czech layout.
setxkbmap cz
Default Voice
Check help for flags and configuration file options.
./audiogame-manager.sh -h
Voice names used must exactly match the way they appear in the set-voice.sh menu. Here are a few examples.
- MSMike
- MSSam
- RHVoice
Arcadelux speech under Wine
Arcadelux's Prism NVDA backend uses an RPC discovery function that Wine does
not implement. Audio Game Manager prepares Prism's native Speech Dispatcher
Wine bridge on the first launch, using the same Prism release bundled with the
game. This requires an x86_64 host, CMake, Make, a C/C++ compiler, Wine development
tools (winegcc, wineg++, and winebuild), pkg-config, and Speech Dispatcher
development files. No administrator privileges are used by the launcher.
The bridge is cached under ${XDG_CACHE_HOME:-$HOME/.cache}/audiogame-manager/prism-wine/.
A game update that changes Prism's version triggers a matching bridge build at
next launch. The launcher restores the Windows placeholder beside Arcadelux.exe
and adds the matching host module directory to WINEDLLPATH, preserving any
existing entries. Other games keep their usual launch behavior.
Tekken 3
Choose Tekken 3 from ./audiogame-manager.sh -i. This is a Windows
game running under Wine and belongs in audiogame-manager. It uses the normal
shared ~/.local/wine64 bottle, not a separate emulator or native Linux game.
You must supply your own Tekken 3 (USA), three-track BIN/CUE disc dump.
The installer displays an alert with the location and expected filenames.
Place these four files together in
${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/tekken-3-disc/:
Tekken 3 (USA).cueTekken 3 (USA) (Track 1).binTekken 3 (USA) (Track 2).binTekken 3 (USA) (Track 3).bin
The CUE must refer to those names. Other regions, ISO, CHD, and combined BIN layouts are not supported. Missing files, unexpected track sizes, and a disc executable that differs from the tested USA release stop installation before downloads. The disc files are read without modification, outside AGM's download cache. After installation, the extracted game data is sufficient for play.
The installer downloads the tested PC-port commit
b6e941378ad03dbd834fef340bd8d90bae6e430b and the latest stable Access release
from GitHub. It verifies the mod archive against GitHub's published SHA-256
checksum, checks the supported mod layout and Prism DLL, verifies the pinned
port executable/extractor, and uses native Linux Python 3 to extract game data.
Allow approximately 1 GB for installed files, in addition to your original dump.
Python 3 is an additional installer dependency.
Speech uses the same Prism 0.18.3 Speech Dispatcher Wine bridge as Arcadelux, with the build requirements listed above. The bridge is prepared on launch and cached for reuse. No NVDA replacement DLL or Windows Python is needed. The base port stays pinned because the access mod hooks its executable. Mod releases are resolved automatically; a changed Prism DLL or unsupported archive layout stops installation or updating until AGM's integration is updated.
The game installs in ~/.local/wine64/drive_c/Program Files/Tekken 3 Access/.
Select Tekken 3 in AGM to launch the access executable. It starts in a
window with p1_device = "auto", using the first connected controller. Connect
your controller before launching. Options/Start starts the game, the D-pad
moves, and Cross confirms menus on a PlayStation controller.
Controller mode disables ordinary game keyboard input, even without a connected
controller; the mod's function keys still work. To play with the keyboard, set
p1_device = "keyboard" in settings.toml and restart. Keyboard controls are
Enter for Start, arrows to move, and Z/A/X/S for Square/Triangle/Cross/Circle.
The documentation button opens the bundled manual, including the mod keys.
To update an existing AGM installation, close Tekken 3 and run from this checkout:
bash game-scripts/tekken3-update.sh
This resolves the latest stable Access release on each run, without the original disc dump or another game-data extraction. It checks the installed port executable, preserves settings, controller selection, memory cards, logs and mod preferences, and refreshes the manual. Replaced files are backed up beside the game folder; the completion message gives the version and backup path. GitHub API failures, missing release assets or checksums, and incompatible archives stop the update; there is no fallback to a stale release. Routine mod releases need no version or checksum edits in AGM. A published checksum verifies the download's integrity, but does not establish that a future mod release works correctly under Wine.
In 1.0.1, Shift+F1 raises the distance hum volume and Control+F1 lowers it, with ten steps and zero for off. The chosen level is remembered. Fight sounds go quiet while the pause menu or command list is open and resume with the fight.
In 1.0.2, Shift+F2 raises music volume and Control+F2 lowers it. Level ten is the normal game volume; zero turns music off. The level is remembered and also applies to movie audio. Fighters' voices, hits, menu sounds and mod sounds keep their existing volume.
Before submitting changes, test installation with missing or incorrect disc
files and with a valid USA dump. In the installed game, check the loaded
announcement, menu and character selection, F1 distance/F2 health, fight sounds,
pause/resume, controller input if available, and saving/relaunching. Also check
Arcadelux speech if modifying the shared Prism helper. Logs are
T3Access/T3Access.log and T3Access/launch.log in the game folder; copy them
before another launch overwrites them.
After updating, check both hum-volume shortcuts, level zero, and persistence
after restarting. Check sound suppression and resumption in a normal fight,
Tekken Force and Tekken Ball, including the pause command list. Confirm your
controller/keyboard selection and existing memory-card saves still work.
Check both music-volume shortcuts, levels zero and ten, and persistence after
restarting. Check music in fights and movies, and confirm voices, hits, menu
sounds and mod sounds are unaffected.
Run the offline release, installer and updater checks with
python3 tests/tekken3_setup_tests.py. These use temporary fixtures and do not
access the network, start Wine or change installed games.
City of Division
Choose City of Division from ./audiogame-manager.sh -i. The installer
downloads the Windows setup from BlindGames
and runs it silently in the shared Wine64 bottle. The game installs to
C:\Program Files\City of Division and uses Windows 10 compatibility.
AGM adds its launcher only after setup succeeds and cityofdivision.exe exists.
The bundled NVDA controller DLLs use AGM's existing launch-time speech handling,
including the -s option described above.
On X11, AGM uses xdotool to move the game's hidden 1-by-1 window on-screen
once per launch. Without this, the language menu can speak but ignore keys,
even after selecting Wine in the window manager. Recovery targets only the
new game process, stops after restoring its window, and does not switch
workspaces. You can then switch away and back using your normal window list.
The window recovery requires xdotool and does not run in the -g debugger mode.
Before submitting, review the diff and test installation and launch using both
console and graphical menus. Check keyboard navigation, screen-reader speech,
game audio, connecting to the game service, and quitting/relaunching. Confirm an
existing game in the shared Wine64 bottle still launches and speaks. A disposable
Wine installation verified setup and the executable path; live gameplay and
screen-reader behavior still require testing. Run the isolated failure checks
with bash tests/city_of_division_tests.sh; these do not start Wine or use the
network or installed games. Run bash tests/city_of_division_focus_tests.sh for
the isolated window-recovery and launch checks. For live acceptance, close and
relaunch City of Division twice, check the language menu and main menu keys,
then switch away and back using the window list. Confirm the game accepts keys
after returning and does not pull focus back while you use another window.
AI-assisted contributions
AI-assisted contributions are welcome. The person submitting the contribution remains responsible for reviewing and testing the changes before submission. Please review the generated diff, run the relevant tests, and describe what changed and how it was tested.