No description
  • Game Maker Language 73.3%
  • C 12.2%
  • C++ 7.9%
  • Python 3.4%
  • C# 1.7%
  • Other 1.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-27 19:55:47 +02:00
abbrev root commit 2026-09-27 19:55:47 +02:00
ext root commit 2026-09-27 19:55:47 +02:00
gml root commit 2026-09-27 19:55:47 +02:00
installer root commit 2026-09-27 19:55:47 +02:00
patch root commit 2026-09-27 19:55:47 +02:00
recipes root commit 2026-09-27 19:55:47 +02:00
sounds/Voices root commit 2026-09-27 19:55:47 +02:00
tools root commit 2026-09-27 19:55:47 +02:00
vendor root commit 2026-09-27 19:55:47 +02:00
.gitignore root commit 2026-09-27 19:55:47 +02:00
build.sh root commit 2026-09-27 19:55:47 +02:00
README.md root commit 2026-09-27 19:55:47 +02:00
run.sh root commit 2026-09-27 19:55:47 +02:00

Access Delicious 2

Screen-reader accessibility mod for Cook, Serve, Delicious! 2!! (Windows, Steam, v2.7 "SD Update"). A port of Access Delicious (the CSD3 mod, ../accessDelicious3): same approach, same speech (PRISM: NVDA, JAWS, SAPI...), same keys wherever CSD2 allows.

How it works

Same as the CSD3 mod: data.win is GameMaker bytecode, patched with UndertaleModCli.

  • gml/gml_Object_obj_csd2a_*.gml: the controller's events (created from O_initvars, persistent).
  • gml/lib/*.gml: all mod functions, as methods on the controller, concatenated alphabetically into Create. Create-time statements may only use things from files that sort before them (so the fallback's silent-object list lives in fallback.gml).
  • patch/patch.csx: imports the mod, creates the controller, runs mod hotkeys first in O_foodbrain Begin Step, keeps the controller alive across instance_deactivate_all (pause menu, day end), and routes every draw_text* through the controller (text capture, now with opacity: CSD2 menus mark the focused row by drawing it opaque and the rest dimmed).
  • ext/accessdelicious.c: the DLL, unchanged from the CSD3 mod (exports still named csd3a_*, env vars CSD3A_QUIET/CSD3A_PORT). vendor/accessdelicious-dev.dll is the CSD3 build of it (control server on 127.0.0.1:47700 always on).
  • abbrev/, recipes/: generators, as in CSD3, run against CSD2's decompiled scripts in re/.

Modules

file covers
orders.gml tickets (O_foodbar): 14 prep stations keyed 1..9, 0, -, =, [, ] (global.KEY_PS<n>, spoken as "minus", "left bracket"...), chores, drinks, desserts, holding-station required/optional, leaving/walked out/patience restored, burnt, "needs a holding station" when the key only shakes the ticket
holding.gml holding stations (O_holdingstationbar, empty ones are O_holdingstationreserve), same lifecycle as CSD3; Shift+B overview
cook.gml the recipe pane, as CSD3; holding-station prep pane by category (Space); ignored keys while a pane is open; cancelled holding-station panes
day.gml clock, begin/finish/rush hour banners, Shift+D, Shift+M
dayend.gml the results panel (labels are icons in the game): Up/Down list
splash.gml O_splashstartend: bonus objectives (your restaurant), Chef for Hire start and medal cards
mainmenu.gml O_mainmenu: sidebar, tips, save slots, chefs, tutorials, intro story, email, Teragon Tower
catalog.gml O_itemcatalogdisplay: food catalog, day setup, mode, equipment, Chef for Hire shifts, pantry, buzz
options.gml options pages, display-change countdown, key rebinding menu
pause.gml in-day pause menu
designer.gml restaurant designer (basic), unlock popups
buffers.gml Left/Right: Holding Stations / Orders buffers; Up/Down: items
fallback.gml reads any other drawn text (title, tutorials, popups)

Keys (mod)

  • Shift+F1..F8 holding station status (the game opens stations with Tab+1..8)
  • Shift+order key (Shift+1..9, 0, -, =, [, ]) one order in detail, with seconds of patience left
  • Shift+O orders grouped by food and state · Shift+I order keys by patience, with seconds left
  • Shift+B all holding stations · Shift+D time, rush hour, buzz, patience, tips (in menus: YUM level, money, unread email)
  • Shift+R / K / W re-read the pane / its keys / what the order wants (twice: what's left)
  • Shift+M today's results and the medal rules · Shift+H help for this screen
  • Alt+K keys read when a pane opens · Alt+V order-number voice (or off) · Alt+Page Up/Down its volume
  • Shift+Page Up/Down speech rate (SAPI only; CSD3's Shift+= / Shift+- are order keys here)
  • Left Ctrl stop speech
  • During a day: Left/Right switch buffers, Up/Down move. Results panel: Up/Down walk the results.
  • Order-number sounds: sounds/Voices/<voice>/<station>.ogg; the CSD3 voices stop at 7, so stations 8-14 are spoken instead until files are added.

Build, deploy, run (Windows, Git Bash)

./build.sh           # patch backup/data.win.orig into dist/ (UndertaleModCli at ~/tools/utmt)
./build.sh deploy    # also copy into the game folder (keeps data.win.orig there)
./build.sh restore   # put the original data.win back
./run.sh --quiet     # launch with speech only logged (tests)
tools/ctl.py state   # control channel (see the CSD3 README); tools/t.sh sends keys, prints new speech
  • Log: <game folder>/accessdelicious.log. Decompiled code: re/win_gml/CodeEntries (local only).
  • Test notes: injected keys need the game window focused; injected arrow keys don't register in this runner (use W/A/S/D in menus), real ones do.
  • The CSD2 save folder is %LOCALAPPDATA%\NEW_CSD2_PS4Steam (slots nS_CSD2_LocalSave.ini).

Not done yet

  • Release packaging: installer/ is still the CSD3 installer and needs mingw + xdelta3 to build for CSD2; a release DLL (-DCSD3A_RELEASE) needs mingw too.
  • Not heard live yet: Up/Down on the results panel (arrow injection), emails, co-op page, equipment purchase, designer object placement, drinks and side dishes in play.