A screen reader accessibility mod for DRAGON BALL: Sparking! ZERO on PC (Steam).
This mod reads game UI elements aloud through your screen reader (NVDA, JAWS, or SAPI fallback), making the game navigable for blind and visually impaired players. It tracks keyboard focus, reads menu labels, announces battle HUD changes, and more — all without altering gameplay or overriding game controls.
- Title screen, main menu, options, and pause menu
- Settings read with label, current value, and description
- Dialogs and help windows announced automatically
- List position ("3 of 12") and tab changes
- Button prompts read as text (e.g. "Triangle" instead of an icon)
- Character names and DP costs in the roster grid (208 characters supported)
- Team slots with character name, DP, and slot number
- Skills with type, name, button combo, cost, and description
- Team overview with total DP
- Both player sides readable
- HP, KI, and Sparking gauge changes for you and your opponent
- Skill point changes
- Match timer with countdown
- Works in local and online matches
- Player Match room lobby with player names, status, and win counts
- Room ID input with digit-by-digit navigation
- Player join/leave announcements
- Rank Match lobby
- DRAGON BALL: Sparking! ZERO (Steam, PC)
- A screen reader: NVDA (recommended), JAWS, or Windows SAPI
- Windows 10 or later (64-bit)
AccessForge is the easiest way to install and keep the mod up to date. It takes care of everything for you — the mod loader, dependencies, and the mod itself. It works fully with screen readers like NVDA.
- Download
AccessForge.exefrom AccessForge Releases - Place it anywhere you like and run it
- Find Sparking Zero Access in the mod list, select it, and click Install
That's it. When updates are released, they show up in the Updates tab — select and click Update, no manual file management needed.
-
Install UE4SS v3.0.1 into
SparkingZERO\Binaries\Win64\:- Download from UE4SS releases
- Extract all files into the
Win64directory
-
Install UTOC Signature Bypass:
- Required for UE4SS to work with this game
- Place
dsound.dllandplugins\DBSparkingZeroUTOCBypass.asiin theWin64directory
-
Install the mod:
- Copy the contents of
SparkingZeroAccess\intoSparkingZERO\Binaries\Win64\Mods\SparkingZeroAccess\Scripts\ - Add
SparkingZeroAccess : 1toMods\mods.txt
- Copy the contents of
-
Launch the game. You should hear "Press confirm to start" on the title screen.
SparkingZeroAccess/ # The Lua mod (deployed to game)
main.lua # Orchestrator: focus tracking, keybinds, init
helpers.lua # TryCall, TryGetProperty, GetWidgetName, IsValidRef
speech.lua # Speech init, Speak/SpeakQueued
widget_reader.lua # Text reading, widget matching, label resolution
poll_trackers.lua # Dialog, help window, screen change, room polling
icon_parser.lua # RichText icon markup to readable text
battle.lua # Battle HUD: HP/KI/Sparking, opponent tracking
team_overview.lua # Team setup: slot navigation, character names
chara_roster.lua # Character roster: grid names, skills
chara_names.lua # Texture ID to character name lookup table
skill_list.lua # Skill list overlay reading
debug_tools.lua # Debug dump utilities (F3-F5)
speech_bridge.dll # Lua C module bridging to UniversalSpeech
UniversalSpeech.dll # Screen reader abstraction library
nvdaControllerClient.dll # NVDA support
ZDSRAPI.dll # Additional speech support
speech_bridge/ # Speech bridge source code
speech_bridge.c # Lua C module source
speech_bridge.dll # Compiled bridge
The mod polls for keyboard focus changes every 16ms using UE4SS's LoopAsync. When focus moves to a new widget:
- Fast path: Check
WidgetLabelstable for known widget names (instant lookup) - Screen-specific handlers: Character select, team overview, skill list, room ID input, etc. each have dedicated handlers
- Generic path: Read widget text via
captionproperty or child TextBlock iteration - Slow fallback:
FindAllOf("TextBlock")scan filtered by widget path
Speech output uses UniversalSpeech via a custom Lua C module (speech_bridge.dll) that statically links Lua 5.4 and dynamically loads UniversalSpeech.
From the speech_bridge/ directory:
gcc -shared -o speech_bridge.dll speech_bridge.c lua-5.4.7/src/liblua54.a -luser32
Requires WinLibs MinGW-w64 (installable via winget install winlibs.mingw-w64).
After modifying files in SparkingZeroAccess/:
accessforge install --from SparkingZeroAccess
Press F5 in-game to toggle continuous debug dumping. Dumps are written to SparkingZERO\Binaries\Win64\AE_debug\debug_dump.txt every 250ms when changes are detected. Each entry includes the focused widget with subtree text, visible widget classes, and all visible text on screen.
Additional dumps:
- F3 — Battle state and gauge values
- F4 — Character select texture IDs
When DLC characters are added to the game, update chara_names.lua with the new texture IDs and display names. The texture ID format is T_UI_ChThumbP1_XXXX_YY_ZZ. Run uv run scripts/Update-CharaNames.py to pull the latest data from the community spreadsheet.
- Team slot character names use texture ID lookup — new DLC characters need to be added to
chara_names.lua - Some options screens have values displayed as images instead of text (e.g. language selection)
- Control style selector uses a full-screen overlay without keyboard focus
- Victory and match result screens have code written but need a safe polling approach
This project is an accessibility mod created to make DRAGON BALL: Sparking! ZERO playable for blind and visually impaired users. It does not modify game files or alter gameplay.
DRAGON BALL: Sparking! ZERO is developed by Spike Chunsoft and published by Bandai Namco Entertainment.