@wasm-gaming/rsdkv3-wasm 0.1.2 → 0.1.5
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.
- package/README.md +58 -65
- package/dist/rsdkv3/engine-specs.js +382 -0
- package/dist/rsdkv3/rsdkv3.js +10877 -0
- package/dist/rsdkv3/rsdkv3.options.d.ts +63 -15
- package/dist/rsdkv3/rsdkv3.options.d.ts.map +1 -1
- package/dist/rsdkv3/rsdkv3.options.js +36 -37
- package/dist/rsdkv3/rsdkv3.options.js.map +1 -1
- package/dist/rsdkv3/rsdkv3.sdk.d.ts +74 -33
- package/dist/rsdkv3/rsdkv3.sdk.d.ts.map +1 -1
- package/dist/rsdkv3/rsdkv3.sdk.js +355 -184
- package/dist/rsdkv3/rsdkv3.sdk.js.map +1 -1
- package/dist/rsdkv3/rsdkv3.wasm +0 -0
- package/package.json +6 -15
- package/src/rsdkv3.options.ts +99 -51
- package/src/rsdkv3.sdk.ts +407 -200
- package/dist/rsdkv3/rsdkv3.manifest.d.ts +0 -4
- package/dist/rsdkv3/rsdkv3.manifest.d.ts.map +0 -1
- package/dist/rsdkv3/rsdkv3.manifest.js +0 -39
- package/dist/rsdkv3/rsdkv3.manifest.js.map +0 -1
- package/dist/rsdkv3/wasm-specs.d.ts +0 -71
- package/dist/rsdkv3/wasm-specs.d.ts.map +0 -1
- package/dist/rsdkv3/wasm-specs.js +0 -2
- package/dist/rsdkv3/wasm-specs.js.map +0 -1
- package/src/rsdkv3.manifest.ts +0 -44
- package/src/wasm-specs.ts +0 -72
|
@@ -1,22 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
/**
|
|
2
|
+
* What RSDKv3 accepts, as types and as data.
|
|
3
|
+
*
|
|
4
|
+
* The four payloads of the wasm-gaming engine contract, closed for this engine, and
|
|
5
|
+
* {@link RSDKV3_SPEC} — the same thing as data the contract's base class reads:
|
|
6
|
+
* every default lives there and nowhere else.
|
|
7
|
+
*/
|
|
8
|
+
import type { EnginePayloads, EngineSpec } from '@wasm-gaming/engine-specs';
|
|
9
|
+
/** Bytes, or a thunk that produces them only when the engine actually needs them. */
|
|
10
|
+
export type Rsdkv3Asset = Uint8Array | ArrayBuffer | null | (() => Uint8Array | ArrayBuffer | null | Promise<Uint8Array | ArrayBuffer | null>);
|
|
11
|
+
/** The engine, written into the generated `settings.ini`. Fixed for the life of the wasm. */
|
|
12
|
+
export interface Rsdkv3Config {
|
|
13
|
+
/** RSDKv3's native in-canvas Dev Menu. A host draws its own from `play.devMenu`. */
|
|
8
14
|
devMenu?: boolean;
|
|
9
|
-
/** RSDKv3 EngineDebugMode
|
|
15
|
+
/** RSDKv3 `EngineDebugMode`. */
|
|
10
16
|
engineDebugMode?: boolean;
|
|
11
|
-
/** VSync setting in the generated settings.ini. */
|
|
12
17
|
vsync?: boolean;
|
|
13
|
-
/** 0 = JP/EU
|
|
14
|
-
soundtrack?:
|
|
15
|
-
/** 0 = English.
|
|
18
|
+
/** Sonic CD soundtrack: 0 = JP/EU, 1 = US. */
|
|
19
|
+
soundtrack?: 0 | 1;
|
|
20
|
+
/** RSDKv3 language index (0 = English). */
|
|
16
21
|
language?: number;
|
|
17
|
-
/** Toggle touch controls in the generated settings.ini. */
|
|
18
22
|
disableTouchControls?: boolean;
|
|
23
|
+
/** Emscripten glue URL. Defaults to `./rsdkv3.js` next to the SDK. */
|
|
24
|
+
jsUrl?: string;
|
|
25
|
+
/** WASM URL. Defaults to `./rsdkv3.wasm` next to the SDK. */
|
|
26
|
+
wasmUrl?: string;
|
|
27
|
+
}
|
|
28
|
+
/** The session. Nothing per-session yet. */
|
|
29
|
+
export type Rsdkv3Options = Record<string, never>;
|
|
30
|
+
export interface Rsdkv3Assets {
|
|
31
|
+
/** The game's `Data.rsdk` (Sonic CD). Required to start. */
|
|
32
|
+
data?: Rsdkv3Asset;
|
|
33
|
+
/** A ready-made `settings.ini`; omitted, one is generated from `config`. */
|
|
34
|
+
settings?: Rsdkv3Asset;
|
|
35
|
+
}
|
|
36
|
+
/** Where this engine's files live, and whether they outlive the page. */
|
|
37
|
+
export interface Rsdkv3Storage {
|
|
38
|
+
/**
|
|
39
|
+
* Per-game folder, relative to the engine's own: files land in `rsdkv3/<namespace>/`
|
|
40
|
+
* (WASMFS `/data/rsdkv3/<namespace>`, and the OPFS folder the save is mirrored to).
|
|
41
|
+
* Segments are cleaned (`.`/`..` dropped, odd characters → `_`); a leading
|
|
42
|
+
* `rsdkv3/` is stripped once. `play.storagePath` gives the result.
|
|
43
|
+
*
|
|
44
|
+
* @defaultValue `"default"`
|
|
45
|
+
*/
|
|
46
|
+
namespace?: string;
|
|
47
|
+
/** `null` keeps nothing; otherwise `SData.bin` is mirrored to OPFS. */
|
|
48
|
+
persist?: 'opfs' | null;
|
|
49
|
+
}
|
|
50
|
+
export interface Rsdkv3Events {
|
|
51
|
+
/** `SData.bin` changed and was written to `rsdkv3/<namespace>/`. */
|
|
52
|
+
saves: {
|
|
53
|
+
files: string[];
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export interface Rsdkv3Payloads extends EnginePayloads {
|
|
57
|
+
config: Rsdkv3Config;
|
|
58
|
+
options: Rsdkv3Options;
|
|
59
|
+
assets: Rsdkv3Assets;
|
|
60
|
+
storage: Rsdkv3Storage;
|
|
61
|
+
events: Rsdkv3Events;
|
|
19
62
|
}
|
|
20
|
-
|
|
21
|
-
export declare const
|
|
63
|
+
/** The native picture, which the SDK scales to fit its mount. */
|
|
64
|
+
export declare const RSDKV3_VIDEO: {
|
|
65
|
+
readonly width: 426;
|
|
66
|
+
readonly height: 240;
|
|
67
|
+
readonly aspect: "16:9";
|
|
68
|
+
};
|
|
69
|
+
export declare const RSDKV3_SPEC: EngineSpec<Rsdkv3Payloads>;
|
|
22
70
|
//# sourceMappingURL=rsdkv3.options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsdkv3.options.d.ts","sourceRoot":"","sources":["../../src/rsdkv3.options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rsdkv3.options.d.ts","sourceRoot":"","sources":["../../src/rsdkv3.options.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5E,qFAAqF;AACrF,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,WAAW,GACX,IAAI,GACJ,CAAC,MAAM,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;AAEvF,6FAA6F;AAC7F,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gCAAgC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4CAA4C;AAC5C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,oEAAoE;IACpE,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,iEAAiE;AACjE,eAAO,MAAM,YAAY;;;;CAAuD,CAAC;AAEjF,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,cAAc,CAwClD,CAAC"}
|
|
@@ -1,45 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
// - `Rsdkv3Options` — compile-time type for TS hosts
|
|
6
|
-
// - `RSDKV3_OPTIONS_SCHEMA` — JSON Schema mirrored into manifest.json
|
|
7
|
-
// - `DEFAULT_RSDKV3_OPTIONS` — defaults used when no settings.ini is supplied
|
|
8
|
-
//
|
|
9
|
-
// At runtime these options are serialized into Sonic CD's `settings.ini` format
|
|
10
|
-
// when the host does not pass an explicit `settings` asset.
|
|
11
|
-
export const DEFAULT_RSDKV3_OPTIONS = {
|
|
12
|
-
devMenu: false,
|
|
13
|
-
engineDebugMode: false,
|
|
14
|
-
vsync: false,
|
|
15
|
-
soundtrack: 0,
|
|
16
|
-
language: 0,
|
|
17
|
-
disableTouchControls: true,
|
|
18
|
-
};
|
|
19
|
-
export const RSDKV3_OPTIONS_SCHEMA = {
|
|
20
|
-
type: 'object',
|
|
21
|
-
additionalProperties: false,
|
|
22
|
-
properties: {
|
|
1
|
+
/** The native picture, which the SDK scales to fit its mount. */
|
|
2
|
+
export const RSDKV3_VIDEO = { width: 426, height: 240, aspect: '16:9' };
|
|
3
|
+
export const RSDKV3_SPEC = {
|
|
4
|
+
config: {
|
|
23
5
|
devMenu: {
|
|
24
|
-
type: 'boolean',
|
|
25
6
|
default: false,
|
|
26
|
-
|
|
7
|
+
live: false,
|
|
8
|
+
description: "RSDKv3's native Dev Menu; keep it off and draw your own from play.devMenu.",
|
|
27
9
|
},
|
|
28
|
-
engineDebugMode: {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
10
|
+
engineDebugMode: { default: false, live: false, description: 'RSDKv3 EngineDebugMode.' },
|
|
11
|
+
vsync: { default: false, live: false, description: 'VSync in the generated settings.ini.' },
|
|
12
|
+
soundtrack: { default: 0, enum: [0, 1], live: false, description: 'Sonic CD soundtrack: 0 = JP/EU, 1 = US.' },
|
|
13
|
+
language: { default: 0, live: false, description: 'RSDKv3 language index (0 = English).' },
|
|
14
|
+
disableTouchControls: { default: true, live: false, description: 'Hide the touch controls.' },
|
|
15
|
+
jsUrl: { live: false, description: 'Emscripten glue URL. Defaults to ./rsdkv3.js.' },
|
|
16
|
+
wasmUrl: { live: false, description: 'WASM URL. Defaults to ./rsdkv3.wasm.' },
|
|
17
|
+
},
|
|
18
|
+
options: {},
|
|
19
|
+
assets: {
|
|
20
|
+
data: {
|
|
21
|
+
allowedTypes: ['.rsdk'],
|
|
22
|
+
live: false,
|
|
23
|
+
description: 'The RSDKv3 game data pack (Sonic CD). Required to start.',
|
|
24
|
+
},
|
|
25
|
+
settings: {
|
|
26
|
+
allowedTypes: ['.ini'],
|
|
27
|
+
live: false,
|
|
28
|
+
description: 'A ready-made settings.ini. Omitted, one is generated from config.',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
storage: {
|
|
32
|
+
namespace: {
|
|
33
|
+
default: 'default',
|
|
34
|
+
live: false,
|
|
35
|
+
description: "Folder for this game's save, inside the engine's own rsdkv3/ folder (OPFS rsdkv3/<namespace>/).",
|
|
32
36
|
},
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
maximum: 1,
|
|
38
|
-
default: 0,
|
|
39
|
-
description: 'Sonic CD soundtrack selector: 0=JP/EU, 1=US.',
|
|
37
|
+
persist: {
|
|
38
|
+
enum: ['opfs', null],
|
|
39
|
+
live: false,
|
|
40
|
+
description: 'null keeps nothing; otherwise SData.bin is mirrored to OPFS.',
|
|
40
41
|
},
|
|
41
|
-
language: { type: 'integer', minimum: 0, default: 0 },
|
|
42
|
-
disableTouchControls: { type: 'boolean', default: true },
|
|
43
42
|
},
|
|
44
43
|
};
|
|
45
44
|
//# sourceMappingURL=rsdkv3.options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsdkv3.options.js","sourceRoot":"","sources":["../../src/rsdkv3.options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rsdkv3.options.js","sourceRoot":"","sources":["../../src/rsdkv3.options.ts"],"names":[],"mappings":"AAwEA,iEAAiE;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAW,CAAC;AAEjF,MAAM,CAAC,MAAM,WAAW,GAA+B;IACrD,MAAM,EAAE;QACN,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,4EAA4E;SAC1F;QACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE;QACxF,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,sCAAsC,EAAE;QAC3F,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,yCAAyC,EAAE;QAC7G,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,sCAAsC,EAAE;QAC1F,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE;QAC7F,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,+CAA+C,EAAE;QACpF,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,sCAAsC,EAAE;KAC9E;IACD,OAAO,EAAE,EAAE;IACX,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,YAAY,EAAE,CAAC,OAAO,CAAC;YACvB,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,0DAA0D;SACxE;QACD,QAAQ,EAAE;YACR,YAAY,EAAE,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,mEAAmE;SACjF;KACF;IACD,OAAO,EAAE;QACP,SAAS,EAAE;YACT,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,iGAAiG;SAC/G;QACD,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;YACpB,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,8DAA8D;SAC5E;KACF;CACF,CAAC"}
|
|
@@ -1,7 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The engine package's entry point: an `EngineSDK` for RSDKv3 (Sonic CD).
|
|
3
|
+
*
|
|
4
|
+
* ```js
|
|
5
|
+
* import Rsdkv3SDK from '@wasm-gaming/rsdkv3-wasm';
|
|
6
|
+
*
|
|
7
|
+
* const play = await new Rsdkv3SDK({ config: { soundtrack: 1 } })
|
|
8
|
+
* .assets({ data: () => readDataRsdk() }) // bytes, or a thunk
|
|
9
|
+
* .storage({ namespace: 'sonic-cd' }) // → OPFS rsdkv3/sonic-cd/
|
|
10
|
+
* .mount(document.querySelector('#stage'))
|
|
11
|
+
* .start();
|
|
12
|
+
*
|
|
13
|
+
* play.pause('menu'); play.resume('menu');
|
|
14
|
+
* play.devMenu.getStageList(); // the host draws its own stage select
|
|
15
|
+
* await play.destroy(); // save flushed, loop stopped, audio closed
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* One game-agnostic `rsdkv3.wasm`: `Data.rsdk` is written into the filesystem at
|
|
19
|
+
* runtime, never baked in. The working dir `/data/rsdkv3/<namespace>` is in memory;
|
|
20
|
+
* the SDK seeds `SData.bin` from OPFS `rsdkv3/<namespace>/` before boot and mirrors it
|
|
21
|
+
* back when it changes (every 10 s, on pause, on page hide and on destroy).
|
|
22
|
+
*/
|
|
23
|
+
import { EnginePlayBase, EngineSDKBase, EventEmitter, type EngineInit, type EngineSDKConstructor, type EventsOf, type PayloadKind } from '@wasm-gaming/engine-specs';
|
|
24
|
+
import { type Rsdkv3Config, type Rsdkv3Options, type Rsdkv3Payloads } from './rsdkv3.options.js';
|
|
25
|
+
export type { Rsdkv3Asset, Rsdkv3Assets, Rsdkv3Config, Rsdkv3Events, Rsdkv3Options, Rsdkv3Payloads, Rsdkv3Storage, } from './rsdkv3.options.js';
|
|
26
|
+
export { RSDKV3_SPEC, RSDKV3_VIDEO } from './rsdkv3.options.js';
|
|
27
|
+
/** The launcher's handle on RSDKv3's stage list, for drawing its own dev menu. */
|
|
5
28
|
export interface RsdkDevMenuBridge {
|
|
6
29
|
getStageList(): Array<{
|
|
7
30
|
name: string;
|
|
@@ -9,37 +32,55 @@ export interface RsdkDevMenuBridge {
|
|
|
9
32
|
name: string;
|
|
10
33
|
}>;
|
|
11
34
|
}>;
|
|
12
|
-
loadStage(
|
|
13
|
-
setPaused(paused: boolean): void;
|
|
35
|
+
loadStage(category: number, stage: number): void;
|
|
14
36
|
}
|
|
15
|
-
export type Rsdkv3Instance = EngineInstance & {
|
|
16
|
-
devMenu: RsdkDevMenuBridge;
|
|
17
|
-
/** Always false in the current rsdkv3 build (in-memory FS backend). */
|
|
18
|
-
persistent: boolean;
|
|
19
|
-
/** Relative storage namespace used under /data (e.g. "sonic-cd"). */
|
|
20
|
-
storageNamespace: string;
|
|
21
|
-
/** Remove files for this namespace only. */
|
|
22
|
-
purgeStorage(): {
|
|
23
|
-
data: boolean;
|
|
24
|
-
settings: boolean;
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
37
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
38
|
+
* Where an engine keeps one namespace: `<engineId>/<namespace>`, relative to the OPFS
|
|
39
|
+
* root. Identical in every wasm-gaming engine, written to move verbatim into
|
|
40
|
+
* engine-specs: segments cleaned, `.` and `..` dropped, anything outside
|
|
41
|
+
* `[A-Za-z0-9._-]` → `_`, nothing usable → `default`; a leading `<engineId>/` is
|
|
42
|
+
* stripped once.
|
|
31
43
|
*/
|
|
32
|
-
export
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
storageNamespace?: string;
|
|
44
|
+
export declare function storagePath(engineId: string, namespace: unknown): {
|
|
45
|
+
namespace: string;
|
|
46
|
+
path: string;
|
|
47
|
+
prefixed: boolean;
|
|
37
48
|
};
|
|
38
|
-
/**
|
|
39
|
-
export declare function
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
49
|
+
/** Serialise the engine config into RSDKv3's settings.ini. */
|
|
50
|
+
export declare function buildSettingsIni(config: Rsdkv3Config): string;
|
|
51
|
+
/** The live engine: one booted RSDKv3 and its session. */
|
|
52
|
+
export declare class Rsdkv3Play extends EnginePlayBase<Rsdkv3Payloads> {
|
|
53
|
+
#private;
|
|
54
|
+
constructor(init?: EngineInit<Rsdkv3Payloads>, events?: EventEmitter<EventsOf<Rsdkv3Payloads>>);
|
|
55
|
+
get namespace(): string;
|
|
56
|
+
/** Where this session's files live, relative to the OPFS root: `rsdkv3/<namespace>`. */
|
|
57
|
+
get storagePath(): string;
|
|
58
|
+
get pausedBy(): string | null;
|
|
59
|
+
/** RSDKv3's stage list, for a host that draws its own stage select. */
|
|
60
|
+
get devMenu(): RsdkDevMenuBridge;
|
|
61
|
+
/**
|
|
62
|
+
* Freeze the game and its sound. The first caller owns the pause; only that
|
|
63
|
+
* owner's {@link resume} lifts it. The save is flushed.
|
|
64
|
+
*/
|
|
65
|
+
pause(owner?: string): void;
|
|
66
|
+
resume(owner?: string): void;
|
|
67
|
+
/** Copy `SData.bin` to OPFS `rsdkv3/<namespace>/` if it changed; emits `saves`. */
|
|
68
|
+
flushSaves(): Promise<void>;
|
|
69
|
+
protected mounted(target: HTMLElement): void;
|
|
70
|
+
protected open(_options: Rsdkv3Options): Promise<void>;
|
|
71
|
+
protected patched(_kind: PayloadKind, _patch: object): void;
|
|
72
|
+
protected close(): Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
/** The factory a host constructs: static identity, the configuration chain, `start()`. */
|
|
75
|
+
export declare class Rsdkv3SDK extends EngineSDKBase<Rsdkv3Payloads> {
|
|
76
|
+
static readonly id = "rsdkv3";
|
|
77
|
+
/** Kept in step with package.json by `node scripts/sync-version.mjs`. */
|
|
78
|
+
static readonly version = "0.1.5";
|
|
79
|
+
static readonly name = "Retro Software Development Kit v3";
|
|
80
|
+
static readonly description = "RSDKv3 (Sonic CD 2011 decompilation) compiled to WebAssembly. Ships none of the game: the player provides Data.rsdk, and it never leaves their browser.";
|
|
81
|
+
protected createPlay(init: EngineInit<Rsdkv3Payloads>, events: EventEmitter<EventsOf<Rsdkv3Payloads>>): Rsdkv3Play;
|
|
82
|
+
}
|
|
83
|
+
/** CI's conformance line: if this class stops satisfying the contract, `make test` fails. */
|
|
84
|
+
export declare const RSDKV3_ENGINE: EngineSDKConstructor<Rsdkv3Payloads>;
|
|
85
|
+
export default Rsdkv3SDK;
|
|
45
86
|
//# sourceMappingURL=rsdkv3.sdk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsdkv3.sdk.d.ts","sourceRoot":"","sources":["../../src/rsdkv3.sdk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rsdkv3.sdk.d.ts","sourceRoot":"","sources":["../../src/rsdkv3.sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA0BhE,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,YAAY,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IACzE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,OAAO,GACjB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAaxD;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA0B7D;AAyCD,0DAA0D;AAC1D,qBAAa,UAAW,SAAQ,cAAc,CAAC,cAAc,CAAC;;gBAqBhD,IAAI,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAI9F,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,wFAAwF;IACxF,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,IAAI,CAE5B;IAED,uEAAuE;IACvE,IAAI,OAAO,IAAI,iBAAiB,CAc/B;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,SAAS,GAAG,IAAI;IAU3B,MAAM,CAAC,KAAK,SAAS,GAAG,IAAI;IAS5B,mFAAmF;IACnF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;cASR,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;cAwB5B,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;cAQlD,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;cAI3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA+IhD;AAED,0FAA0F;AAC1F,qBAAa,SAAU,SAAQ,aAAa,CAAC,cAAc,CAAC;IAC1D,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAa;IAC/B,yEAAyE;IACzE,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,uCAAuC;IAC3D,MAAM,CAAC,QAAQ,CAAC,WAAW,6JACiI;cAEzI,UAAU,CAC3B,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,EAChC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,GAC7C,UAAU;CAGd;AAED,6FAA6F;AAC7F,eAAO,MAAM,aAAa,EAAE,oBAAoB,CAAC,cAAc,CAAa,CAAC;AAE7E,eAAe,SAAS,CAAC"}
|