ACCESSICRUSH 0.8.19 BETA An unofficial, speech-only accessibility mod for Candy Crush Saga on Windows. SUPPORTED GAME AND REQUIREMENTS - Candy Crush Saga from Microsoft Store, version 1.3390.1.0, Windows x64. This beta checks the exact game executable. Other versions are not supported; a Store update may require a new mod build. Game files are not included. - Windows 10 or Windows 11, 64-bit, with Windows PowerShell and Windows Script Host. - NVDA running before you start. Tolk and the NVDA controller are included. - Microsoft Edge WebView2 Runtime for Facebook sign-in. It is normally already installed on Windows. If missing, install the Evergreen Runtime from: https://developer.microsoft.com/microsoft-edge/webview2/ - Python and the helper's .NET runtime are bundled. You do not need to install them. The bundled Python 3.7 runtime is an older compatibility dependency for this beta's Frida bridge; it is private to this folder and does not replace Python. INSTALLATION AND AUTOMATIC START 1. Extract the entire ZIP to a permanent folder you can write to, for example Documents\AccessiCrush. Do not launch it from inside the ZIP. 2. Start NVDA. If updating, close the game and run Stop-For-Update.cmd from the new download before replacing the old files. 3. Open Install.cmd in the extracted folder. The accessible console reports any problems. No administrator access is needed. 4. The installer checks the game version, registers a silent watcher at Windows sign-in for your Windows user, starts it now, and creates a desktop shortcut named Candy Crush - AccessiCrush Beta. 5. Open Candy Crush normally, or use that shortcut. The watcher attaches when Candy Crush is focused. Initial discovery can take several seconds. You hear Connecting to Candy Crush, then AccessiCrush ready. Keep the extracted folder in place. To move it, run Disable-AutoStart.cmd first, move the folder, and run Install.cmd in its new location. Install does not copy files elsewhere, patch the game's installed files, or change audio routing. Only one watcher and one reader run at a time. Replacing an older installation requires stopping its watcher/reader before starting the new copy. The idle watcher uses Windows PowerShell, so closing the game releases the bundled Python runtime. Automatic attachment remains available for the next launch. For an older installation whose runtime is locked: extract this download into a separate folder, run its Stop-For-Update.cmd, then replace the old files. Run Install.cmd from the final location after updating. ALTERNATIVE LAUNCHERS - Play-Candy-Crush.vbs: start the watcher and open the game together. - Start-AccessiCrush.vbs or Watch-AccessiCrush.vbs: start the silent watcher now. - Attach-Now.vbs: attach once to an already open game, without enabling startup. - Stop-For-Update.cmd: stop AccessiCrush readers, watchers and login helpers. - Disable-AutoStart.cmd: remove the sign-in startup entry and stop all mod helpers. To remove the beta, disable startup, close the game/reader, delete its desktop shortcut, and delete the extracted folder. Your Candy Crush save is separate. FIRST LAUNCH, TERMS AND NATIVE ACCOUNT SCREENS The first-run Terms of Use screen is announced before board/menu discovery. Windows-native dialogs use stable automation IDs and localized captions for detection. Game-rendered legal panels use native scene/control names, including Terms of Use, Privacy Policy, checkboxes and Accept/Continue when present. Use Tab/Shift+Tab (or arrows on game-rendered panels), then Enter to activate a control. Accept only if you agree, or close the game. No consent control is automatically activated. AccessiCrush continues after the dialog closes. Native account/email screens also use ordinary Tab, Shift+Tab and typing. Do not hold the NVDA modifier to navigate. The mod never supplies your credentials or accepts terms/permissions for you. FACEBOOK SIGN-IN Choose Continue with Facebook in the game's account screen. The bundled helper opens an accessible, modern Facebook window automatically, replacing the old blank sign-in experience for that attempt. Choose your cookie preferences, enter your credentials yourself, and review Facebook's Continue/permissions screen. You may need to choose Continue even if you have used this game before. The helper returns the completed login to the game's existing handler and closes. Close the helper window to cancel; the game receives cancellation. The helper checks the callback origin/path and the original state parameter when present. Credentials, cookies and complete login URLs are never written to mod logs. The browser uses a temporary isolated profile and attempts to delete it after exit; a profile still locked by WebView2 can remain under your Windows Temp folder in AccessiCrush-Facebook. It is not included in this archive. If an old blank Facebook window was already open before attaching the mod, close it and choose Continue with Facebook again so the helper can capture a fresh request. Facebook/King account linking, server sync and friends permissions are controlled by those services. Check your account and level after signing in; this mod does not merge accounts or promise that separate saves will be merged. GAMEPLAY KEYS - Arrow keys: explore one grid cell at a time. Row and column numbers start at 1. - Space or Enter: select a candy; select an adjacent candy to attempt a swap. - Shift+Arrow: attempt a direct swap in that direction. - Backspace: cancel selection. Escape also cancels a selected candy. - R: repeat the current candy. - W: read the current row. C: read the current column. - S: read moves remaining, objective counts, score and moves made. - A: read the immediate cell above, right, below and left, without moving. - Shift+A: read up to two cells in each direction. Holes/edges are explicit. - B / Shift+B: next / previous blocker, starting nearest to your current cell. - O / Shift+O: next / previous objective-related square, starting nearest. B and O report locations without changing your cursor or selected candy. - H / Shift+H: next / previous supported special-match clue. The clue gives a shape, reference row/column and approximate area. It never gives the swap, selects candies, ranks moves, or plays a move for you. - M / Shift+M: next / previous move-area clue, speaking one reference cell without revealing the swap. Your cursor and selection stay unchanged. - F3: open game settings. - T: optional repeat of the last tutorial text. Tutorials/popups normally speak automatically; you do not have to press T to discover them. - F1: spoken key help. F2: pause/resume mod keyboard controls. - F5: request background rediscovery if the reader appears stale. - Ctrl+Alt+F12: stop the reader while Candy Crush is focused. - Tab during gameplay: describe the current cell. With no candy selected, Escape uses the current menu's Back/Close action when available, otherwise it goes to the game normally. MENUS, TABS, POPUPS AND SLIDERS - Tab / Shift+Tab: next / previous item. Arrows also navigate menu items. - Enter / Space: activate the focused item. - Escape: Back or Close when available. - R or S: repeat the current menu/popup description and selected item. - Page Down / Page Up: scroll a list, then use Tab to explore visible items. Scrolling uses the native mouse wheel and restores the pointer; no click occurs. - Left / Right on a slider: adjust it. Up/Down or Tab chooses another item. - In the player-name editor, Enter begins typing. Tab returns to Save, Shift+Tab to Cancel, and Escape cancels editing. Activate Save explicitly to save. Events, Social and Pins announce that their tab is open. Their item lists omit map/HUD controls behind the tab. Back to level map and explicit Switch to ... tab items provide navigation. A popup announces its own title and the underlying tab when known; only the popup's controls are exposed. Closing it announces Popup closed and the restored tab. Nested popups expose the innermost detected dialog. Starting boosters announce descriptions, availability and selection when native data is available. Activating Play starts a level and may use a life. Purchases, sending lives, accepting gifts and adding friends are real game operations. The mod does not automatically confirm them or Store purchases. NVDA AND ORIGINAL GAME AUDIO The mod has no visible overlay or console while playing and uses Tolk speech. The game remains its original window and keeps its original sound. NVDA modifier, Ctrl, Alt and Windows shortcuts pass through. NVDA+R is an NVDA shortcut, not a mod key: after it opens a recognition result, arrows and other keys stay with NVDA until you close that result with Escape. The mod itself does not use OCR. If you Alt+Tab to another program, its keys are not captured by the mod. BOARD DETAILS AND OPTIONAL ASSISTANCE Boards can have irregular shapes and holes. Adjacent means directly touching above/below/left/right; a missing cell cannot be selected or swapped into. Horizontal striped candies announce that they clear a row; vertical striped candies announce that they clear a column. Special effects can extend much farther than the two-cell A shortcut. Blockers and objectives differ. B includes known obstacles and locks, licorice swirls and waffles; jelly alone is an objective layer. O locates active goals with positive remaining counts when native position data is available. A layered objective count may exceed the number of squares. Count-only, unspawned or unsupported targets are reported as having no located squares; S still reads counts. H uses the game's cached legal swaps plus local ordinary-candy geometry. It names four/five in a straight line, the actual length for longer lines, L/T/cross patterns, and optional square geometry. It checks both orientations. It does not predict cascades, special-candy combinations or every later-game rule. A missing clue does not mean there are no legal moves. Wait for the board to settle. Settings include Announce clears, off by default. Turn it on to hear native clear counts and known blocker damage. It does not count falling candies as clears. Include square-pattern clues is also off by default and experimental: finding 2-by-2 geometry does not guarantee that the current game rules award a fish. BETA LIMITS AND TROUBLESHOOTING This is a beta for one exact game build. Not every later level, timed event, server offer, friend-request state or blocker variation has been tested. Menu scoping was checked against recorded Events/Social/Pins and nested-popup data. Facebook's corrected modern-browser login worked in a live user test; service changes can still break it. Startup terms and keyboard handoff have automated checks, but were not tested by deleting a player's real save or resetting the app. If nothing speaks: check NVDA is running, focus the game, wait for discovery, then try Attach-Now.vbs. F2 may have paused controls; F5 can refresh stale data. Background Windows Store apps may suspend; bring the game to the foreground. Do not reset/reinstall Candy Crush just to troubleshoot this beta: local boosters and other device data may be lost. Game sound/device routing is not modified. BUG REPORTS AND LOG LOCATIONS Logs are in the extracted AccessiCrush folder, beside Install.cmd and this README, not inside the runtime folder. Example: Documents\AccessiCrush\gameplay.jsonl. On an installation at C:\AccessiCrush-Beta they are C:\AccessiCrush-Beta\gameplay.jsonl, C:\AccessiCrush-Beta\accessicrush.log and C:\AccessiCrush-Beta\autoattach.log. After reproducing a problem, close Candy Crush so the mod releases its files. Attach these files to your bug report if present: - gameplay.jsonl: speech, menus, board state and input diagnostics. - gameplay.jsonl.1, .2 and .3: older gameplay logs, useful if the event has rotated. - accessicrush.log: connection and error details. - autoattach.log: automatic startup, attachment and shutdown details. Include the mod/game versions, screen or level, approximate time, keys pressed, what you expected and what you heard. For an unnamed control, leave that screen open if convenient and report nearby text; a log alone may not identify its action. Send reports using https://lillaire.net/#contact and its Attach files control. Attach up to five files totaling 10 MiB; ZIP larger logs or send fewer files. Logs can contain spoken game text, player names, messages and board data. Review and redact personal information before sharing. Do not send passwords, login URLs, save files or your entire runtime folder. No logs are uploaded automatically. No personal logs, save data, account details, tokens or runtime caches are bundled. CONTENTS AND CREDITS Source scripts, native-data bridge, portable Python/Frida, Tolk/NVDA controller, modern Facebook helper and its .NET runtime, install/startup scripts and licenses are included. See THIRD-PARTY-NOTICES.txt, LICENSE-Frida.txt, runtime/LICENSE.txt, speech/ and facebook/ for third-party licensing. AccessiCrush is unofficial and is not endorsed by King, Meta or Microsoft. 0.8.1 input fix: native-window checks run on a separate background thread. Refreshing a confirmed game window no longer passes keys through or blocks input. The arrow-repeat limiter applies to held keys, not separate quick taps. 0.8.2 popup fix: native named unlock/tutorial actions are exposed even when their control type is not registered as a CButton. Actions use visible native entity positions through normal mouse input, restoring the pointer afterward; no OCR or image matching is used. Popup speech takes priority over queued tutorial speech, and empty menus no longer repeat their description on each key. IN-LEVEL BOOSTER KEYS (0.8.19 BETA) Top-row 1 through 9 select the corresponding visible booster, ordered left to right in the game's booster bar, including locked slots. The name, stock and instructions are spoken. Selection alone does not click or spend a booster. For Lollipop Hammer and Striped Brush: select its number, explore a square with ordinary arrows, then press Enter (or Space) to activate and target it. For Free Switch: select its number; choose the first candy with arrows and Enter, then an immediately adjacent candy and Enter. Only the final Enter sends input. For UFO and Party Booster: select its number, then press Enter to use one immediately. Escape or Backspace cancels selection. Shift+Arrow cannot swap while a booster is selected. A board or move-count change cancels a pending use. Starting boosters still use the level briefing controls and are separate from these number keys. Locked, zero-stock or unknown-stock boosters are not clicked; no shop is opened. A visible timed-booster clock can permit a timed use without an item count. First-use instructions can open before targeting. Dismiss that native popup and resume targeting; an already selected booster is not activated a second time. Booster controls and targeting use native entities, counts and the game's own coordinate conversion, followed by ordinary pointer input. No OCR is used. Selection, target sequencing, empty-stock guards and cancellation passed automated tests. Exact booster consumption/effects still require live player validation; the developer did not spend a player's boosters to run the tests. The out-of-moves dialog now announces extra-move quantity, gold-bar cost and your balance together. Close, Play on, gold-bar options and progress information have explicit labels. Closing the offer may lead to a separate game confirmation. 0.8.4: Overlapping popup roots are ranked by their native render-layer depth. The in-level Candy Shop exposes its Close action, offer contents, cash prices, gold balance and scrolling, without exposing the disabled extra-moves offer behind it. Closing the shop restores and announces the underlying dialog. 0.8.5: Shop navigation caches static offer icons and the Close entity for up to five seconds, invalidating on popup, offer text/control or viewport changes. Purchase activation still refreshes the shop data. Pointer targeting now uses physical DPI coordinates and aspect-preserving centered game-area mapping, with a short press/release interval. This fixes Close and off-center booster targets in wide windows. A live Close test returned the shop to Out of moves; repeated isolated shop reads measured about 0.06 seconds on the development machine. 0.8.6: Level selection follows the native loaded episode catalog as you progress, instead of assuming the first map. Ordinary menu navigation no longer runs full memory discovery. Level selection keeps its position across map refreshes. 0.8.7: M speaks a reference cell near a legal move, without revealing the swap. It uses the native game move list. Reverse directions of the same swap count once. H keeps its less detailed special-pattern clues. Hints never make a move, use a booster, or predict cascades. 0.8.8: Team details, member cards, Team Clash tabs, ranks and shield counts have contextual labels. Information and milestone sheets hide the event controls behind them and use their own Close action. Event-card duplicate Open buttons are removed. Milestone booster durations are readable; exact booster icon types are not yet identified on this event sheet. 0.8.9: Team feed request-lives and reaction icons have explicit labels from native resources. Reactions include the update text. Feed updates are read-only entries; Enter repeats them without trying to activate a disabled game button. 0.8.10: M and Shift+M cycle forward and backward through move-area clues, like O/Shift+O and H/Shift+H. F3 opens settings. Clues still reveal only a reference cell and never move your cursor, select a candy, or make a swap. 0.8.11: Mod navigation labels stay in English across installed game languages. Native localization keys and caption mappings identify translated controls; player names and feed messages retain their original text. This is stable-label support, not a fully translated mod. Unknown server-generated variants can still require fixes. Scene changes now trigger bounded background recovery without replaying swaps or purchases. F5 requests the same background recovery. Stale candy and booster selections are cleared when the board changes. First-run legal detection supports localized Windows controls and the native ServiceLayerPopup/AcceptTerms panels, including links and checkbox state when exposed. Tests use translated fixtures and simulated first-run states; a fresh installation has not been live-tested for this release. No save was reset. Map models created after the reader attaches are tracked automatically. Missing level lists can recover through the same bounded background discovery. 0.8.12: Startup Play and sign-in controls are exposed after terms; the decorative logo is excluded. Swaps and booster coordinates no longer require an optional input proxy that is absent on some installations. The actual native board input handler receives the same down/move/up sequence. This backend passed simulated event tests; a live swap on the affected Lenovo installation was not performed. Closing the game releases the reader/runtime, including when Windows keeps the game process suspended. The idle watcher uses Windows PowerShell. Install and Disable-AutoStart stop old helpers; Stop-For-Update is included for locked updates. 0.8.13: Discovery has up to two minutes instead of failing after twenty seconds. A delayed startup speaks one progress notice; accessicrush.log records elapsed time, memory read and candidate counts every five seconds. Failed initialization releases its bridge hooks and session before retrying. Automated checks cover slow discovery, timeout, cancellation and cleanup; the reported affected computer has not yet been retested. Keep the game focused while connecting. 0.8.14: More verbose discovery diagnostics: Windows/Python/Frida versions, CPU count, cache rejection reasons, bridge loading/configuration stages, memory-read failures, scan speed, region properties and counts of objects found. The log distinguishes a slow scan from empty results or a failure after scanning. These diagnostics do not establish a cause until the affected PC is retested. 0.8.15: Native age/date-entry forms and generic native editable/modal dialogs receive keyboard handoff, including before game discovery. Detection uses UI control types, identifiers and selected localized prompts, never OCR. The player enters their own age and activates confirmation; nothing is filled or accepted automatically. Regional age gates passed simulated UI tests but are not live-tested. Automatic popup, tutorial and gameplay notices queue without requesting speech interruption; countdown-only popup updates are suppressed. Manual navigation and Repeat can still interrupt, and the screen reader's own settings still apply. Native filled-star and sugar-star artwork is read on supported result panels; empty outlines and unrelated icons are excluded. Tests use native asset rules and simulated results; a newly completed level has not been live-tested in this update. On the map, Page Up scrolls toward earlier levels and Page Down toward later ones. These send the game's normal wheel input and do not unlock or start levels. Earlier levels is a collapsed group for older loaded map sections: Enter expands, Enter again or Escape collapses it. Scroll earlier to load sections not present. Live testing navigated from the level-31 area back to levels 1-10 without playing. Episode labels are spoken when supplied by native text or identified special introductory map metadata. Some current map scenes have no exposed episode name; reused decoration filenames are not treated as episode names. Exposed narrative localization text is retained and queued even if it disappears quickly; T can repeat the last narrative when no tutorial is available. No cutscene is replayed, fabricated, paused or skipped. A level-10 cutscene in this current Store build has not been confirmed, and textless video is not described. 0.8.16: Daily Stamps introduction is isolated from the screen behind its native input blocker, so a background chest is no longer offered as an unnamed action. Added native Daily Stamps scene names from game resources. Chest buttons say View [tier] chest rewards, matching the game's information-tooltip action rather than claiming a reward. Reward tooltips have an isolated native Close/back action. The introduction was checked live without activating Play or the chest; tooltip navigation was checked with captured/simulated native UI. Unknown-control reports now include the native control path, kind and position for diagnosis. 0.8.17: Includes the Daily Stamps available-card information screen as well as the main screen. Chest reward-information actions use validated normal pointer input, keeping the pointer in place while the tooltip is active and restoring it when dismissed. Opening and closing the information tooltip was tested live; no reward was claimed. Durations and quantities are announced as reward previews. Individual reward types are not exposed by this reader yet and are explicitly reported as unavailable, rather than guessed from unidentified icon data. 0.8.18: Pointer actions check the real window at the destination before and after moving the cursor. If another window or the desktop would receive the click, no button input is sent. Logs include the planned screen point and game geometry. For the Booster Unlocked Sweet confirmation only, an overlapping Explorer XAML window can trigger one temporary game-window adjustment. The mod refreshes and validates the same confirmation, clicks only inside the game, then restores the original window placement even on error. This can briefly resize the game. If you switch away during this adjustment, restoration waits until Candy Crush is focused again, so it does not activate the game over another application. The same smaller-window confirmation sequence was tested live: Sweet dismissed, focus stayed in Candy Crush, and the original window placement was restored. The automatic routing/restoration and no-click guards also passed targeted tests. No other dialog or purchase uses the temporary-placement fallback. 0.8.19: The Having fun / Rate Candy Crush prompt exposes its native close icon as Not now. Close rating request, plus Rate Candy Crush, opens the rating screen. Not now is selected first, and Escape closes the request. The map behind it is not navigable while this popup is open. The controls were verified against the live scene and captured-screen tests; no rating action was activated or submitted. The covered-window fallback can also handle these explicit rating-dialog actions, with restoration deferred while an external rating screen has focus. It does not apply to purchases or legal consent. Other occluded clicks remain blocked.