@wasm-gaming/rsdkv4-wasm 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -160,6 +160,11 @@ export interface Rsdkv4InputDefaults {
160
160
  /**
161
161
  * The engine's own default bindings. See {@link Rsdkv4InputDefaults}.
162
162
  *
163
+ * Directions are the arrow keys. This build's `ProcessInput()` also reads `KeyW`,
164
+ * `KeyA`, `KeyS` and `KeyD` as a second set of them, and takes those three scancodes
165
+ * off `x`, `y` and `z` to do it — so the table below is what a *claiming* host should
166
+ * bind, and the engine under SDL polling answers to both.
167
+ *
163
168
  * This replaces the old `RSDKV4_KEYMAP`, which nothing read and which was wrong in
164
169
  * three ways for want of ever being checked against the engine: it listed 9 of the
165
170
  * 14 buttons, and bound `select` to `ShiftLeft` where the engine's default is `Tab`.
@@ -1 +1 @@
1
- {"version":3,"file":"rsdkv4.options.d.ts","sourceRoot":"","sources":["../../src/rsdkv4.options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsdkv4.options.d.ts","sourceRoot":"","sources":["../../src/rsdkv4.options.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,11 @@ export const RSDKV4_BUTTONS = [
51
51
  /**
52
52
  * The engine's own default bindings. See {@link Rsdkv4InputDefaults}.
53
53
  *
54
+ * Directions are the arrow keys. This build's `ProcessInput()` also reads `KeyW`,
55
+ * `KeyA`, `KeyS` and `KeyD` as a second set of them, and takes those three scancodes
56
+ * off `x`, `y` and `z` to do it — so the table below is what a *claiming* host should
57
+ * bind, and the engine under SDL polling answers to both.
58
+ *
54
59
  * This replaces the old `RSDKV4_KEYMAP`, which nothing read and which was wrong in
55
60
  * three ways for want of ever being checked against the engine: it listed 9 of the
56
61
  * 14 buttons, and bound `select` to `ShiftLeft` where the engine's default is `Tab`.
@@ -1 +1 @@
1
- {"version":3,"file":"rsdkv4.options.js","sourceRoot":"","sources":["../../src/rsdkv4.options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsdkv4.options.js","sourceRoot":"","sources":["../../src/rsdkv4.options.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,16 @@ export declare const RSDKV4_VIDEO: {
54
54
  readonly baseHeight: 240;
55
55
  readonly aspect: "16:9";
56
56
  };
57
+ /**
58
+ * A screen of RSDKv4's own in-canvas Dev Menu (Debug.cpp), as {@link
59
+ * RsdkDevMenuBridge.open} names them.
60
+ *
61
+ * `'categories'` is the engine's `SELECT A STAGE LIST` — PRESENTATION / REGULAR /
62
+ * SPECIAL / BONUS — and `'stages'` the scene list under one of them. Those two are the
63
+ * only native way to reach the BONUS list: the packs' own menu scenes (Sonic 1 and 2's
64
+ * `LEVEL SELECT` and `STAGE MENU`) can load a regular stage and nothing else.
65
+ */
66
+ export type RsdkDevMenuScreen = 'main' | 'player' | 'categories' | 'stages';
57
67
  /** RSDKv4-specific bridge for a host's debug/stage-select UI. */
58
68
  export interface RsdkDevMenuBridge {
59
69
  getStageList(): Array<{
@@ -64,6 +74,26 @@ export interface RsdkDevMenuBridge {
64
74
  }>;
65
75
  loadStage(categoryIdx: number, stageIdx: number): void;
66
76
  setPaused(paused: boolean): void;
77
+ /**
78
+ * Whether the loaded wasm carries {@link open}. False means an engine built before
79
+ * the bridge existed — a host should hide the button rather than offer a dead one.
80
+ */
81
+ readonly canOpen: boolean;
82
+ /**
83
+ * Open the engine's own Dev Menu at `screen`, with `category` selecting the stage
84
+ * list for `'categories'` (preselected) and `'stages'` (listed). Categories are the
85
+ * engine's own indices, the ones {@link getStageList} is ordered by — 2 is BONUS.
86
+ *
87
+ * This is what Escape does natively: the request is handed to the engine thread
88
+ * (`ENGINE_INITDEVMENU`) and the menu comes up on its next frame, so **the running
89
+ * stage is torn down** — `initDevMenu()` clears graphics and animation data. Save
90
+ * files are untouched; the current run is not.
91
+ *
92
+ * The menu is driven by the engine's own input and does not run while the SDK holds
93
+ * a pause, so resume before calling. Returns false when the engine cannot be reached
94
+ * or the wasm predates the bridge ({@link canOpen}).
95
+ */
96
+ open(screen?: RsdkDevMenuScreen, category?: number): boolean;
67
97
  }
68
98
  /**
69
99
  * A row of the engine's GAME OPTIONS screen (differs between Sonic 1 and 2), as the
@@ -128,6 +158,34 @@ export interface RsdkInputBridge {
128
158
  release(): PromisePlay<Rsdkv4Payloads>;
129
159
  /** Whether a claim is held. The `options()` descriptor deliberately will not say. */
130
160
  readonly claimed: boolean;
161
+ /**
162
+ * What the engine has held **right now**, as the bitmask a claim writes: bit 0 is
163
+ * `up`, bit 13 is `select`, in {@link RSDKV4_BUTTONS} order.
164
+ *
165
+ * This is the read-back to the claim's write, and it answers the one question no
166
+ * amount of listening on the page can: *did the button reach the engine?* A key
167
+ * that fires `keydown` in the browser and never lights a bit here died between SDL
168
+ * and `ProcessInput()`; one that lights the bit and changes nothing on screen was
169
+ * received and the game chose not to act on it. Those two are otherwise the same
170
+ * silence, and telling them apart is the difference between a real input bug and
171
+ * Sonic simply refusing to roll while a direction is held.
172
+ *
173
+ * Works whether or not a claim is held — under SDL polling it is the keyboard and
174
+ * the pad as the engine read them. `0` when the engine is not up.
175
+ *
176
+ * Two things it is not. It is `hold`, not `press`: a button reads the same on the
177
+ * frame it goes down and on the hundredth frame it stays down. And it is the
178
+ * engine's view *after* the B→A fold, so in-stage the jump key `x` lights `a` and
179
+ * `b` never lights at all — which is the fold working, not a lost button.
180
+ */
181
+ readonly mask: number;
182
+ /**
183
+ * {@link mask}, spelled as the fourteen named booleans — the same shape a claim
184
+ * hands over, so a host can diff what it sent against what arrived.
185
+ *
186
+ * A fresh object on every read; it is a snapshot, not a live view.
187
+ */
188
+ readonly held: Rsdkv4Buttons;
131
189
  }
132
190
  /**
133
191
  * What `start()` and `restart()` hand back: the contract's chainable promise, narrowed
@@ -229,7 +287,7 @@ export declare class Rsdkv4Play extends EnginePlayBase<Rsdkv4Payloads> {
229
287
  export declare class Rsdkv4SDK extends EngineSDKBase<Rsdkv4Payloads> {
230
288
  static readonly id = "rsdkv4";
231
289
  /** Kept in step with package.json by `node scripts/sync-version.mjs`. */
232
- static readonly version = "0.2.0";
290
+ static readonly version = "0.2.1";
233
291
  static readonly name = "Retro Software Development Kit v4";
234
292
  static readonly description = "RSDKv4 compiled to WebAssembly via Emscripten. One game-agnostic WASM binary runs both Sonic 1 and Sonic 2 \u2014 the difference is only which Data.rsdk the host supplies at runtime. Ships none of the game: the player provides their own Data.rsdk, and it never leaves their browser.";
235
293
  protected createPlay(init: EngineInit<Rsdkv4Payloads>, events: EventEmitter<Rsdkv4Events_>): Rsdkv4Play;
@@ -1 +1 @@
1
- {"version":3,"file":"rsdkv4.sdk.d.ts","sourceRoot":"","sources":["../../src/rsdkv4.sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsdkv4.sdk.d.ts","sourceRoot":"","sources":["../../src/rsdkv4.sdk.ts"],"names":[],"mappings":"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"}
@@ -69,6 +69,7 @@ const ENGINE_BRIDGES = [
69
69
  'web_start_game',
70
70
  'web_audio_stop',
71
71
  'web_devmenu_get_stage_list',
72
+ 'web_devmenu_open',
72
73
  'web_input_set_source',
73
74
  ];
74
75
  /**
@@ -79,6 +80,33 @@ const ENGINE_BRIDGES = [
79
80
  const INPUT_PULL_HOOK = '__rsdkv4_input_pull';
80
81
  /** How often a pull that keeps throwing is allowed to say so. See {@link Rsdkv4Play}. */
81
82
  const INPUT_ERROR_INTERVAL_MS = 1000;
83
+ /**
84
+ * Keys whose browser default action is swallowed while the canvas has focus — the
85
+ * arrows and Space scroll the page under the game, Tab takes the focus off the canvas
86
+ * and with it every key the engine was reading.
87
+ *
88
+ * Both `KeyboardEvent.code` and `.key` spellings are in here because the set is
89
+ * matched against each: `code` is the physical key (layout-independent, which is what
90
+ * the engine binds), `key` is what it produced, and a browser or a remapping tool that
91
+ * reports only one of the two still lands.
92
+ *
93
+ * WASD is included because this build's `ProcessInput()` reads those scancodes as a
94
+ * second set of directions. They have no default action to prevent today, so this
95
+ * costs nothing and stops mattering the day the page grows a shortcut on one of them.
96
+ */
97
+ const ENGINE_KEYS = new Set([
98
+ 'ArrowUp',
99
+ 'ArrowDown',
100
+ 'ArrowLeft',
101
+ 'ArrowRight',
102
+ 'KeyW',
103
+ 'KeyA',
104
+ 'KeyS',
105
+ 'KeyD',
106
+ 'Space',
107
+ ' ',
108
+ 'Tab',
109
+ ]);
82
110
  // ---------------------------------------------------------------- small helpers
83
111
  function toUint8(x) {
84
112
  if (x == null)
@@ -268,6 +296,12 @@ async function waitForEngine(Module, timeoutMs = 4000) {
268
296
  function engineBridgeComplete(Module) {
269
297
  return ENGINE_BRIDGES.every((name) => typeof Module?.[name] === 'function');
270
298
  }
299
+ /**
300
+ * The order `web_devmenu_open`'s first argument counts in — the index into this array
301
+ * is what crosses to C++, so it has to stay in step with WebDevMenu.cpp (written by
302
+ * scripts/build.sh). Names on this side, a number on the wire.
303
+ */
304
+ const DEV_MENU_SCREENS = ['main', 'player', 'categories', 'stages'];
271
305
  // ---------------------------------------------------------------- the live engine
272
306
  /**
273
307
  * The running engine.
@@ -431,6 +465,7 @@ export class Rsdkv4Play extends EnginePlayBase {
431
465
  canvas.style.outline = 'none';
432
466
  canvas.addEventListener('contextmenu', this.#swallowContextMenu);
433
467
  canvas.addEventListener('pointerdown', this.#onPointerDown);
468
+ canvas.addEventListener('keydown', this.#onKeyDown);
434
469
  window.addEventListener('resize', this.#onResize);
435
470
  // Fullscreen transitions need a refit too.
436
471
  document.addEventListener('fullscreenchange', this.#onFullscreenChange);
@@ -569,8 +604,33 @@ export class Rsdkv4Play extends EnginePlayBase {
569
604
  get claimed() {
570
605
  return play.#buttons !== null;
571
606
  },
607
+ get mask() {
608
+ return play.#engineMask();
609
+ },
610
+ get held() {
611
+ const mask = play.#engineMask();
612
+ const held = {};
613
+ for (let bit = 0; bit < RSDKV4_BUTTONS.length; bit++) {
614
+ held[RSDKV4_BUTTONS[bit]] = (mask & (1 << bit)) !== 0;
615
+ }
616
+ return held;
617
+ },
572
618
  };
573
619
  }
620
+ /**
621
+ * The engine's own `web_input_get_mask()`, or 0 when there is no engine to ask.
622
+ *
623
+ * Deliberately quiet about a module that does not have the bridge: unlike a claim,
624
+ * which silently does nothing and deserves the console error `#applyButtons` gives
625
+ * it, this is a read — a host polling it once a frame for an overlay would turn one
626
+ * old artifact into sixty messages a second.
627
+ */
628
+ #engineMask() {
629
+ const Module = this.#module;
630
+ if (!Module || typeof Module.web_input_get_mask !== 'function')
631
+ return 0;
632
+ return Module.web_input_get_mask() | 0;
633
+ }
574
634
  // ---- Host-driven input ----
575
635
  /**
576
636
  * Claim or release, on the engine and here. The only writer of {@link #buttons}.
@@ -710,6 +770,20 @@ export class Rsdkv4Play extends EnginePlayBase {
710
770
  else
711
771
  this.resume(this.#pauseOwner ?? 'host');
712
772
  },
773
+ canOpen: typeof Module.web_devmenu_open === 'function',
774
+ open: (screen = 'main', category = 0) => {
775
+ if (typeof Module.web_devmenu_open !== 'function') {
776
+ console.warn('[rsdkv4] this rsdkv4.wasm has no web_devmenu_open — rebuild it (`make build-wasm`), or read devMenu.canOpen before offering the button');
777
+ return false;
778
+ }
779
+ const index = DEV_MENU_SCREENS.indexOf(screen);
780
+ if (index < 0) {
781
+ console.warn(`[rsdkv4] "${screen}" is not a dev menu screen — one of ${DEV_MENU_SCREENS.join(', ')}`);
782
+ return false;
783
+ }
784
+ Module.web_devmenu_open(index, category | 0);
785
+ return true;
786
+ },
713
787
  };
714
788
  }
715
789
  // ---- Bringing the engine up ----
@@ -766,8 +840,24 @@ export class Rsdkv4Play extends EnginePlayBase {
766
840
  this.#focusCanvas();
767
841
  // The engine writes SData.bin at its own pace (new game, checkpoint, options
768
842
  // change), so copy it out on a slow timer as well as on the way down.
843
+ //
844
+ // The timer alone loses saves, and by a wide margin: `destroy()` is the only
845
+ // other flush, and a browser tab that is closed or reloaded never calls it. A
846
+ // player who finished an act and hit reload inside the next ten seconds had the
847
+ // save written by the engine, held in the wasm heap, and dropped on the floor —
848
+ // which reads as "my progress did not stick" and looks exactly like a save
849
+ // system that does not work.
850
+ //
851
+ // `visibilitychange` → hidden is the flush that actually fires: it covers the
852
+ // tab being switched away from, the window being minimised, the phone going to
853
+ // the home screen, and — unlike `beforeunload`, which browsers increasingly
854
+ // ignore — navigating away and closing. `pagehide` backs it up for the bfcache
855
+ // path. Cheap to over-fire: the mirror compares bytes and returns without
856
+ // touching OPFS when nothing moved.
769
857
  if (this.#mirrorSaves) {
770
858
  this.#saveTimer = setInterval(() => void this.#mirrorSaveData(), 10_000);
859
+ document.addEventListener('visibilitychange', this.#onVisibilityChange);
860
+ window.addEventListener('pagehide', this.#onPageHide);
771
861
  }
772
862
  return Module;
773
863
  }
@@ -905,8 +995,28 @@ export class Rsdkv4Play extends EnginePlayBase {
905
995
  this.emit('saves', this.game.saveSlots());
906
996
  }
907
997
  // ---- The render target ----
998
+ /**
999
+ * Flush the save when the page is being put away. See where these are registered
1000
+ * for why the ten-second timer is not enough on its own.
1001
+ */
1002
+ #onVisibilityChange = () => {
1003
+ if (document.visibilityState === 'hidden' && this.#mirrorSaves)
1004
+ void this.#mirrorSaveData();
1005
+ };
1006
+ #onPageHide = () => {
1007
+ if (this.#mirrorSaves)
1008
+ void this.#mirrorSaveData();
1009
+ };
908
1010
  #swallowContextMenu = (event) => event.preventDefault();
909
1011
  #onPointerDown = () => this.#focusCanvas();
1012
+ #onKeyDown = (event) => {
1013
+ // Only the browser's own default action is suppressed — the arrows and Space
1014
+ // scroll the page, Tab walks the focus out of the canvas. The event is left to
1015
+ // propagate: SDL's own handler sits on `window` in the bubble phase, so calling
1016
+ // stopPropagation() here would be the engine's whole keyboard.
1017
+ if (ENGINE_KEYS.has(event.code) || ENGINE_KEYS.has(event.key))
1018
+ event.preventDefault();
1019
+ };
910
1020
  #onResize = () => this.#fitPicture();
911
1021
  #onFullscreenChange = () => {
912
1022
  this.#fitPicture();
@@ -958,10 +1068,13 @@ export class Rsdkv4Play extends EnginePlayBase {
958
1068
  if (canvas) {
959
1069
  canvas.removeEventListener('contextmenu', this.#swallowContextMenu);
960
1070
  canvas.removeEventListener('pointerdown', this.#onPointerDown);
1071
+ canvas.removeEventListener('keydown', this.#onKeyDown);
961
1072
  if (this.#ownsCanvas)
962
1073
  canvas.remove();
963
1074
  }
964
1075
  document.removeEventListener('fullscreenchange', this.#onFullscreenChange);
1076
+ document.removeEventListener('visibilitychange', this.#onVisibilityChange);
1077
+ window.removeEventListener('pagehide', this.#onPageHide);
965
1078
  window.removeEventListener('resize', this.#onResize);
966
1079
  this.#boxObserver?.disconnect();
967
1080
  this.#boxObserver = null;
@@ -1000,7 +1113,7 @@ export class Rsdkv4Play extends EnginePlayBase {
1000
1113
  export class Rsdkv4SDK extends EngineSDKBase {
1001
1114
  static id = 'rsdkv4';
1002
1115
  /** Kept in step with package.json by `node scripts/sync-version.mjs`. */
1003
- static version = '0.2.0';
1116
+ static version = '0.2.1';
1004
1117
  static name = 'Retro Software Development Kit v4';
1005
1118
  static description = 'RSDKv4 compiled to WebAssembly via Emscripten. One game-agnostic WASM binary runs both Sonic 1 and Sonic 2 — the difference is only which Data.rsdk the host supplies at runtime. Ships none of the game: the player provides their own Data.rsdk, and it never leaves their browser.';
1006
1119
  createPlay(init, events) {
@@ -1 +1 @@
1
- {"version":3,"file":"rsdkv4.sdk.js","sourceRoot":"","sources":["../../src/rsdkv4.sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsdkv4.sdk.js","sourceRoot":"","sources":["../../src/rsdkv4.sdk.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wasm-gaming/rsdkv4-wasm",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "RSDKv4 (Retro Software Development Kit v4) compiled to WebAssembly, with a JS SDK conforming to the wasm-gaming engine contract. Runs Sonic 1 & Sonic 2 from a single WASM by loading Data.rsdk at runtime.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -185,6 +185,11 @@ export interface Rsdkv4InputDefaults {
185
185
  /**
186
186
  * The engine's own default bindings. See {@link Rsdkv4InputDefaults}.
187
187
  *
188
+ * Directions are the arrow keys. This build's `ProcessInput()` also reads `KeyW`,
189
+ * `KeyA`, `KeyS` and `KeyD` as a second set of them, and takes those three scancodes
190
+ * off `x`, `y` and `z` to do it — so the table below is what a *claiming* host should
191
+ * bind, and the engine under SDL polling answers to both.
192
+ *
188
193
  * This replaces the old `RSDKV4_KEYMAP`, which nothing read and which was wrong in
189
194
  * three ways for want of ever being checked against the engine: it listed 9 of the
190
195
  * 14 buttons, and bound `select` to `ShiftLeft` where the engine's default is `Tab`.
package/src/rsdkv4.sdk.ts CHANGED
@@ -116,6 +116,7 @@ const ENGINE_BRIDGES = [
116
116
  'web_start_game',
117
117
  'web_audio_stop',
118
118
  'web_devmenu_get_stage_list',
119
+ 'web_devmenu_open',
119
120
  'web_input_set_source',
120
121
  ] as const;
121
122
 
@@ -129,6 +130,34 @@ const INPUT_PULL_HOOK = '__rsdkv4_input_pull';
129
130
  /** How often a pull that keeps throwing is allowed to say so. See {@link Rsdkv4Play}. */
130
131
  const INPUT_ERROR_INTERVAL_MS = 1000;
131
132
 
133
+ /**
134
+ * Keys whose browser default action is swallowed while the canvas has focus — the
135
+ * arrows and Space scroll the page under the game, Tab takes the focus off the canvas
136
+ * and with it every key the engine was reading.
137
+ *
138
+ * Both `KeyboardEvent.code` and `.key` spellings are in here because the set is
139
+ * matched against each: `code` is the physical key (layout-independent, which is what
140
+ * the engine binds), `key` is what it produced, and a browser or a remapping tool that
141
+ * reports only one of the two still lands.
142
+ *
143
+ * WASD is included because this build's `ProcessInput()` reads those scancodes as a
144
+ * second set of directions. They have no default action to prevent today, so this
145
+ * costs nothing and stops mattering the day the page grows a shortcut on one of them.
146
+ */
147
+ const ENGINE_KEYS = new Set([
148
+ 'ArrowUp',
149
+ 'ArrowDown',
150
+ 'ArrowLeft',
151
+ 'ArrowRight',
152
+ 'KeyW',
153
+ 'KeyA',
154
+ 'KeyS',
155
+ 'KeyD',
156
+ 'Space',
157
+ ' ',
158
+ 'Tab',
159
+ ]);
160
+
132
161
  /** The Emscripten module. Untyped on purpose: it is generated glue, not our surface. */
133
162
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
134
163
  type EmscriptenModule = any;
@@ -331,11 +360,49 @@ function engineBridgeComplete(Module: EmscriptenModule): boolean {
331
360
 
332
361
  // ---------------------------------------------------------------- this engine's own surface
333
362
 
363
+ /**
364
+ * A screen of RSDKv4's own in-canvas Dev Menu (Debug.cpp), as {@link
365
+ * RsdkDevMenuBridge.open} names them.
366
+ *
367
+ * `'categories'` is the engine's `SELECT A STAGE LIST` — PRESENTATION / REGULAR /
368
+ * SPECIAL / BONUS — and `'stages'` the scene list under one of them. Those two are the
369
+ * only native way to reach the BONUS list: the packs' own menu scenes (Sonic 1 and 2's
370
+ * `LEVEL SELECT` and `STAGE MENU`) can load a regular stage and nothing else.
371
+ */
372
+ export type RsdkDevMenuScreen = 'main' | 'player' | 'categories' | 'stages';
373
+
374
+ /**
375
+ * The order `web_devmenu_open`'s first argument counts in — the index into this array
376
+ * is what crosses to C++, so it has to stay in step with WebDevMenu.cpp (written by
377
+ * scripts/build.sh). Names on this side, a number on the wire.
378
+ */
379
+ const DEV_MENU_SCREENS: readonly RsdkDevMenuScreen[] = ['main', 'player', 'categories', 'stages'];
380
+
334
381
  /** RSDKv4-specific bridge for a host's debug/stage-select UI. */
335
382
  export interface RsdkDevMenuBridge {
336
383
  getStageList(): Array<{ name: string; stages: Array<{ name: string }> }>;
337
384
  loadStage(categoryIdx: number, stageIdx: number): void;
338
385
  setPaused(paused: boolean): void;
386
+ /**
387
+ * Whether the loaded wasm carries {@link open}. False means an engine built before
388
+ * the bridge existed — a host should hide the button rather than offer a dead one.
389
+ */
390
+ readonly canOpen: boolean;
391
+ /**
392
+ * Open the engine's own Dev Menu at `screen`, with `category` selecting the stage
393
+ * list for `'categories'` (preselected) and `'stages'` (listed). Categories are the
394
+ * engine's own indices, the ones {@link getStageList} is ordered by — 2 is BONUS.
395
+ *
396
+ * This is what Escape does natively: the request is handed to the engine thread
397
+ * (`ENGINE_INITDEVMENU`) and the menu comes up on its next frame, so **the running
398
+ * stage is torn down** — `initDevMenu()` clears graphics and animation data. Save
399
+ * files are untouched; the current run is not.
400
+ *
401
+ * The menu is driven by the engine's own input and does not run while the SDK holds
402
+ * a pause, so resume before calling. Returns false when the engine cannot be reached
403
+ * or the wasm predates the bridge ({@link canOpen}).
404
+ */
405
+ open(screen?: RsdkDevMenuScreen, category?: number): boolean;
339
406
  }
340
407
 
341
408
  /**
@@ -403,6 +470,34 @@ export interface RsdkInputBridge {
403
470
  release(): PromisePlay<Rsdkv4Payloads>;
404
471
  /** Whether a claim is held. The `options()` descriptor deliberately will not say. */
405
472
  readonly claimed: boolean;
473
+ /**
474
+ * What the engine has held **right now**, as the bitmask a claim writes: bit 0 is
475
+ * `up`, bit 13 is `select`, in {@link RSDKV4_BUTTONS} order.
476
+ *
477
+ * This is the read-back to the claim's write, and it answers the one question no
478
+ * amount of listening on the page can: *did the button reach the engine?* A key
479
+ * that fires `keydown` in the browser and never lights a bit here died between SDL
480
+ * and `ProcessInput()`; one that lights the bit and changes nothing on screen was
481
+ * received and the game chose not to act on it. Those two are otherwise the same
482
+ * silence, and telling them apart is the difference between a real input bug and
483
+ * Sonic simply refusing to roll while a direction is held.
484
+ *
485
+ * Works whether or not a claim is held — under SDL polling it is the keyboard and
486
+ * the pad as the engine read them. `0` when the engine is not up.
487
+ *
488
+ * Two things it is not. It is `hold`, not `press`: a button reads the same on the
489
+ * frame it goes down and on the hundredth frame it stays down. And it is the
490
+ * engine's view *after* the B→A fold, so in-stage the jump key `x` lights `a` and
491
+ * `b` never lights at all — which is the fold working, not a lost button.
492
+ */
493
+ readonly mask: number;
494
+ /**
495
+ * {@link mask}, spelled as the fourteen named booleans — the same shape a claim
496
+ * hands over, so a host can diff what it sent against what arrived.
497
+ *
498
+ * A fresh object on every read; it is a snapshot, not a live view.
499
+ */
500
+ readonly held: Rsdkv4Buttons;
406
501
  }
407
502
 
408
503
  /**
@@ -602,6 +697,7 @@ export class Rsdkv4Play extends EnginePlayBase<Rsdkv4Payloads> {
602
697
 
603
698
  canvas.addEventListener('contextmenu', this.#swallowContextMenu);
604
699
  canvas.addEventListener('pointerdown', this.#onPointerDown);
700
+ canvas.addEventListener('keydown', this.#onKeyDown);
605
701
  window.addEventListener('resize', this.#onResize);
606
702
  // Fullscreen transitions need a refit too.
607
703
  document.addEventListener('fullscreenchange', this.#onFullscreenChange);
@@ -769,9 +865,34 @@ export class Rsdkv4Play extends EnginePlayBase<Rsdkv4Payloads> {
769
865
  get claimed(): boolean {
770
866
  return play.#buttons !== null;
771
867
  },
868
+ get mask(): number {
869
+ return play.#engineMask();
870
+ },
871
+ get held(): Rsdkv4Buttons {
872
+ const mask = play.#engineMask();
873
+ const held = {} as Rsdkv4Buttons;
874
+ for (let bit = 0; bit < RSDKV4_BUTTONS.length; bit++) {
875
+ held[RSDKV4_BUTTONS[bit]] = (mask & (1 << bit)) !== 0;
876
+ }
877
+ return held;
878
+ },
772
879
  };
773
880
  }
774
881
 
882
+ /**
883
+ * The engine's own `web_input_get_mask()`, or 0 when there is no engine to ask.
884
+ *
885
+ * Deliberately quiet about a module that does not have the bridge: unlike a claim,
886
+ * which silently does nothing and deserves the console error `#applyButtons` gives
887
+ * it, this is a read — a host polling it once a frame for an overlay would turn one
888
+ * old artifact into sixty messages a second.
889
+ */
890
+ #engineMask(): number {
891
+ const Module = this.#module;
892
+ if (!Module || typeof Module.web_input_get_mask !== 'function') return 0;
893
+ return Module.web_input_get_mask() | 0;
894
+ }
895
+
775
896
  // ---- Host-driven input ----
776
897
 
777
898
  /**
@@ -928,6 +1049,24 @@ export class Rsdkv4Play extends EnginePlayBase<Rsdkv4Payloads> {
928
1049
  if (paused) this.pause('host');
929
1050
  else this.resume(this.#pauseOwner ?? 'host');
930
1051
  },
1052
+ canOpen: typeof Module.web_devmenu_open === 'function',
1053
+ open: (screen = 'main', category = 0) => {
1054
+ if (typeof Module.web_devmenu_open !== 'function') {
1055
+ console.warn(
1056
+ '[rsdkv4] this rsdkv4.wasm has no web_devmenu_open — rebuild it (`make build-wasm`), or read devMenu.canOpen before offering the button',
1057
+ );
1058
+ return false;
1059
+ }
1060
+ const index = DEV_MENU_SCREENS.indexOf(screen);
1061
+ if (index < 0) {
1062
+ console.warn(
1063
+ `[rsdkv4] "${screen}" is not a dev menu screen — one of ${DEV_MENU_SCREENS.join(', ')}`,
1064
+ );
1065
+ return false;
1066
+ }
1067
+ Module.web_devmenu_open(index, category | 0);
1068
+ return true;
1069
+ },
931
1070
  };
932
1071
  }
933
1072
 
@@ -999,8 +1138,24 @@ export class Rsdkv4Play extends EnginePlayBase<Rsdkv4Payloads> {
999
1138
 
1000
1139
  // The engine writes SData.bin at its own pace (new game, checkpoint, options
1001
1140
  // change), so copy it out on a slow timer as well as on the way down.
1141
+ //
1142
+ // The timer alone loses saves, and by a wide margin: `destroy()` is the only
1143
+ // other flush, and a browser tab that is closed or reloaded never calls it. A
1144
+ // player who finished an act and hit reload inside the next ten seconds had the
1145
+ // save written by the engine, held in the wasm heap, and dropped on the floor —
1146
+ // which reads as "my progress did not stick" and looks exactly like a save
1147
+ // system that does not work.
1148
+ //
1149
+ // `visibilitychange` → hidden is the flush that actually fires: it covers the
1150
+ // tab being switched away from, the window being minimised, the phone going to
1151
+ // the home screen, and — unlike `beforeunload`, which browsers increasingly
1152
+ // ignore — navigating away and closing. `pagehide` backs it up for the bfcache
1153
+ // path. Cheap to over-fire: the mirror compares bytes and returns without
1154
+ // touching OPFS when nothing moved.
1002
1155
  if (this.#mirrorSaves) {
1003
1156
  this.#saveTimer = setInterval(() => void this.#mirrorSaveData(), 10_000);
1157
+ document.addEventListener('visibilitychange', this.#onVisibilityChange);
1158
+ window.addEventListener('pagehide', this.#onPageHide);
1004
1159
  }
1005
1160
 
1006
1161
  return Module;
@@ -1159,8 +1314,26 @@ export class Rsdkv4Play extends EnginePlayBase<Rsdkv4Payloads> {
1159
1314
 
1160
1315
  // ---- The render target ----
1161
1316
 
1317
+ /**
1318
+ * Flush the save when the page is being put away. See where these are registered
1319
+ * for why the ten-second timer is not enough on its own.
1320
+ */
1321
+ #onVisibilityChange = (): void => {
1322
+ if (document.visibilityState === 'hidden' && this.#mirrorSaves) void this.#mirrorSaveData();
1323
+ };
1324
+ #onPageHide = (): void => {
1325
+ if (this.#mirrorSaves) void this.#mirrorSaveData();
1326
+ };
1327
+
1162
1328
  #swallowContextMenu = (event: Event): void => event.preventDefault();
1163
1329
  #onPointerDown = (): void => this.#focusCanvas();
1330
+ #onKeyDown = (event: KeyboardEvent): void => {
1331
+ // Only the browser's own default action is suppressed — the arrows and Space
1332
+ // scroll the page, Tab walks the focus out of the canvas. The event is left to
1333
+ // propagate: SDL's own handler sits on `window` in the bubble phase, so calling
1334
+ // stopPropagation() here would be the engine's whole keyboard.
1335
+ if (ENGINE_KEYS.has(event.code) || ENGINE_KEYS.has(event.key)) event.preventDefault();
1336
+ };
1164
1337
  #onResize = (): void => this.#fitPicture();
1165
1338
  #onFullscreenChange = (): void => {
1166
1339
  this.#fitPicture();
@@ -1214,9 +1387,12 @@ export class Rsdkv4Play extends EnginePlayBase<Rsdkv4Payloads> {
1214
1387
  if (canvas) {
1215
1388
  canvas.removeEventListener('contextmenu', this.#swallowContextMenu);
1216
1389
  canvas.removeEventListener('pointerdown', this.#onPointerDown);
1390
+ canvas.removeEventListener('keydown', this.#onKeyDown);
1217
1391
  if (this.#ownsCanvas) canvas.remove();
1218
1392
  }
1219
1393
  document.removeEventListener('fullscreenchange', this.#onFullscreenChange);
1394
+ document.removeEventListener('visibilitychange', this.#onVisibilityChange);
1395
+ window.removeEventListener('pagehide', this.#onPageHide);
1220
1396
  window.removeEventListener('resize', this.#onResize);
1221
1397
  this.#boxObserver?.disconnect();
1222
1398
  this.#boxObserver = null;
@@ -1258,7 +1434,7 @@ export class Rsdkv4Play extends EnginePlayBase<Rsdkv4Payloads> {
1258
1434
  export class Rsdkv4SDK extends EngineSDKBase<Rsdkv4Payloads> {
1259
1435
  static readonly id = 'rsdkv4';
1260
1436
  /** Kept in step with package.json by `node scripts/sync-version.mjs`. */
1261
- static readonly version = '0.2.0';
1437
+ static readonly version = '0.2.1';
1262
1438
  static readonly name = 'Retro Software Development Kit v4';
1263
1439
  static readonly description =
1264
1440
  'RSDKv4 compiled to WebAssembly via Emscripten. One game-agnostic WASM binary runs both Sonic 1 and Sonic 2 — the difference is only which Data.rsdk the host supplies at runtime. Ships none of the game: the player provides their own Data.rsdk, and it never leaves their browser.';