Fixes three claims that would mislead a cold session: the levelCursorPopup patching note (reversed in Phase 2), the tryInteract classification claim (corrected in Phase 3), and the answered-questions list. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Accessibility mod — documentation
Research and planning for making Sulphur Memories: Alchemist 0.4.2 blind-accessible.
| Doc | Contents |
|---|---|
| 01-architecture.md | How the game is built: states, console, level model, keybindings, where text already exists. |
| 02-hooking-strategy.md | How to attach the mod with (near) zero edits to game files. |
| 03-implementation-plan.md | Six phases, each independently testable. |
| 04-open-questions.md | Decisions needed before/while building. |
| 05-decisions.md | Answers given so far, and what they imply. Supersedes Q1/Q2/Q7/Q10. |
The short version
Three findings shape everything:
-
The game is already keyboard-complete. All 28 states implement
keypressed; there's a full rebindable-keys system with contexts. The accessibility gap is that nothing announces what is focused — not that things are unreachable. This makes the job much smaller than a typical mouse-driven game. -
The game already writes the text we need to speak.
console.printis a single chokepoint for all log messages.level.getCursorMessage()returns tile/creature descriptions.getCursorPopupStats()feeds the item popups in five screens. We are mostly re-routing existing strings to speech, not writing a description engine. -
Everything is a
required singleton, anddebug.getupvalueworks. Module functions can be monkey-patched in place, and the file-localselectedOptionvariables in menu states are readable from outside. A one-line bootstrap inmain.luais the only unavoidable edit.
Proposed footprint: 1–3 lines added to main.lua, everything else new files under accessibility/. A git baseline tagged vanilla-0.4.2 makes re-application on future versions a rebase.