- C++ 86%
- Python 11.7%
- Lua 1.2%
- Papyrus 0.8%
- PowerShell 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
SRAL's NVDA backend LoadLibrary's nvdaControllerClient.dll, so that file had
to be placed in the game folder by hand -- an undocumented install step that
silently cost users all speech when missed. Prism talks to NVDA over its
ncalrpc RPC interface using a MIDL client stub generated at build time from
idl/nvdaController.idl, and reaches JAWS over COM, so nothing ships alongside
the plugin. Verified against a live NVDA with no controller DLL present.
Backend policy changes in two ways. SRAL was initialised with SAPI excluded,
so a user without a screen reader got silence; Prism's registry is ordered by
priority and we now take the best that initialises, which means OneCore or
SAPI speak when no reader is running. It also brings ZoomText, SenseReader,
ZDSR, PC-Talker and BoyPCReader along for free.
SRAL re-picked its engine inside every SRAL_Speak. Prism caches its backend,
so SpeechManager reproduces that itself: a speak failure that means the
backend is gone reselects immediately, and while sitting on an OneCore/SAPI
fallback it re-probes every 10 seconds so a screen reader started after the
game -- or one that crashed and restarted -- gets picked up. Backend instances
are explicitly not thread-safe, hence the mutex around speech.
Build notes, all of which are load-bearing:
- /WHOLEARCHIVE is required. Backends self-register from static initialisers
in object files nothing references, so without it the registry is empty and
nothing speaks. It also pulls in Prism's delay-load failure hook, which is
what turns a missing PCTKUSR.dll into "backend unavailable" instead of a
crash.
- /LTCG is required because Prism's CMake enables IPO unconditionally, with
no cache variable to override, so prism.lib carries /GL objects.
- PrismInstall.cmake exports prism.lib but not the static libraries it builds
out of third_party/, so the package script copies prism_dep_*.lib into the
install tree and fails loudly if it ever finds none.
- WIN32_LEAN_AND_MEAN/NOGDI/NOMINMAX have to be command-line defines: prism.h
includes windows.h, whose ERROR macro eats REX::ERROR and whose
DETECTION_TYPE collides with RE::DETECTION_TYPE, and MSVC discards anything
written above the #include "pch.h" line.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
||
| .claude | ||
| Data | ||
| docs | ||
| lib | ||
| res | ||
| src | ||
| tools | ||
| .clang-format | ||
| .clang-tidy | ||
| .gitignore | ||
| .gitmodules | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| EXCEPTIONS | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
| xmake-requires.lock | ||
| xmake.lua | ||
Fallout 4 Access
An F4SE plugin that makes Fallout 4 accessible to blind and visually impaired players. Uses Prism (Platform-agnostic Reader Interface for Speech and Messages) to provide screen reader support through NVDA, JAWS and others, falling back to Windows OneCore or SAPI voices when no screen reader is running.
Features
Accessible Menus
- Main Menu, Pause Menu - Full navigation and announcements
- Settings Menu - All settings categories with values read aloud
- Save/Load Menus - Save slot details including character level and playtime
- Pip-Boy - Inventory, Stats, Data (Quests/Workshops/Stats), Map, and Radio pages
- Container/Looting - Item lists with stats, weight, and value
- Barter Menu - Vendor trading with side-switching (F key)
- Terminal Menus - In-game computer terminals
- Dialogue Menu - NPC conversation options with speaker names
- VATS - Target selection and body part announcements
- Level-Up Menu - Perk selection and descriptions
- Workbenches - Cooking, Power Armor, and Robot workbenches
- Workshop & Supply Lines - Settlement building and caravan management
- Message Boxes & Confirmation Dialogs - Prompts and choices
- S.P.E.C.I.A.L. Menu - Character creation stat allocation
- Examine Menu - Item inspection
- Loading Screens - Loading screen text read aloud
Gameplay Accessibility
- Object Scanner - Scans nearby objects by category (NPCs, items, doors, containers) with subcategories, locked door detection, and corpse loot tracking
- Crosshair Feedback - Announces what you're looking at
- Auto-Aim - Continuous target tracking assistance
- Auto-Walk - Navigate to map markers and scanned objects
- Audio Hit Markers - Distinct sounds for hits, critical hits, and kills
- HUD Notifications - Item pickups, location discoveries, and XP gains read aloud
- Combat Stats (H key) - Press H to hear health, ammo, and other combat stats
- Contextual Info - Carry weight and caps on Pip-Boy inventory
Requirements
- Fallout 4 — works on both the next-gen update (Anniversary Edition) and the original 1.10.163 runtime (the version used by downgraded installs and Fallout: London). A single download supports both; the right version is detected automatically, with nothing to configure.
- F4SE (Fallout 4 Script Extender) — use the build matching your game version
- Windows 10 or later
- A screen reader: NVDA (recommended) or JAWS. ZoomText, SenseReader, ZDSR, PC-Talker and BoyPCReader are also supported. Without a screen reader the mod speaks through Windows OneCore or SAPI voices instead.
- Address Library for F4SE — the database for your game version (next-gen or the original-runtime "all-in-one")
Nothing else needs to be installed for screen reader support. In particular there is no nvdaControllerClient.dll to copy anywhere — the plugin talks to NVDA directly. If a previous version of this mod had you place that file in your game folder, you can delete it.
Installation
- Install F4SE and Address Library if you haven't already
- Copy the
fallout4accessfolder into your Fallout 4 Data directory (or install via a mod manager) - The folder structure should be:
Data/ F4SE/ Plugins/ fallout4access.dll Sound/ FX/ F4A/ UI/ (sound files) - Load
fallout4access.espin your mod load order
Building from Source
Requirements
- XMake 2.8.2+
- C++23 compiler (MSVC or Clang-CL)
- Windows x64
Clone
git clone --recurse-submodules https://git.alex19ep.me/alex19EP/f4access
cd fallout4access
Build
xmake build
Build output is in build/windows/x64/release/fallout4access.dll.
Install to Mod Organizer 2
Set the environment variable XSE_FO4_MODS_PATH to your MO2 mods directory, then:
xmake install
Generate Visual Studio Project (Optional)
xmake project -k vsxmake
License
This project is licensed under the GNU General Public License v3.0.
Credits
- CommonLibF4 - Reverse-engineered F4SE API
- Prism - Platform-agnostic Reader Interface for Speech and Messages (MPL-2.0), statically linked
- F4SE - Fallout 4 Script Extender