A MelonLoader mod that adds screen reader accessibility to Cyber Knights: Flashpoint using SRAL (Screen Reader Abstraction Library) and Harmony runtime patching.
- Mod Status: ✅ Fully functional - announces UI elements via screen reader
- Screen Reader Support: NVDA, JAWS, SAPI, UIA, and braille displays
- Framework: MelonLoader 0.6+ with IL2CPP interop
- Current Version: 1.0.0
- Install the game from Steam
- Download the latest release from the Releases page
- Extract to game directory (typically
C:\Program Files (x86)\Steam\steamapps\common\Cyber Knights Flashpoint) - Launch the game - screen reader will announce "Cyber Knights Flashpoint accessibility mod loaded successfully!"
- Navigate with Tab/Arrow keys - UI elements will be spoken automatically
- Clone this repository:
git clone https://github.com/Orinks/flashpoint-access.git - Run setup script:
.\scripts\setup-melonloader.ps1 - Launch game once to generate IL2CPP assemblies
- Update references:
.\scripts\update-references.ps1 - Build SRAL (optional): See
docs\building-sral.md - Deploy the mod:
.\scripts\deploy-mod.ps1
Flashpoint-access/
├── CKFlashpointAccessibility/ # Main mod project (C# class library)
├── tools/ # Downloaded tools (Il2CppDumper, etc.)
├── dumped/ # IL2CPP dumped assemblies (post-purchase)
├── scripts/ # PowerShell automation scripts
├── docs/ # Guides and documentation
└── README.md # This file
- VS Code: https://code.visualstudio.com/
- .NET 8.0 SDK: https://dotnet.microsoft.com/download (LTS version)
- Git (optional): https://git-scm.com/download/win
ms-dotnettools.csharp- C# by Microsoftms-dotnettools.csdevkit- C# Dev Kitgithub.copilot- GitHub Copilotgithub.copilot-chat- GitHub Copilot Chat
- MelonLoader: IL2CPP mod loader framework
- SRAL: Screen Reader Abstraction Library (build from source or use pre-built)
- Menu Navigation: All buttons and UI elements announce on focus
- Keyboard Navigation: Full Tab/Arrow key support with auto-focus
- Multiple Screen Readers: Works with NVDA, JAWS, Windows Narrator, and SAPI
- Braille Display Support: Via SRAL library
- Configurable: Settings in
UserData\MelonPreferences.cfg - Rate Limiting: Prevents announcement spam
- Debug Logging: Detailed logs for troubleshooting
- Install game from Steam
- Run
scripts\setup-melonloader.ps1to install MelonLoader - Launch game once to generate IL2CPP assemblies
- Run
scripts\update-references.ps1to configure project
- Use IL2CPP dumps (
dumped/dump.cs) to identify UI classes - Write Harmony patches in
Patches/UIPatches.cs - Test with
.\scripts\deploy-mod.ps1 - Check
MelonLoader\Latest.logfor debugging
- Build release configuration
- Package mod DLL + SRAL dependencies
- Create GitHub release with installation instructions
- MelonLoader: Unity IL2CPP mod loader (screen reader accessible!)
- Harmony: Runtime method patching
- SRAL: Screen Reader Abstraction Library (NVDA, JAWS, SAPI, etc.)
- .NET 6: Modern C# development
The mod uses runtime patching to intercept Unity UI events:
- MelonLoader loads the mod on game startup
- Harmony patches intercept UI events (
OnSelect,OnPointerClick, etc.) - Text extraction uses reflection to read from IL2CPP game components
- SRAL announces text via active screen reader (NVDA, JAWS, etc.)
- Rate limiting prevents duplicate announcements
See IMPLEMENTATION-NOTES.md for technical details.
- Game: https://store.steampowered.com/app/1021210/Cyber_Knights_Flashpoint/
- MelonLoader: https://github.com/LavaGang/MelonLoader
- SRAL: https://github.com/blindgoofball/SRAL
- Harmony: https://harmony.pardeike.net/
- Implementation Notes - Technical architecture
- Testing Guide - How to test the mod
- UI Classes to Patch - IL2CPP class reference
- Runtime Type Resolution: No compile-time dependencies on game types
- IL2CPP Interop: Uses
AccessToolsand reflection for game assembly access - Multi-Screen-Reader Support: SRAL handles NVDA, JAWS, SAPI, UIA, braille
- Private Field Access: Extracts text from custom
STETextBlockcomponents - Harmony Patching: Intercepts
OnSelect,OnDeselect, and other UI events - Rate Limiting: 100ms delay between announcements to prevent spam
- Automated Deployment: PowerShell scripts for building and testing
Edit UserData\MelonPreferences.cfg in the game directory:
[CK_Flashpoint_Accessibility]
Enabled = true
AnnounceButtons = true
AnnounceMenuItems = true
SpeechDelay = 100
InterruptSpeech = true
DebugTextExtraction = falseMod not loading?
- Check
MelonLoader\Latest.logfor errors - Ensure
SRAL.dllis in theModsfolder - Verify screen reader (NVDA/JAWS) is running
No speech output?
- SRAL initialization message should appear in log
- Try restarting your screen reader
- Check Windows speech settings
Text not extracted correctly?
- Enable debug logging:
DebugTextExtraction = true - Check log for component type information
- Report issue with log excerpts
This is an open-source accessibility project! Contributions are welcome:
- Bug Reports: Open an issue describing the problem
- Feature Requests: Suggest new accessibility features
- Pull Requests: Submit improvements to text extraction or UI coverage
- Testing: Help test with different screen readers (NVDA, JAWS, Narrator)
This project is licensed under the MIT License - see the LICENSE file for details.
- SRAL: See
tools/SRAL/LICENSE(Screen Reader Abstraction Library) - MelonLoader: LGPLv3 (https://github.com/LavaGang/MelonLoader)
- Harmony: MIT (https://github.com/pardeike/Harmony)
- Il2CppInterop: LGPL (https://github.com/BepInEx/Il2CppInterop)
Created for accessibility improvements to make Cyber Knights: Flashpoint playable with screen readers.
Developer: Joshua Orinks (@Orinks) Framework: MelonLoader + SRAL AI Assistant: GitHub Copilot (Claude Sonnet 4.5)
This is an independent accessibility mod and is not affiliated with or endorsed by Trese Brothers, the developers of Cyber Knights: Flashpoint.