@lewismoten/gamemaker-sandbox-tools 0.0.0-stage → 3.1.0

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.
Files changed (127) hide show
  1. package/LICENSE +24 -0
  2. package/NOTICE.md +19 -0
  3. package/README.md +76 -2
  4. package/dist/audio.js +140 -0
  5. package/dist/binary-D7wuaC5g.js +120 -0
  6. package/dist/drawing.js +871 -0
  7. package/dist/formats/blocks.js +103 -0
  8. package/dist/formats/character.js +83 -0
  9. package/dist/formats/cmf.js +37 -0
  10. package/dist/formats/fli.js +296 -0
  11. package/dist/formats/fliLimits.js +54 -0
  12. package/dist/formats/game.js +193 -0
  13. package/dist/formats/gif.js +125 -0
  14. package/dist/formats/graphicScripts.js +44 -0
  15. package/dist/formats/map.js +38 -0
  16. package/dist/formats/monster.js +69 -0
  17. package/dist/formats/palette.js +58 -0
  18. package/dist/formats/recording.js +17 -0
  19. package/dist/formats/sound.js +44 -0
  20. package/dist/formats/voc.js +303 -0
  21. package/dist/images.js +50 -0
  22. package/dist/pixels-DzfIIUOl.js +76 -0
  23. package/dist/simulation.js +2776 -0
  24. package/dist/types/games/kit/blit.d.ts +10 -0
  25. package/dist/types/games/kit/clips.d.ts +36 -0
  26. package/dist/types/games/kit/gameSim.d.ts +108 -0
  27. package/dist/types/games/kit/music.d.ts +1 -0
  28. package/dist/types/games/kit/palette.d.ts +16 -0
  29. package/dist/types/games/kit/pcText.d.ts +8 -0
  30. package/dist/types/games/kit/pixels.d.ts +26 -0
  31. package/dist/types/games/kit/reel.d.ts +34 -0
  32. package/dist/types/games/kit/sceneSim.d.ts +84 -0
  33. package/dist/types/games/kit/shading.d.ts +11 -0
  34. package/dist/types/games/kit/sound.d.ts +29 -0
  35. package/dist/types/games/kit/textBounds.d.ts +51 -0
  36. package/dist/types/games/kit/tune.d.ts +6 -0
  37. package/dist/types/web/packages/tools/src/audio.d.ts +3 -0
  38. package/dist/types/web/packages/tools/src/colors.d.ts +20 -0
  39. package/dist/types/web/packages/tools/src/drawing.d.ts +10 -0
  40. package/dist/types/web/packages/tools/src/images.d.ts +2 -0
  41. package/dist/types/web/packages/tools/src/microFont.d.ts +1 -0
  42. package/dist/types/web/packages/tools/src/simulation.d.ts +3 -0
  43. package/dist/types/web/packages/tools/src/text.d.ts +41 -0
  44. package/dist/types/web/scripts/cdGames.d.ts +103 -0
  45. package/dist/types/web/scripts/gameShots.d.ts +12 -0
  46. package/dist/types/web/scripts/ogImage.d.ts +21 -0
  47. package/dist/types/web/src/assistant/png.d.ts +10 -0
  48. package/dist/types/web/src/audio/cmfLoad.d.ts +7 -0
  49. package/dist/types/web/src/audio/cmfPlayer.d.ts +69 -0
  50. package/dist/types/web/src/audio/compose.d.ts +51 -0
  51. package/dist/types/web/src/audio/context.d.ts +12 -0
  52. package/dist/types/web/src/audio/engine.d.ts +39 -0
  53. package/dist/types/web/src/audio/music.worklet.d.ts +14 -0
  54. package/dist/types/web/src/audio/opl.d.ts +37 -0
  55. package/dist/types/web/src/audio/output.d.ts +13 -0
  56. package/dist/types/web/src/desk/boxes/boxFacts.d.ts +85 -0
  57. package/dist/types/web/src/dosPlayer/fileExtensions.d.ts +44 -0
  58. package/dist/types/web/src/dosPlayer/patchRules.d.ts +24 -0
  59. package/dist/types/web/src/dosPlayer/patchTable.d.ts +80 -0
  60. package/dist/types/web/src/edition.d.ts +6 -0
  61. package/dist/types/web/src/eggs/eggState.d.ts +26 -0
  62. package/dist/types/web/src/eggs/eggs.d.ts +31 -0
  63. package/dist/types/web/src/engine/character.d.ts +30 -0
  64. package/dist/types/web/src/engine/funcKeys.d.ts +33 -0
  65. package/dist/types/web/src/engine/game.d.ts +52 -0
  66. package/dist/types/web/src/engine/keys.d.ts +17 -0
  67. package/dist/types/web/src/engine/machine.d.ts +99 -0
  68. package/dist/types/web/src/engine/menus.d.ts +46 -0
  69. package/dist/types/web/src/engine/monsters.d.ts +19 -0
  70. package/dist/types/web/src/engine/playGain.d.ts +11 -0
  71. package/dist/types/web/src/engine/playerLook.d.ts +26 -0
  72. package/dist/types/web/src/engine/recorder.d.ts +60 -0
  73. package/dist/types/web/src/engine/render.d.ts +8 -0
  74. package/dist/types/web/src/engine/scene.d.ts +156 -0
  75. package/dist/types/web/src/engine/scroll.d.ts +16 -0
  76. package/dist/types/web/src/engine/showGraphic.d.ts +39 -0
  77. package/dist/types/web/src/engine/slowPc.d.ts +62 -0
  78. package/dist/types/web/src/engine/touch.d.ts +33 -0
  79. package/dist/types/web/src/engine/world.d.ts +215 -0
  80. package/dist/types/web/src/export/gameAbout.d.ts +15 -0
  81. package/dist/types/web/src/formats/binary.d.ts +44 -0
  82. package/dist/types/web/src/formats/blocks.d.ts +52 -0
  83. package/dist/types/web/src/formats/character.d.ts +65 -0
  84. package/dist/types/web/src/formats/cmf.d.ts +33 -0
  85. package/dist/types/web/src/formats/fli.d.ts +45 -0
  86. package/dist/types/web/src/formats/fliLimits.d.ts +13 -0
  87. package/dist/types/web/src/formats/game.d.ts +72 -0
  88. package/dist/types/web/src/formats/gif.d.ts +15 -0
  89. package/dist/types/web/src/formats/graphicScripts.d.ts +18 -0
  90. package/dist/types/web/src/formats/highscore.d.ts +10 -0
  91. package/dist/types/web/src/formats/map.d.ts +24 -0
  92. package/dist/types/web/src/formats/monster.d.ts +48 -0
  93. package/dist/types/web/src/formats/palette.d.ts +15 -0
  94. package/dist/types/web/src/formats/recording.d.ts +7 -0
  95. package/dist/types/web/src/formats/sound.d.ts +13 -0
  96. package/dist/types/web/src/formats/voc.d.ts +13 -0
  97. package/dist/types/web/src/gfx/cp437Glyphs.d.ts +2 -0
  98. package/dist/types/web/src/gfx/font8x8.d.ts +2 -0
  99. package/dist/types/web/src/gfx/levelPicture.d.ts +81 -0
  100. package/dist/types/web/src/gfx/screen.d.ts +46 -0
  101. package/dist/types/web/src/gfx/titlePicture.d.ts +21 -0
  102. package/dist/types/web/src/input/chords.d.ts +22 -0
  103. package/dist/types/web/src/input/deskMouse.d.ts +14 -0
  104. package/dist/types/web/src/input/keyboard.d.ts +39 -0
  105. package/dist/types/web/src/input/scancodes.d.ts +3 -0
  106. package/dist/types/web/src/manual/printables/types.d.ts +277 -0
  107. package/dist/types/web/src/project/bizarre.d.ts +28 -0
  108. package/dist/types/web/src/project/companion.d.ts +35 -0
  109. package/dist/types/web/src/project/diskFacts.d.ts +30 -0
  110. package/dist/types/web/src/project/files.d.ts +124 -0
  111. package/dist/types/web/src/project/gameFiles.d.ts +49 -0
  112. package/dist/types/web/src/project/gamePack.d.ts +17 -0
  113. package/dist/types/web/src/project/health.d.ts +30 -0
  114. package/dist/types/web/src/project/secretGames.d.ts +19 -0
  115. package/dist/types/web/src/project/storage.d.ts +46 -0
  116. package/dist/types/web/src/project/streamGame.d.ts +38 -0
  117. package/dist/types/web/src/project/zip.d.ts +33 -0
  118. package/dist/types/web/src/retro/dos/disks.d.ts +33 -0
  119. package/dist/types/web/src/retro/text/cp437.d.ts +4 -0
  120. package/dist/types/web/src/seededRandom.d.ts +6 -0
  121. package/dist/types/web/src/tinHearts/deskHearts.d.ts +33 -0
  122. package/dist/types/web/src/tinHearts/manifest.d.ts +30 -0
  123. package/dist/types/web/src/tinHearts/tinHearts.d.ts +84 -0
  124. package/dist/types/web/src/walkthrough/format.d.ts +92 -0
  125. package/dist/types/web/src/walkthrough/madeUpScores.d.ts +6 -0
  126. package/dist/types/web/src/walkthrough/runtime.d.ts +134 -0
  127. package/package.json +60 -4
@@ -0,0 +1,193 @@
1
+ import { W as F, R as G, c as L } from "../binary-D7wuaC5g.js";
2
+ const w = 65535, O = 1, P = 2, M = 10, x = 20, y = 20, S = 20, B = 283, E = 256, T = 300, H = 8, U = [
3
+ "Title graphic",
4
+ "Title song",
5
+ "Menu graphic",
6
+ "Menu song",
7
+ "Storyline graphic",
8
+ "Storyline song",
9
+ "Game instructions",
10
+ "Beginning credits",
11
+ "High score backdrop",
12
+ "Load game background",
13
+ "Save game background",
14
+ "Demo recording"
15
+ ], Y = ["Game won graphic", "Game won song", "Game lost graphic", "Game lost song"], W = [
16
+ "Palette",
17
+ "Map",
18
+ "Background block set",
19
+ "Monsters",
20
+ "Monster block set",
21
+ "Character",
22
+ "Character block set",
23
+ "Sound set",
24
+ "Sound Blaster music",
25
+ "Level intro graphic",
26
+ "Level exit graphic"
27
+ ], Z = ["pal", "map", "bbl", "mon", "mbl", "chr", "cbl", "snd", "cmf", "graphic", "graphic"], K = ["graphic", "cmf", "graphic", "cmf", "graphic", "cmf", "graphic", "graphic", "graphic", "graphic", "graphic", "rec"], j = ["graphic", "cmf", "graphic", "cmf"], ne = ["gif", "bkd", "fli", "txt", "lst"];
28
+ function z(e) {
29
+ return e[0] === 71 && e[1] === 77;
30
+ }
31
+ function N() {
32
+ return { toScene: w, from: { x: 0, y: 0 }, to: { x: 0, y: 0 } };
33
+ }
34
+ function _(e = w) {
35
+ return {
36
+ gametype: e,
37
+ pos: { x: 0, y: 0 },
38
+ scroll: { up: 255, down: 255, left: 255, right: 255, style: 0, xtra: new Uint8Array(11) },
39
+ numLinks: S,
40
+ desc: "",
41
+ files: new Array(y).fill(""),
42
+ links: Array.from({ length: S }, N)
43
+ };
44
+ }
45
+ function R() {
46
+ const e = new Uint8Array(E);
47
+ for (let t = 0; t < E - 6; t++) e[6 + t] = "RSD".charCodeAt(t % 3);
48
+ return e[0] = 71, e[1] = 77, e[2] = T & 255, e[3] = T >> 8, e[4] = 0, e[5] = H, e;
49
+ }
50
+ function se(e = "My Game") {
51
+ const t = _(O);
52
+ t.desc = e.slice(0, x - 1), t.pos = { x: 157, y: 36 };
53
+ const s = _(P);
54
+ return s.desc = "Game Won", s.pos = { x: 157, y: 184 }, { version: T, header: R(), filesPerScene: y, linksPerScene: S, scenes: [t, s], converted: !1 };
55
+ }
56
+ function oe(e) {
57
+ return z(e) ? q(e) : Q(e);
58
+ }
59
+ function q(e) {
60
+ const t = new G(e), s = t.bytesOf(E), i = s[2] | s[3] << 8, n = t.i16(), l = t.i16(), c = t.i16(), o = [];
61
+ for (let f = 0; f < n; f++) {
62
+ const g = t.u16(), d = { x: t.i16(), y: t.i16() }, k = { up: t.u8(), down: t.u8(), left: t.u8(), right: t.u8(), style: t.u8(), xtra: t.bytesOf(11) }, b = t.u8(), p = t.bytesOf(x), u = [];
63
+ for (let h = 0; h < y; h++) u.push(t.u16());
64
+ const r = [];
65
+ for (let h = 0; h < S; h++) r.push({ toScene: t.u16(), from: { x: t.i16(), y: t.i16() }, to: { x: t.i16(), y: t.i16() } });
66
+ o.push({ scene: { gametype: g, pos: d, scroll: k, numLinks: b, desc: L(p), descRaw: p, files: [], links: r }, offsets: u });
67
+ }
68
+ const m = t.u16(), a = t.bytesOf(m);
69
+ for (const { scene: f, offsets: g } of o)
70
+ f.files = g.map((d) => d === 0 || d >= a.length ? "" : L(a.subarray(d)));
71
+ return {
72
+ version: i,
73
+ header: s,
74
+ filesPerScene: l,
75
+ linksPerScene: c,
76
+ scenes: o.map((f) => f.scene),
77
+ pool: a,
78
+ poolOffsets: o.map((f) => f.offsets),
79
+ converted: !1
80
+ };
81
+ }
82
+ const C = 330, D = 20, J = [".pal", ".map", ".bbl", ".mon", ".mbl", ".chr", ".cbl", ".snd", ".cmf"];
83
+ function Q(e) {
84
+ const t = Math.min(D, Math.floor(e.length / C)), s = [];
85
+ for (let i = 0; i < t; i++) {
86
+ const n = new G(e, i * C), l = n.u16(), c = n.i16(), o = n.i16(), m = n.cstr(15), a = [];
87
+ for (let r = 0; r < 9; r++) a.push(n.cstr(10).toLowerCase());
88
+ const f = [];
89
+ for (let r = 0; r < 20; r++) {
90
+ const h = n.i16(), A = n.i16(), v = n.i16(), V = n.i16(), X = n.i16();
91
+ f.push({ toScene: v === D ? w : v & 65535, from: { x: h, y: A }, to: { x: V, y: X } });
92
+ }
93
+ n.skip(3);
94
+ const g = n.u8(), d = n.u8(), k = n.u8(), b = n.u8(), p = _();
95
+ p.gametype = l === O || l === P || l === M ? l : w, p.pos = { x: c, y: o }, p.scroll = { up: g, down: d, left: k, right: b, style: 0, xtra: new Uint8Array(11) }, p.desc = m.slice(0, x), p.links = f;
96
+ const u = (r, h, A) => {
97
+ p.files[h] = a[r] ? a[r] + A : "";
98
+ };
99
+ if (i === 0)
100
+ u(0, 2, ".bkd"), u(1, 4, ".txt"), u(2, 6, ".txt"), u(3, 7, ".txt"), u(4, 3, ".cmf");
101
+ else if (i === 1)
102
+ u(0, 0, ".bkd"), u(3, 1, ".cmf");
103
+ else
104
+ for (let r = 0; r < 9; r++) u(r, r, J[r]);
105
+ s.push(p);
106
+ }
107
+ return { version: 0, header: R(), filesPerScene: y, linksPerScene: S, scenes: s, converted: !0 };
108
+ }
109
+ function ce(e) {
110
+ const t = new F(E + 6 + e.scenes.length * B + 512);
111
+ t.bytes(e.header, E), t.i16(e.scenes.length).i16(e.filesPerScene).i16(e.linksPerScene);
112
+ let s, i;
113
+ return e.pool && e.poolOffsets && e.poolOffsets.length === e.scenes.length && $(e) ? (s = e.pool, i = e.poolOffsets) : { pool: s, offsets: i } = ee(e.scenes), e.scenes.forEach((n, l) => {
114
+ t.u16(n.gametype).i16(n.pos.x).i16(n.pos.y), t.u8(n.scroll.up).u8(n.scroll.down).u8(n.scroll.left).u8(n.scroll.right).u8(n.scroll.style).bytes(n.scroll.xtra, 11), t.u8(n.numLinks), t.cstrOver(n.desc, n.descRaw, x);
115
+ for (let c = 0; c < y; c++) t.u16(i[l][c] ?? 0);
116
+ for (let c = 0; c < S; c++) {
117
+ const o = n.links[c] ?? N();
118
+ t.u16(o.toScene).i16(o.from.x).i16(o.from.y).i16(o.to.x).i16(o.to.y);
119
+ }
120
+ }), t.u16(s.length).bytes(s), t.toBytes();
121
+ }
122
+ function $(e) {
123
+ const t = e.pool;
124
+ return e.scenes.every(
125
+ (s, i) => s.files.every((n, l) => {
126
+ const c = e.poolOffsets[i][l];
127
+ return (c === 0 || c >= t.length ? "" : L(t.subarray(c))) === n;
128
+ })
129
+ );
130
+ }
131
+ function ee(e) {
132
+ const t = [0], s = /* @__PURE__ */ new Map(), i = e.map(
133
+ (n) => Array.from({ length: y }, (l, c) => {
134
+ const o = n.files[c] ?? "";
135
+ if (!o) return 0;
136
+ let m = s.get(o);
137
+ if (m === void 0) {
138
+ m = t.length, s.set(o, m);
139
+ for (let a = 0; a < o.length; a++) t.push(o.charCodeAt(a) & 255);
140
+ t.push(0);
141
+ }
142
+ return m;
143
+ })
144
+ );
145
+ return { pool: new Uint8Array(t), offsets: i };
146
+ }
147
+ function I(e) {
148
+ return e.gametype === O ? "start" : e.gametype === P ? "end" : e.gametype === M ? "adventure" : "unused";
149
+ }
150
+ function re(e) {
151
+ switch (I(e)) {
152
+ case "start":
153
+ return U;
154
+ case "end":
155
+ return Y;
156
+ default:
157
+ return W;
158
+ }
159
+ }
160
+ function ie(e) {
161
+ switch (I(e)) {
162
+ case "start":
163
+ return K;
164
+ case "end":
165
+ return j;
166
+ default:
167
+ return Z;
168
+ }
169
+ }
170
+ export {
171
+ M as ADVTYPE,
172
+ Z as ADV_EXTS,
173
+ W as ADV_FILES,
174
+ P as ENDTYPE,
175
+ Y as END_FILES,
176
+ T as GAM_VERSION,
177
+ ne as GRAPHIC_EXTS,
178
+ S as MAXSCENELINKS,
179
+ w as NOSCENE,
180
+ x as SCENEDESCLEN,
181
+ y as SCENEFILES,
182
+ O as STARTTYPE,
183
+ U as START_FILES,
184
+ R as defaultHeader,
185
+ N as emptyLink,
186
+ _ as emptyScene,
187
+ re as fileSlotsFor,
188
+ se as newGame,
189
+ oe as parseGame,
190
+ I as sceneKind,
191
+ ce as serializeGame,
192
+ ie as slotExtensions
193
+ };
@@ -0,0 +1,125 @@
1
+ import { PALETTE_SIZE as G, vga8 as v } from "./palette.js";
2
+ function M(n) {
3
+ return n[0] === 71 && n[1] === 73 && n[2] === 70;
4
+ }
5
+ function B(n) {
6
+ if (!M(n)) throw new Error("Not a GIF file");
7
+ let t = 6;
8
+ const o = () => {
9
+ const r = n[t] | n[t + 1] << 8;
10
+ return t += 2, r;
11
+ };
12
+ o(), o();
13
+ let i = n[t++];
14
+ t += 2;
15
+ const c = new Uint8Array(G), e = (r) => {
16
+ c.fill(0);
17
+ for (let h = 0; h < r; h++)
18
+ c[h * 3] = (n[t++] ?? 0) >> 2, c[h * 3 + 1] = (n[t++] ?? 0) >> 2, c[h * 3 + 2] = (n[t++] ?? 0) >> 2;
19
+ };
20
+ for (i & 128 && e(2 << (i & 7)); ; ) {
21
+ const r = n[t++];
22
+ if (r === 33) {
23
+ for (t++; t < n.length && n[t] !== 0; ) t += n[t] + 1;
24
+ t++;
25
+ } else {
26
+ if (r === 44) break;
27
+ throw new Error("GIF has no image");
28
+ }
29
+ }
30
+ t += 4;
31
+ const u = o(), l = o();
32
+ i = n[t++];
33
+ const p = (i & 64) !== 0;
34
+ i & 128 && e(2 << (i & 7));
35
+ const w = n[t++], d = [];
36
+ for (; t < n.length; ) {
37
+ const r = n[t++];
38
+ if (!r) break;
39
+ for (let h = 0; h < r && t < n.length; h++) d.push(n[t++]);
40
+ }
41
+ const s = m(Uint8Array.from(d), w, u * l), f = new Uint8Array(u * l);
42
+ if (!p) f.set(s.subarray(0, f.length));
43
+ else {
44
+ let r = 0;
45
+ for (const [h, A] of [
46
+ [0, 8],
47
+ [4, 8],
48
+ [2, 4],
49
+ [1, 2]
50
+ ])
51
+ for (let U = h; U < l; U += A)
52
+ f.set(s.subarray(r, r + u), U * u), r += u;
53
+ }
54
+ return { width: u, height: l, pixels: f, palette: c };
55
+ }
56
+ function m(n, t, o, i) {
57
+ const c = new Uint8Array(o), e = 1 << t, u = e + 1, l = new Int16Array(4096), p = new Uint8Array(4096), w = new Uint8Array(4096), d = new Uint8Array(4097);
58
+ let s = t + 1, f = e + 2, r = -1, h = 0, A = 0, U = 0, E = 0;
59
+ for (let a = 0; a < e; a++)
60
+ l[a] = -1, p[a] = a, w[a] = a;
61
+ for (; E < o; ) {
62
+ for (; A < s; ) {
63
+ if (U >= n.length)
64
+ return i && (i.count = E), c;
65
+ h |= n[U++] << A, A += 8;
66
+ }
67
+ const a = h & (1 << s) - 1;
68
+ if (h >>>= s, A -= s, a === e) {
69
+ s = t + 1, f = e + 2, r = -1;
70
+ continue;
71
+ }
72
+ if (a === u) break;
73
+ let g = a, k = 0;
74
+ for (r >= 0 && a >= f && (d[k++] = w[r], g = r); g >= e && k < 4096; )
75
+ d[k++] = p[g], g = l[g];
76
+ d[k++] = g;
77
+ const I = g;
78
+ for (; k > 0 && E < o; ) c[E++] = d[--k];
79
+ r >= 0 && f < 4096 && (l[f] = r, p[f] = I, w[f] = w[r], f++, f === 1 << s && s < 12 && s++), r < 0 && (w[a] = a), r = a;
80
+ }
81
+ return i && (i.count = E), c;
82
+ }
83
+ function F(n) {
84
+ const t = [], o = (e) => t.push(e & 255, e >> 8 & 255);
85
+ t.push(71, 73, 70, 56, 55, 97), o(n.width), o(n.height), t.push(247, 0, 0);
86
+ for (let e = 0; e < G; e++) t.push(v(n.palette[e]));
87
+ t.push(44), o(0), o(0), o(n.width), o(n.height), t.push(0);
88
+ const i = 8;
89
+ t.push(i);
90
+ const c = x(n.pixels, i);
91
+ for (let e = 0; e < c.length; e += 255) {
92
+ const u = Math.min(255, c.length - e);
93
+ t.push(u);
94
+ for (let l = 0; l < u; l++) t.push(c[e + l]);
95
+ }
96
+ return t.push(0, 59), Uint8Array.from(t);
97
+ }
98
+ function x(n, t) {
99
+ const o = 1 << t, i = o + 1, c = [];
100
+ let e = t + 1, u = i + 1, l = 0, p = 0;
101
+ const w = (f) => {
102
+ for (l |= f << p, p += e; p >= 8; )
103
+ c.push(l & 255), l >>>= 8, p -= 8;
104
+ };
105
+ let d = /* @__PURE__ */ new Map();
106
+ if (w(o), n.length === 0)
107
+ return w(i), p && c.push(l & 255), Uint8Array.from(c);
108
+ let s = n[0];
109
+ for (let f = 1; f < n.length; f++) {
110
+ const r = n[f], h = s << 8 | r, A = d.get(h);
111
+ if (A !== void 0) {
112
+ s = A;
113
+ continue;
114
+ }
115
+ w(s), u < 4096 ? (d.set(h, u++), u > 1 << e && e < 12 && e++) : (w(o), d = /* @__PURE__ */ new Map(), e = t + 1, u = i + 1), s = r;
116
+ }
117
+ return w(s), w(i), p && c.push(l & 255), Uint8Array.from(c);
118
+ }
119
+ export {
120
+ B as decodeGif,
121
+ F as encodeGif,
122
+ M as isGif,
123
+ m as lzwDecode,
124
+ x as lzwEncode
125
+ };
@@ -0,0 +1,44 @@
1
+ import { R as c, l as o, t as a } from "../binary-D7wuaC5g.js";
2
+ function p(n) {
3
+ const e = new c(n), t = e.i16(), s = e.i16(), i = o(n.subarray(4, 43)).split(/[\r\n\0]/)[0].trim();
4
+ return { x: t, y: s, gif: i };
5
+ }
6
+ function u(n) {
7
+ const e = a(n.gif), t = new Uint8Array(4 + e.length);
8
+ return t[0] = n.x & 255, t[1] = n.x >> 8 & 255, t[2] = n.y & 255, t[3] = n.y >> 8 & 255, t.set(e, 4), t;
9
+ }
10
+ function f(n) {
11
+ const e = [];
12
+ for (const t of o(n).split(`
13
+ `)) {
14
+ const s = t.replace(/[\r\x1a]/g, ""), r = /^([^ ]{0,15})[^ ]* *(.*)$/.exec(s);
15
+ if (!r || !r[1]) continue;
16
+ const i = r[2].trim();
17
+ e.push({ name: r[1].toLowerCase(), pause: i ? parseInt(i, 10) || 0 : void 0 });
18
+ }
19
+ return e;
20
+ }
21
+ function x(n) {
22
+ return a(n.map((e) => e.pause === void 0 ? e.name : `${e.name} ${e.pause}`).join(`\r
23
+ `) + `\r
24
+ `);
25
+ }
26
+ function m(n) {
27
+ const e = o(n).replace(/\x1a.*$/s, "").replace(/\r\n/g, `
28
+ `), t = [];
29
+ for (let s = 0; s < e.length; ) {
30
+ let r = s;
31
+ for (; r < e.length && r - s < 31 && e[r++] !== `
32
+ `; )
33
+ ;
34
+ t.push(e.slice(s, r).replace(/\n$/, "")), s = r;
35
+ }
36
+ return t;
37
+ }
38
+ export {
39
+ p as parseBackdrop,
40
+ f as parseSlideList,
41
+ u as serializeBackdrop,
42
+ x as serializeSlideList,
43
+ m as textLines
44
+ };
@@ -0,0 +1,38 @@
1
+ import { R as m, W as f } from "../binary-D7wuaC5g.js";
2
+ const e = 100, a = 100, u = 200, s = e * a;
3
+ function l(t) {
4
+ const r = new m(t), n = new Uint8Array(s), c = new Uint8Array(s);
5
+ for (let o = 0; o < s; o++)
6
+ n[o] = r.u8(), c[o] = r.u8();
7
+ const i = [];
8
+ for (let o = 0; o < u; o++)
9
+ i.push({ monnum: r.u8(), status: r.i16(), xtra: r.u8(), curx: r.i16(), cury: r.i16(), extra: r.i16() });
10
+ return { blocks: n, mons: c, monsters: i };
11
+ }
12
+ function y(t) {
13
+ const r = new f(s * 2 + u * 10);
14
+ for (let n = 0; n < s; n++) r.u8(t.blocks[n]).u8(t.mons[n]);
15
+ for (const n of t.monsters) r.u8(n.monnum).i16(n.status).u8(n.xtra).i16(n.curx).i16(n.cury).i16(n.extra);
16
+ return r.toBytes();
17
+ }
18
+ function M() {
19
+ return {
20
+ blocks: new Uint8Array(s),
21
+ mons: new Uint8Array(s).fill(u),
22
+ monsters: Array.from({ length: u }, () => ({ monnum: 64, status: 0, xtra: 0, curx: 0, cury: 0, extra: 0 }))
23
+ };
24
+ }
25
+ function w(t) {
26
+ t.mons.fill(u), t.monsters.forEach((r, n) => {
27
+ r.monnum < 64 && r.curx >= 0 && r.curx < e && r.cury >= 0 && r.cury < a && (t.mons[r.cury * e + r.curx] = n);
28
+ });
29
+ }
30
+ export {
31
+ u as LASTMM,
32
+ e as MLEN,
33
+ a as MWID,
34
+ M as newMap,
35
+ l as parseMap,
36
+ w as reindexMonsters,
37
+ y as serializeMap
38
+ };
@@ -0,0 +1,69 @@
1
+ import { W as R, R as g } from "../binary-D7wuaC5g.js";
2
+ const e = 64, p = 20, l = 10, L = 300, C = 0, V = 1;
3
+ function a(t) {
4
+ return { x: t.i16(), y: t.i16(), pic: t.i16(), orient: t.i16() };
5
+ }
6
+ function f(t, o) {
7
+ t.i16(o.x).i16(o.y).i16(o.pic).i16(o.orient);
8
+ }
9
+ function j(t) {
10
+ const o = t.i16(), n = t.i16(), c = t.i16(), M = t.i16(), h = t.u8(), y = t.i8(), s = [];
11
+ for (let i = 0; i <= p; i++) s.push([t.i16(), t.i16()]);
12
+ const d = t.u32(), w = t.i8(), A = t.i16(), x = t.bytesOf(21), T = t.i16(), E = t.i16(), O = t.i16(), S = [t.i16(), t.i16()], r = [[], []];
13
+ for (let i = 0; i < 2; i++) for (let u = 0; u < l; u++) r[i].push(a(t));
14
+ const N = a(t);
15
+ return { used: o, fly: n, jump: c, stick: M, power: h, thru: y, pic: s, lasttime: d, newmon: w, upscore: A, xtra: x, activate: T, end: E, towards: O, close: S, march: r, cur: N };
16
+ }
17
+ function k(t, o) {
18
+ t.i16(o.used).i16(o.fly).i16(o.jump).i16(o.stick).u8(o.power).i8(o.thru);
19
+ for (const [n, c] of o.pic) t.i16(n).i16(c);
20
+ t.u32(o.lasttime).i8(o.newmon).i16(o.upscore).bytes(o.xtra, 21).i16(o.activate).i16(o.end).i16(o.towards).i16(o.close[0]).i16(o.close[1]);
21
+ for (const n of o.march) for (const c of n) f(t, c);
22
+ f(t, o.cur);
23
+ }
24
+ function W(t) {
25
+ const o = new g(t);
26
+ return Array.from({ length: e }, () => j(o));
27
+ }
28
+ function z(t) {
29
+ const o = new R(e * L);
30
+ for (const n of t) k(o, n);
31
+ return o.toBytes();
32
+ }
33
+ function v() {
34
+ const t = Array.from({ length: p + 1 }, () => [100, 1]), o = () => Array.from({ length: l }, () => ({ x: 0, y: 0, pic: 0, orient: 0 }));
35
+ return {
36
+ used: 0,
37
+ fly: 0,
38
+ jump: 0,
39
+ stick: 0,
40
+ power: 1,
41
+ thru: 1,
42
+ pic: t,
43
+ lasttime: 0,
44
+ newmon: e,
45
+ upscore: 0,
46
+ xtra: new Uint8Array(21),
47
+ activate: 0,
48
+ end: 0,
49
+ towards: 0,
50
+ close: [0, 0],
51
+ march: [o(), o()],
52
+ cur: { x: 0, y: 0, pic: 0, orient: 0 }
53
+ };
54
+ }
55
+ function B() {
56
+ return Array.from({ length: e }, () => v());
57
+ }
58
+ export {
59
+ V as ATTACKMOVEMENT,
60
+ e as LASTMON,
61
+ p as LASTSL,
62
+ l as MAXMARCH,
63
+ L as MONSTER_SIZE,
64
+ C as NORMALMOVEMENT,
65
+ v as emptyMonster,
66
+ B as newMonsterSet,
67
+ W as parseMonsters,
68
+ z as serializeMonsters
69
+ };
@@ -0,0 +1,58 @@
1
+ const T = 768;
2
+ function h(t) {
3
+ const r = new Uint8Array(768);
4
+ return r.set(t.subarray(0, 768)), r;
5
+ }
6
+ function A(t) {
7
+ return t.slice(0, 768);
8
+ }
9
+ function P(t) {
10
+ const r = new Uint32Array(256);
11
+ for (let n = 0; n < 256; n++)
12
+ r[n] = 255 << 24 | u(t[n * 3 + 2]) << 16 | u(t[n * 3 + 1]) << 8 | u(t[n * 3]);
13
+ return r;
14
+ }
15
+ function u(t) {
16
+ const r = t & 63;
17
+ return r << 2 | r >> 4;
18
+ }
19
+ function b(t, r) {
20
+ return `rgb(${u(t[r * 3])},${u(t[r * 3 + 1])},${u(t[r * 3 + 2])})`;
21
+ }
22
+ function d(t, r, n, e) {
23
+ let o = 0, s = 1 / 0;
24
+ for (let c = 0; c < 256; c++) {
25
+ const i = (t[c * 3] & 63) - r, f = (t[c * 3 + 1] & 63) - n, a = (t[c * 3 + 2] & 63) - e, E = i * i + f * f + a * a;
26
+ E < s && (s = E, o = c);
27
+ }
28
+ return o;
29
+ }
30
+ function I() {
31
+ const t = new Uint8Array(768);
32
+ for (let n = 0; n < 16; n++) t.set([n * 4 + 3, n * 4 + 3, n * 4 + 3], n * 3);
33
+ let r = 16;
34
+ for (let n = 0; n < 6; n++)
35
+ for (let e = 0; e < 6; e++) for (let o = 0; o < 6; o++) t.set([Math.round(n * 63 / 5), Math.round(e * 63 / 5), Math.round(o * 63 / 5)], r++ * 3);
36
+ for (; r < 255; r++) {
37
+ const n = (r - 232) / 23 * 6, [e, o, s] = l(n, 1, 1);
38
+ t.set([e, o, s], r * 3);
39
+ }
40
+ return t.set([63, 0, 63], 765), t;
41
+ }
42
+ function l(t, r, n) {
43
+ const e = (o) => {
44
+ const s = (o + t) % 6;
45
+ return Math.round(63 * (n - n * r * Math.max(0, Math.min(s, 4 - s, 1))));
46
+ };
47
+ return [e(5), e(3), e(1)];
48
+ }
49
+ export {
50
+ T as PALETTE_SIZE,
51
+ I as defaultPalette,
52
+ d as matchColor,
53
+ b as paletteCss,
54
+ P as paletteToRGBA,
55
+ h as parsePalette,
56
+ A as serializePalette,
57
+ u as vga8
58
+ };
@@ -0,0 +1,17 @@
1
+ import { R as i, W as s } from "../binary-D7wuaC5g.js";
2
+ const r = 1e3;
3
+ function a(t) {
4
+ const e = new i(t), o = [], c = Math.min(r, Math.floor(t.length / 3));
5
+ for (let n = 0; n < c; n++) o.push({ delta: e.u16(), key: e.u8() });
6
+ return o;
7
+ }
8
+ function l(t) {
9
+ const e = new s(t.length * 3);
10
+ for (const o of t.slice(0, r)) e.u16(o.delta).u8(o.key);
11
+ return e.toBytes();
12
+ }
13
+ export {
14
+ r as RECLEN,
15
+ a as parseRecording,
16
+ l as serializeRecording
17
+ };
@@ -0,0 +1,44 @@
1
+ import { R as f, W as u } from "../binary-D7wuaC5g.js";
2
+ const e = 30, s = 36, d = e * s * 2 + e * 9, w = [
3
+ "Help (hit points up)",
4
+ "Kill monster",
5
+ "Add money",
6
+ "Subtract money",
7
+ "Add life",
8
+ "Add score",
9
+ "Subtract score",
10
+ "Add other counter",
11
+ "Subtract other counter"
12
+ ];
13
+ function A(i) {
14
+ const n = new f(i), o = [];
15
+ for (let r = 0; r < e; r++) {
16
+ const c = new Uint16Array(s);
17
+ for (let a = 0; a < s; a++) c[a] = n.u16();
18
+ o.push(c);
19
+ }
20
+ const t = [];
21
+ for (let r = 0; r < e; r++) t.push(n.bytesOf(9));
22
+ const l = t.map((r) => new f(r).cstr(9));
23
+ return { freqs: o, digital: l, digitalRaw: t };
24
+ }
25
+ function y(i) {
26
+ const n = new u(d);
27
+ for (const o of i.freqs) for (let t = 0; t < s; t++) n.u16(o[t] ?? 0);
28
+ return i.digital.forEach((o, t) => n.cstrOver(o, i.digitalRaw[t], 9)), n.toBytes();
29
+ }
30
+ function p() {
31
+ return {
32
+ freqs: Array.from({ length: e }, () => new Uint16Array(s)),
33
+ digital: new Array(e).fill(""),
34
+ digitalRaw: Array.from({ length: e }, () => new Uint8Array(9))
35
+ };
36
+ }
37
+ export {
38
+ e as LASTSND,
39
+ s as NUMFREQ,
40
+ w as SOUND_NAMES,
41
+ p as newSoundSet,
42
+ A as parseSoundSet,
43
+ y as serializeSoundSet
44
+ };