This repository is an accessibility-focused branch of the open-source Perfect Dark PC port. It adds screen-reader output, spatial audio navigation, object and character scanners, aiming feedback, and other nonvisual interfaces while preserving the original gameplay.
The project is being developed and tested primarily with blind players. It is already possible to navigate many menus, training activities, campaign levels, and Combat Simulator matches without sight, but this remains a work in progress. Expect occasional inaccessible objects, unclear audio cues, and level-specific gaps. Testing and detailed reports are welcome.
The accessibility work does not include Perfect Dark or any extracted game assets. You must provide your own legally obtained supported ROM.
Blind and screen-reader users should read the practical accessibility guide before playing. It explains setup, the major speech and audio systems, all accessibility keyboard shortcuts, configuration, and how to capture a useful diagnostic when something goes wrong.
For the easiest Windows setup:
- Download an accessibility-enabled Windows package from this fork's Releases page, or ask the project maintainer for the latest test package.
- Extract the whole archive. Keep the executable and all supplied DLL files together.
- Put a supported US revision 1 ROM in the package's
datadirectory and name itpd.ntsc-final.z64. - Start your screen reader, if you use one, before launching
pd.x86_64.exe. Without an active screen reader, the Windows build falls back to its built-in OneCore or SAPI voice. - Headphones are strongly recommended because most navigation and targeting cues are spatial.
If the main menu is not spoken, see Troubleshooting.
- Screen-reader narration for menus, mission briefings, objectives, HUD messages, weapon changes, results screens, and other important text.
- Spatial scanners for doors, interactable objects, pickups, friendly or neutral characters, enemies, hazards, and supported mission targets.
- A virtual cane that sweeps the space ahead and describes barriers, openings, drops, stairs, ramps, crouch passages, and ladders with sound.
- Responsive targeting feedback, including direction, elevation, body region, protected or breakable targets, special devices, scopes, and the FarSight.
- A spoken and sonified compass, four player-placeable audible markers, and authored mission landmarks.
- Accessible support for devices such as the CamSpy, R-Tracker, IR Scanner, X-Ray Scanner, Threat Detector, Data Uplink, Door Decoder, ECM Mine, and Reprogrammer.
- Combat Simulator radar queries, contact alerts, King of the Hill guidance, player and team status queries, and accessible scenario menus.
These systems communicate information already available through the game's visual interface or established gameplay rules. They are intended to provide equal access, not automated play, extra health, or hidden information.
The recommended ROM is:
ntsc-final, also known as US V1.1 or US Rev 1- Filename:
pd.ntsc-final.z64 - MD5:
e03b088b6ac9e0080440efed07c1e40f
The upstream port also supports these ROMs, though this accessibility branch is
developed and tested mainly with ntsc-final:
| Region/version | ROM filename | MD5 | Notes |
|---|---|---|---|
| US V1.0 | pd.ntsc-1.0.z64 |
7f4171b0c8d17815be37913f535e4e93 |
Supported but not recommended |
| Japanese final | pd.jpn-final.z64 |
538d2b75945eae069b29c46193e74790 |
Requires the matching custom executable |
| PAL final | pd.pal-final.z64 |
d9b5cd305d228424891ce38e71bc9213 |
Requires the matching custom executable |
The port supports keyboard and mouse, Xbox-style controllers, and N64-style
controllers. Controls can be rebound in pd.ini.
The best-supported setup is an Xbox-style controller and keyboard used together. Use the controller for ordinary movement, aiming, combat, menus, and interaction, and keep the keyboard available for changing accessibility settings and requesting accessibility information while you play.
| Action | Keyboard and mouse | Xbox controller |
|---|---|---|
| Fire / accept | Left mouse button or Space | Right trigger |
| Aim mode | Right mouse button or Z | Left trigger |
| Use / cancel | E | B for previous/cancel; A for use/accept |
| Reload | R | X |
| Previous weapon | Mouse wheel forward | B |
| Next weapon | Mouse wheel back | Y |
| Weapon radial menu | Q | Left bumper |
| Alternate fire mode | F | Right bumper |
| Reset vertical view | End | Right stick click |
See the accessibility shortcut table for F1 through F12 commands.
The accessibility build currently targets 64-bit Windows because its speech backend uses Prism. Install MSYS2 and the MinGW64 toolchain, SDL2, zlib, CMake, Python, Make, and Git. Then configure and build from the MSYS2 MinGW64 environment:
cmake -G"Unix Makefiles" -Bbuild .
cmake --build build -j4 -- -OThe executable is build/pd.x86_64.exe. The build copies its required MinGW,
SDL2, zlib, and Prism runtime DLLs beside the executable so it
can be launched from Windows Explorer.
To create a clean accessibility-enabled Windows package from PowerShell:
powershell -ExecutionPolicy Bypass -File tools\build_windows_dist.ps1 -EnableAccessibilityThe archive is written to build/dist/pd.zip. It intentionally excludes the
ROM, extracted assets, saves, logs, diagnostics, and personal pd.ini. Omitting
-EnableAccessibility creates a vanilla comparison package with accessibility
disabled.
For other platforms, ROM versions, dependencies, and upstream port details, refer to the upstream Perfect Dark port.
Developers should read the architecture and detailed feature reference.
The most valuable contribution is a precise blind-player test report: include the level, difficulty, task, what cue or speech was expected, what happened, and a Shift+F2 diagnostic capture number when possible. The diagnostic log is local and comprehensive; review it before sharing if that matters to you. File reports through the repository's Issues page.
This branch builds on the work of the Perfect Dark decompilation and PC port
communities. Upstream credits include the
Perfect Dark decompilation, the
Perfect Dark PC port, pd-extract,
sm64-port audio work, libultraship/fast3d contributors, minimp3, 1964GEPD,
Mouse Injector, and everyone who has contributed fixes and testing.
Third-party notices for the accessibility speech components are provided in THIRD_PARTY_NOTICES.md and in packaged license files.