@4bitlabs/sci0 2.5.0 → 2.6.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 (58) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/models/draw-command.d.ts +29 -15
  6. package/dist/models/draw-command.d.ts.map +1 -1
  7. package/dist/models/draw-command.js +7 -1
  8. package/dist/models/draw-command.js.map +1 -1
  9. package/dist/models/resource-id.d.ts.map +1 -1
  10. package/dist/models/resource-id.js +3 -2
  11. package/dist/models/resource-id.js.map +1 -1
  12. package/dist/models/vec2.d.ts +0 -1
  13. package/dist/models/vec2.d.ts.map +1 -1
  14. package/dist/models/vec2.js.map +1 -1
  15. package/dist/parsers/compression.d.ts.map +1 -1
  16. package/dist/parsers/compression.js +4 -3
  17. package/dist/parsers/compression.js.map +1 -1
  18. package/dist/parsers/mapping.d.ts.map +1 -1
  19. package/dist/parsers/pic/handlers.d.ts +7 -3
  20. package/dist/parsers/pic/handlers.d.ts.map +1 -1
  21. package/dist/parsers/pic/handlers.js +89 -92
  22. package/dist/parsers/pic/handlers.js.map +1 -1
  23. package/dist/parsers/pic/parser.d.ts.map +1 -1
  24. package/dist/parsers/pic/parser.js +11 -8
  25. package/dist/parsers/pic/parser.js.map +1 -1
  26. package/dist/parsers/pic/points.d.ts +3 -3
  27. package/dist/parsers/pic/points.d.ts.map +1 -1
  28. package/dist/parsers/pic/points.js.map +1 -1
  29. package/dist/screen/render-pic.d.ts +2 -0
  30. package/dist/screen/render-pic.d.ts.map +1 -1
  31. package/dist/screen/render-pic.js +9 -17
  32. package/dist/screen/render-pic.js.map +1 -1
  33. package/dist/screen/screen-buffer.d.ts +1 -1
  34. package/dist/screen/screen-buffer.d.ts.map +1 -1
  35. package/dist/screen/screen-buffer.js +19 -21
  36. package/dist/screen/screen-buffer.js.map +1 -1
  37. package/dist/screen/screen.d.ts +3 -0
  38. package/dist/screen/screen.d.ts.map +1 -1
  39. package/dist/screen/tools/create-blitter.d.ts +5 -0
  40. package/dist/screen/tools/create-blitter.d.ts.map +1 -0
  41. package/dist/screen/tools/create-blitter.js +22 -0
  42. package/dist/screen/tools/create-blitter.js.map +1 -0
  43. package/dist/screen/tools/create-brush.d.ts +1 -2
  44. package/dist/screen/tools/create-brush.d.ts.map +1 -1
  45. package/dist/screen/tools/create-brush.js.map +1 -1
  46. package/dist/screen/tools/create-flood-fill.d.ts +1 -2
  47. package/dist/screen/tools/create-flood-fill.d.ts.map +1 -1
  48. package/dist/screen/tools/create-flood-fill.js.map +1 -1
  49. package/dist/screen/tools/index.d.ts +1 -0
  50. package/dist/screen/tools/index.d.ts.map +1 -1
  51. package/dist/screen/tools/index.js +3 -1
  52. package/dist/screen/tools/index.js.map +1 -1
  53. package/dist/utils/exhaustive.d.ts +2 -0
  54. package/dist/utils/exhaustive.d.ts.map +1 -0
  55. package/dist/utils/exhaustive.js +8 -0
  56. package/dist/utils/exhaustive.js.map +1 -0
  57. package/dist/utils/repeat.d.ts.map +1 -1
  58. package/package.json +5 -5
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export type { ResourceHeader } from './models/resource-header';
2
2
  export type { ResourceMap } from './models/resource-map';
3
3
  export type { ResourceType } from './models/resource-type';
4
- export type { DrawCommand } from './models/draw-command';
4
+ export type { PatternCode, DrawCodes, SetPaletteCommand, UpdatePaletteCommand, BrushCommand, FillCommand, PolylineCommand, EmbeddedCelCommand, DrawCommand, } from './models/draw-command';
5
+ export { DrawMode } from './models/draw-command';
5
6
  export { getResourceNumber, getResourceType, getResourceIdStr, getResourceTypeStr, isResourceType, isResourceNumber, } from './models/resource-id';
6
7
  export { ResourceTypes } from './models/resource-type';
7
8
  export { renderPic, loopPaddingFilter } from './screen';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,OAAO,IAAI,uBAAuB,GACnC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAEvD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,4CAA4C;AAC5C,eAAO,MAAM,MAAM;;CAElB,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,IAAI;;CAEhB,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,IAAI;;CAEhB,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,GAAG;;CAEf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,OAAO,IAAI,uBAAuB,GACnC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAEvD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,4CAA4C;AAC5C,eAAO,MAAM,MAAM;;CAElB,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,IAAI;;CAEhB,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,IAAI;;CAEhB,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,GAAG;;CAEf,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Pic = exports.View = exports.Font = exports.Cursor = exports.parsePic = exports.parseView = exports.parseFont = exports.parseCursor = exports.decompress = exports.parseHeaderFrom = exports.getPayloadLength = exports.consumeNextMappingChunk = exports.parseAllMappings = exports.loopPaddingFilter = exports.renderPic = exports.ResourceTypes = exports.isResourceNumber = exports.isResourceType = exports.getResourceTypeStr = exports.getResourceIdStr = exports.getResourceType = exports.getResourceNumber = void 0;
3
+ exports.Pic = exports.View = exports.Font = exports.Cursor = exports.parsePic = exports.parseView = exports.parseFont = exports.parseCursor = exports.decompress = exports.parseHeaderFrom = exports.getPayloadLength = exports.consumeNextMappingChunk = exports.parseAllMappings = exports.loopPaddingFilter = exports.renderPic = exports.ResourceTypes = exports.isResourceNumber = exports.isResourceType = exports.getResourceTypeStr = exports.getResourceIdStr = exports.getResourceType = exports.getResourceNumber = exports.DrawMode = void 0;
4
+ var draw_command_1 = require("./models/draw-command");
5
+ Object.defineProperty(exports, "DrawMode", { enumerable: true, get: function () { return draw_command_1.DrawMode; } });
4
6
  var resource_id_1 = require("./models/resource-id");
5
7
  Object.defineProperty(exports, "getResourceNumber", { enumerable: true, get: function () { return resource_id_1.getResourceNumber; } });
6
8
  Object.defineProperty(exports, "getResourceType", { enumerable: true, get: function () { return resource_id_1.getResourceType; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAKA,oDAO8B;AAN5B,gHAAA,iBAAiB,OAAA;AACjB,8GAAA,eAAe,OAAA;AACf,+GAAA,gBAAgB,OAAA;AAChB,iHAAA,kBAAkB,OAAA;AAClB,6GAAA,cAAc,OAAA;AACd,+GAAA,gBAAgB,OAAA;AAElB,wDAAuD;AAA9C,8GAAA,aAAa,OAAA;AAEtB,mCAAwD;AAA/C,mGAAA,SAAS,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAErC,6CAG2B;AAFzB,2GAAA,QAAQ,OAAoB;AAC5B,kHAAA,OAAO,OAA2B;AAEpC,6DAA8E;AAArE,mHAAA,gBAAgB,OAAA;AAAE,kHAAA,eAAe,OAAA;AAC1C,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AACnB,6CAA4D;AAKnD,4FALa,kBAAW,OAKb;AAJpB,yCAAwD;AAIlC,0FAJA,gBAAS,OAIA;AAH/B,yCAAwD;AAGvB,0FAHX,gBAAS,OAGW;AAF1C,uCAAsD;AAEV,yFAFtB,eAAQ,OAEsB;AAMpD,4CAA4C;AAC/B,QAAA,MAAM,GAAG;IACpB,SAAS,EAAE,kBAAW;CACvB,CAAC;AAEF,0CAA0C;AAC7B,QAAA,IAAI,GAAG;IAClB,SAAS,EAAE,gBAAS;CACrB,CAAC;AAEF,0CAA0C;AAC7B,QAAA,IAAI,GAAG;IAClB,SAAS,EAAE,gBAAS;CACrB,CAAC;AAEF,yCAAyC;AAC5B,QAAA,GAAG,GAAG;IACjB,SAAS,EAAE,eAAQ;CACpB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAcA,sDAAiD;AAAxC,wGAAA,QAAQ,OAAA;AAEjB,oDAO8B;AAN5B,gHAAA,iBAAiB,OAAA;AACjB,8GAAA,eAAe,OAAA;AACf,+GAAA,gBAAgB,OAAA;AAChB,iHAAA,kBAAkB,OAAA;AAClB,6GAAA,cAAc,OAAA;AACd,+GAAA,gBAAgB,OAAA;AAElB,wDAAuD;AAA9C,8GAAA,aAAa,OAAA;AAEtB,mCAAwD;AAA/C,mGAAA,SAAS,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAErC,6CAG2B;AAFzB,2GAAA,QAAQ,OAAoB;AAC5B,kHAAA,OAAO,OAA2B;AAEpC,6DAA8E;AAArE,mHAAA,gBAAgB,OAAA;AAAE,kHAAA,eAAe,OAAA;AAC1C,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AACnB,6CAA4D;AAKnD,4FALa,kBAAW,OAKb;AAJpB,yCAAwD;AAIlC,0FAJA,gBAAS,OAIA;AAH/B,yCAAwD;AAGvB,0FAHX,gBAAS,OAGW;AAF1C,uCAAsD;AAEV,yFAFtB,eAAQ,OAEsB;AAMpD,4CAA4C;AAC/B,QAAA,MAAM,GAAG;IACpB,SAAS,EAAE,kBAAW;CACvB,CAAC;AAEF,0CAA0C;AAC7B,QAAA,IAAI,GAAG;IAClB,SAAS,EAAE,gBAAS;CACrB,CAAC;AAEF,0CAA0C;AAC7B,QAAA,IAAI,GAAG;IAClB,SAAS,EAAE,gBAAS;CACrB,CAAC;AAEF,yCAAyC;AAC5B,QAAA,GAAG,GAAG;IACjB,SAAS,EAAE,eAAQ;CACpB,CAAC"}
@@ -1,43 +1,57 @@
1
1
  import { Cel } from './cel';
2
- import { StaticVec2 } from './vec2';
2
+ import { Vec2 } from './vec2';
3
3
  export declare enum DrawMode {
4
4
  Visual = 1,
5
5
  Priority = 2,
6
6
  Control = 4
7
7
  }
8
- export type PatternCode = [size: number, isRect: boolean, isSpray: boolean];
9
- export type DrawCodes = [visual: number, priority: number, control: number];
10
- type SetPaletteCommand = [mode: 'SET_PALETTE', pal: number, colors: Uint8Array];
11
- type UpdatePaletteCommand = [
8
+ export declare const isVisualMode: (mode: DrawMode) => boolean;
9
+ export declare const isPriorityMode: (mode: DrawMode) => boolean;
10
+ export declare const isControlMode: (mode: DrawMode) => boolean;
11
+ export type PatternCode = readonly [
12
+ size: number,
13
+ isRect: boolean,
14
+ isSpray: boolean
15
+ ];
16
+ export type DrawCodes = readonly [
17
+ visual: number,
18
+ priority: number,
19
+ control: number
20
+ ];
21
+ export type SetPaletteCommand = readonly [
22
+ mode: 'SET_PALETTE',
23
+ pal: number,
24
+ colors: readonly number[]
25
+ ];
26
+ export type UpdatePaletteCommand = readonly [
12
27
  mode: 'UPDATE_PALETTE',
13
- entries: [pal: number, idx: number, color: number][]
28
+ entries: readonly [pal: number, idx: number, color: number][]
14
29
  ];
15
- type BrushCommand = [
30
+ export type BrushCommand = readonly [
16
31
  mode: 'BRUSH',
17
32
  drawMode: DrawMode,
18
33
  drawCodes: DrawCodes,
19
34
  patternCode: PatternCode,
20
35
  textureCode: number,
21
- pos: StaticVec2
36
+ pos: Vec2
22
37
  ];
23
- type FillCommand = [
38
+ export type FillCommand = readonly [
24
39
  mode: 'FILL',
25
40
  drawMode: DrawMode,
26
41
  drawCodes: DrawCodes,
27
- pos: StaticVec2
42
+ pos: Vec2
28
43
  ];
29
- type PolylineCommand = [
44
+ export type PolylineCommand = readonly [
30
45
  mode: 'PLINE',
31
46
  drawMode: DrawMode,
32
47
  drawCodes: DrawCodes,
33
- ...points: StaticVec2[]
48
+ ...points: Vec2[]
34
49
  ];
35
- type EmbeddedCelCommand = [
50
+ export type EmbeddedCelCommand = readonly [
36
51
  mode: 'CEL',
37
52
  drawMode: DrawMode,
38
- pos: StaticVec2,
53
+ pos: Vec2,
39
54
  cel: Cel
40
55
  ];
41
56
  export type DrawCommand = BrushCommand | FillCommand | PolylineCommand | SetPaletteCommand | UpdatePaletteCommand | EmbeddedCelCommand;
42
- export {};
43
57
  //# sourceMappingURL=draw-command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"draw-command.d.ts","sourceRoot":"","sources":["../../src/models/draw-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,oBAAY,QAAQ;IAClB,MAAM,IAAS;IACf,QAAQ,IAAS;IACjB,OAAO,IAAS;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5E,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAE5E,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAEhF,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;CACrD,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,MAAM;IACnB,GAAG,EAAE,UAAU;CAChB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,GAAG,EAAE,UAAU;CAChB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,GAAG,MAAM,EAAE,UAAU,EAAE;CACxB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,GAAG;CACT,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,WAAW,GACX,eAAe,GACf,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,CAAC"}
1
+ {"version":3,"file":"draw-command.d.ts","sourceRoot":"","sources":["../../src/models/draw-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,oBAAY,QAAQ;IAClB,MAAM,IAAQ;IACd,QAAQ,IAAQ;IAChB,OAAO,IAAQ;CAChB;AAED,eAAO,MAAM,YAAY,SAAU,QAAQ,YACiB,CAAC;AAE7D,eAAO,MAAM,cAAc,SAAU,QAAQ,YACmB,CAAC;AAEjE,eAAO,MAAM,aAAa,SAAU,QAAQ,YACkB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG,SAAS;IACjC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,SAAS;IAC/B,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,MAAM;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,SAAS;IACvC,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,MAAM;IACX,MAAM,EAAE,SAAS,MAAM,EAAE;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,SAAS;IAC1C,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;CAC9D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,SAAS;IAClC,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,MAAM;IACnB,GAAG,EAAE,IAAI;CACV,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,SAAS;IACjC,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,GAAG,EAAE,IAAI;CACV,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,SAAS;IACrC,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,GAAG,MAAM,EAAE,IAAI,EAAE;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,SAAS;IACxC,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;CACT,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,WAAW,GACX,eAAe,GACf,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,CAAC"}
@@ -1,10 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DrawMode = void 0;
3
+ exports.isControlMode = exports.isPriorityMode = exports.isVisualMode = exports.DrawMode = void 0;
4
4
  var DrawMode;
5
5
  (function (DrawMode) {
6
6
  DrawMode[DrawMode["Visual"] = 1] = "Visual";
7
7
  DrawMode[DrawMode["Priority"] = 2] = "Priority";
8
8
  DrawMode[DrawMode["Control"] = 4] = "Control";
9
9
  })(DrawMode || (exports.DrawMode = DrawMode = {}));
10
+ const isVisualMode = (mode) => (mode & DrawMode.Visual) === DrawMode.Visual;
11
+ exports.isVisualMode = isVisualMode;
12
+ const isPriorityMode = (mode) => (mode & DrawMode.Priority) === DrawMode.Priority;
13
+ exports.isPriorityMode = isPriorityMode;
14
+ const isControlMode = (mode) => (mode & DrawMode.Control) === DrawMode.Control;
15
+ exports.isControlMode = isControlMode;
10
16
  //# sourceMappingURL=draw-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"draw-command.js","sourceRoot":"","sources":["../../src/models/draw-command.ts"],"names":[],"mappings":";;;AAGA,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,2CAAe,CAAA;IACf,+CAAiB,CAAA;IACjB,6CAAgB,CAAA;AAClB,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB"}
1
+ {"version":3,"file":"draw-command.js","sourceRoot":"","sources":["../../src/models/draw-command.ts"],"names":[],"mappings":";;;AAGA,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,2CAAc,CAAA;IACd,+CAAgB,CAAA;IAChB,6CAAe,CAAA;AACjB,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAEM,MAAM,YAAY,GAAG,CAAC,IAAc,EAAE,EAAE,CAC5C,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAc,KAAK,QAAQ,CAAC,MAAM,CAAC;AADhD,QAAA,YAAY,gBACoC;AAEtD,MAAM,cAAc,GAAG,CAAC,IAAc,EAAE,EAAE,CAC9C,CAAC,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAc,KAAK,QAAQ,CAAC,QAAQ,CAAC;AADpD,QAAA,cAAc,kBACsC;AAE1D,MAAM,aAAa,GAAG,CAAC,IAAc,EAAE,EAAE,CAC7C,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAc,KAAK,QAAQ,CAAC,OAAO,CAAC;AADlD,QAAA,aAAa,iBACqC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-id.d.ts","sourceRoot":"","sources":["../../src/models/resource-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,eAAO,MAAM,eAAe,OAAQ,MAAM,KAAG,YAChB,CAAC;AAE9B,eAAO,MAAM,iBAAiB,OAAQ,MAAM,KAAG,MAA8B,CAAC;AAE9E,eAAO,MAAM,gBAAgB,OAAQ,MAAM,WACa,CAAC;AAEzD,eAAO,MAAM,kBAAkB,OAAQ,MAAM,oGA0B5C,CAAC;AAEF,KAAK,mBAAmB,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;AAEnD,eAAO,MAAM,cAAc,aACd,YAAY,EAAE,KAAG,mBAES,CAAC;AAExC,eAAO,MAAM,gBAAgB,eACd,MAAM,EAAE,KAAG,mBAEiB,CAAC"}
1
+ {"version":3,"file":"resource-id.d.ts","sourceRoot":"","sources":["../../src/models/resource-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,eAAO,MAAM,eAAe,OAAQ,MAAM,KAAG,YAChB,CAAC;AAE9B,eAAO,MAAM,iBAAiB,OAAQ,MAAM,KAAG,MAA8B,CAAC;AAE9E,eAAO,MAAM,gBAAgB,OAAQ,MAAM,WAC0B,CAAC;AAEtE,eAAO,MAAM,kBAAkB,OAAQ,MAAM,oGA0B5C,CAAC;AAEF,KAAK,mBAAmB,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;AAEnD,eAAO,MAAM,cAAc,aACd,YAAY,EAAE,KAAG,mBAES,CAAC;AAExC,eAAO,MAAM,gBAAgB,eACd,MAAM,EAAE,KAAG,mBAEiB,CAAC"}
@@ -25,11 +25,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.isResourceNumber = exports.isResourceType = exports.getResourceTypeStr = exports.getResourceIdStr = exports.getResourceNumber = exports.getResourceType = void 0;
27
27
  const ResourceTypes = __importStar(require("./resource-type"));
28
+ const exhaustive_1 = require("../utils/exhaustive");
28
29
  const getResourceType = (id) => (id >>> 11);
29
30
  exports.getResourceType = getResourceType;
30
31
  const getResourceNumber = (id) => id & 2047;
31
32
  exports.getResourceNumber = getResourceNumber;
32
- const getResourceIdStr = (id) => `(${(0, exports.getResourceTypeStr)(id)}:${(0, exports.getResourceNumber)(id)})`;
33
+ const getResourceIdStr = (id) => `(${(0, exports.getResourceTypeStr)(id)}:${(0, exports.getResourceNumber)(id).toString(10)})`;
33
34
  exports.getResourceIdStr = getResourceIdStr;
34
35
  const getResourceTypeStr = (id) => {
35
36
  const type = (0, exports.getResourceType)(id);
@@ -55,7 +56,7 @@ const getResourceTypeStr = (id) => {
55
56
  case ResourceTypes.PATCH_TYPE:
56
57
  return 'Patch';
57
58
  default:
58
- throw new Error(`Unsupported resource type: ${type}`);
59
+ (0, exhaustive_1.exhaustive)('Unsupported resource type', type);
59
60
  }
60
61
  };
61
62
  exports.getResourceTypeStr = getResourceTypeStr;
@@ -1 +1 @@
1
- {"version":3,"file":"resource-id.js","sourceRoot":"","sources":["../../src/models/resource-id.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+DAAiD;AAE1C,MAAM,eAAe,GAAG,CAAC,EAAU,EAAgB,EAAE,CAC1D,CAAC,EAAE,KAAK,EAAE,CAAiB,CAAC;AADjB,QAAA,eAAe,mBACE;AAEvB,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,EAAE,GAAG,IAAe,CAAC;AAAjE,QAAA,iBAAiB,qBAAgD;AAEvE,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAE,EAAE,CAC7C,IAAI,IAAA,0BAAkB,EAAC,EAAE,CAAC,IAAI,IAAA,yBAAiB,EAAC,EAAE,CAAC,GAAG,CAAC;AAD5C,QAAA,gBAAgB,oBAC4B;AAElD,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE;IAC/C,MAAM,IAAI,GAAG,IAAA,uBAAe,EAAC,EAAE,CAAC,CAAC;IACjC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,SAAS;YAC1B,OAAO,MAAM,CAAC;QAChB,KAAK,aAAa,CAAC,QAAQ;YACzB,OAAO,KAAK,CAAC;QACf,KAAK,aAAa,CAAC,WAAW;YAC5B,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAa,CAAC,SAAS;YAC1B,OAAO,MAAM,CAAC;QAChB,KAAK,aAAa,CAAC,UAAU;YAC3B,OAAO,OAAO,CAAC;QACjB,KAAK,aAAa,CAAC,WAAW;YAC5B,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAa,CAAC,UAAU;YAC3B,OAAO,OAAO,CAAC;QACjB,KAAK,aAAa,CAAC,SAAS;YAC1B,OAAO,MAAM,CAAC;QAChB,KAAK,aAAa,CAAC,WAAW;YAC5B,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAa,CAAC,UAAU;YAC3B,OAAO,OAAO,CAAC;QACjB;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC;AA1BW,QAAA,kBAAkB,sBA0B7B;AAIK,MAAM,cAAc,GACzB,CAAC,GAAG,KAAqB,EAAuB,EAAE,CAClD,CAAC,EAAU,EAAW,EAAE,CACtB,KAAK,CAAC,QAAQ,CAAC,IAAA,uBAAe,EAAC,EAAE,CAAC,CAAC,CAAC;AAH3B,QAAA,cAAc,kBAGa;AAEjC,MAAM,gBAAgB,GAC3B,CAAC,GAAG,OAAiB,EAAuB,EAAE,CAC9C,CAAC,EAAU,EAAW,EAAE,CACtB,OAAO,CAAC,QAAQ,CAAC,IAAA,yBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;AAH/B,QAAA,gBAAgB,oBAGe"}
1
+ {"version":3,"file":"resource-id.js","sourceRoot":"","sources":["../../src/models/resource-id.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+DAAiD;AACjD,oDAAiD;AAE1C,MAAM,eAAe,GAAG,CAAC,EAAU,EAAgB,EAAE,CAC1D,CAAC,EAAE,KAAK,EAAE,CAAiB,CAAC;AADjB,QAAA,eAAe,mBACE;AAEvB,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,EAAE,GAAG,IAAe,CAAC;AAAjE,QAAA,iBAAiB,qBAAgD;AAEvE,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAE,EAAE,CAC7C,IAAI,IAAA,0BAAkB,EAAC,EAAE,CAAC,IAAI,IAAA,yBAAiB,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;AADzD,QAAA,gBAAgB,oBACyC;AAE/D,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE;IAC/C,MAAM,IAAI,GAAG,IAAA,uBAAe,EAAC,EAAE,CAAC,CAAC;IACjC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,SAAS;YAC1B,OAAO,MAAM,CAAC;QAChB,KAAK,aAAa,CAAC,QAAQ;YACzB,OAAO,KAAK,CAAC;QACf,KAAK,aAAa,CAAC,WAAW;YAC5B,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAa,CAAC,SAAS;YAC1B,OAAO,MAAM,CAAC;QAChB,KAAK,aAAa,CAAC,UAAU;YAC3B,OAAO,OAAO,CAAC;QACjB,KAAK,aAAa,CAAC,WAAW;YAC5B,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAa,CAAC,UAAU;YAC3B,OAAO,OAAO,CAAC;QACjB,KAAK,aAAa,CAAC,SAAS;YAC1B,OAAO,MAAM,CAAC;QAChB,KAAK,aAAa,CAAC,WAAW;YAC5B,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAa,CAAC,UAAU;YAC3B,OAAO,OAAO,CAAC;QACjB;YACE,IAAA,uBAAU,EAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;AACH,CAAC,CAAC;AA1BW,QAAA,kBAAkB,sBA0B7B;AAIK,MAAM,cAAc,GACzB,CAAC,GAAG,KAAqB,EAAuB,EAAE,CAClD,CAAC,EAAU,EAAW,EAAE,CACtB,KAAK,CAAC,QAAQ,CAAC,IAAA,uBAAe,EAAC,EAAE,CAAC,CAAC,CAAC;AAH3B,QAAA,cAAc,kBAGa;AAEjC,MAAM,gBAAgB,GAC3B,CAAC,GAAG,OAAiB,EAAuB,EAAE,CAC9C,CAAC,EAAU,EAAW,EAAE,CACtB,OAAO,CAAC,QAAQ,CAAC,IAAA,yBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;AAH/B,QAAA,gBAAgB,oBAGe"}
@@ -1,5 +1,4 @@
1
1
  export type Vec2 = [number, number];
2
- export type StaticVec2 = readonly [number, number];
3
2
  export declare const vec2: {
4
3
  create(): Vec2;
5
4
  clone(source: Vec2): Vec2;
@@ -1 +1 @@
1
- {"version":3,"file":"vec2.d.ts","sourceRoot":"","sources":["../../src/models/vec2.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpC,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,IAAI;;;;sBAYG,MAAM,KAAK,MAAM;CAKpC,CAAC"}
1
+ {"version":3,"file":"vec2.d.ts","sourceRoot":"","sources":["../../src/models/vec2.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpC,eAAO,MAAM,IAAI;;;;sBAYG,MAAM,KAAK,MAAM;CAKpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"vec2.js","sourceRoot":"","sources":["../../src/models/vec2.ts"],"names":[],"mappings":";;;AAGa,QAAA,IAAI,GAAG;IAClB,MAAM;QACJ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,KAAK,CAAC,MAAY;QAChB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,GAAS,EAAE,CAAO;QACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;IACD,GAAG,CAAC,GAAS,EAAE,CAAS,EAAE,CAAS;QACjC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"vec2.js","sourceRoot":"","sources":["../../src/models/vec2.ts"],"names":[],"mappings":";;;AAEa,QAAA,IAAI,GAAG;IAClB,MAAM;QACJ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,KAAK,CAAC,MAAY;QAChB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,GAAS,EAAE,CAAO;QACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;IACD,GAAG,CAAC,GAAS,EAAE,CAAS,EAAE,CAAS;QACjC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/parsers/compression.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,UAAU,SACf,MAAM,GAAG,OAAO,UACd,MAAM,SACP,UAAU,KAChB,UAeF,CAAC"}
1
+ {"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/parsers/compression.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,UAAU,SACf,MAAM,GAAG,OAAO,UACd,MAAM,SACP,UAAU,KAChB,UAmBF,CAAC"}
@@ -4,6 +4,7 @@ exports.decompress = void 0;
4
4
  const huffman_1 = require("@4bitlabs/codecs/huffman");
5
5
  const lzw_1 = require("@4bitlabs/codecs/lzw");
6
6
  const comp3_1 = require("@4bitlabs/codecs/comp3");
7
+ const exhaustive_1 = require("../utils/exhaustive");
7
8
  const sci0Supported = (it) => typeof it === 'number' && Number.isInteger(it) && [0, 1, 2].includes(it);
8
9
  const sci01Supported = (it) => typeof it === 'number' && Number.isInteger(it) && [0, 1, 2].includes(it);
9
10
  const SCI0 = {
@@ -20,16 +21,16 @@ const decompress = (mode, method, bytes) => {
20
21
  switch (mode) {
21
22
  case 'sci0': {
22
23
  if (!sci0Supported(method))
23
- throw new Error(`unsupported compression algorithm: ${method}`);
24
+ throw new Error(`unsupported compression algorithm: ${method.toString(10)}`);
24
25
  return SCI0[method](bytes);
25
26
  }
26
27
  case 'sci01': {
27
28
  if (!sci01Supported(method))
28
- throw new Error(`unsupported compression algorithm: ${method}`);
29
+ throw new Error(`unsupported compression algorithm: ${method.toString(10)}`);
29
30
  return SCI01[method](bytes);
30
31
  }
31
32
  default:
32
- throw new Error(`unsupported compression mode: ${mode}`);
33
+ (0, exhaustive_1.exhaustive)('unsupported compression mode', mode);
33
34
  }
34
35
  };
35
36
  exports.decompress = decompress;
@@ -1 +1 @@
1
- {"version":3,"file":"compression.js","sourceRoot":"","sources":["../../src/parsers/compression.ts"],"names":[],"mappings":";;;AAAA,sDAAmE;AACnE,8CAA2D;AAC3D,kDAA+D;AAM/D,MAAM,aAAa,GAAG,CAAC,EAAW,EAAwB,EAAE,CAC1D,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,cAAc,GAAG,CAAC,EAAW,EAAyB,EAAE,CAC5D,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,IAAI,GAAyC;IACjD,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACnB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,YAAS,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAa,EAAC,KAAK,CAAC;CACnC,CAAC;AAEF,MAAM,KAAK,GAA0C;IACnD,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACnB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAa,EAAC,KAAK,CAAC;IAClC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,cAAW,EAAC,KAAK,CAAC;CACjC,CAAC;AAEK,MAAM,UAAU,GAAG,CACxB,IAAsB,EACtB,MAAc,EACd,KAAiB,EACL,EAAE;IACd,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC;AAnBW,QAAA,UAAU,cAmBrB"}
1
+ {"version":3,"file":"compression.js","sourceRoot":"","sources":["../../src/parsers/compression.ts"],"names":[],"mappings":";;;AAAA,sDAAmE;AACnE,8CAA2D;AAC3D,kDAA+D;AAE/D,oDAAiD;AAMjD,MAAM,aAAa,GAAG,CAAC,EAAW,EAAwB,EAAE,CAC1D,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,cAAc,GAAG,CAAC,EAAW,EAAyB,EAAE,CAC5D,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,IAAI,GAAyC;IACjD,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACnB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,YAAS,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAa,EAAC,KAAK,CAAC;CACnC,CAAC;AAEF,MAAM,KAAK,GAA0C;IACnD,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACnB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAa,EAAC,KAAK,CAAC;IAClC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,cAAW,EAAC,KAAK,CAAC;CACjC,CAAC;AAEK,MAAM,UAAU,GAAG,CACxB,IAAsB,EACtB,MAAc,EACd,KAAiB,EACL,EAAE;IACd,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,sCAAsC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAC5D,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,sCAAsC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAC5D,CAAC;YACJ,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD;YACE,IAAA,uBAAU,EAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC;AAvBW,QAAA,UAAU,cAuBrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/parsers/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAuBrD,eAAO,MAAM,OAAO,UACX,UAAU,gBACH,WAAW,KAAK,IAAI,KACjC,IAAI,GAAG,UAUT,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,UAAU,KAAG,CAAC,WAAW,EAAE,EAAE,OAAO,CAInE,CAAC"}
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/parsers/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAuBrD,eAAO,MAAM,OAAO,UACX,UAAU,YACP,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,KACjC,IAAI,GAAG,UAUT,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,UAAU,KAAG,CAAC,WAAW,EAAE,EAAE,OAAO,CAInE,CAAC"}
@@ -2,8 +2,12 @@ import { BitReader } from '@4bitlabs/readers';
2
2
  import { OpCode } from './op-codes';
3
3
  import { PicState } from './pic-state';
4
4
  import { DrawCommand } from '../../models/draw-command';
5
- export declare const IS_DONE: unique symbol;
6
- type CodeHandler = (br: BitReader, state: PicState) => DrawCommand[] | typeof IS_DONE | void;
7
- export declare const CodeHandlers: Record<OpCode, CodeHandler>;
5
+ export interface CodeHandlerContext {
6
+ r: BitReader;
7
+ state: PicState;
8
+ push(...cmds: DrawCommand[]): void;
9
+ }
10
+ type CodeHandler = (ctx: CodeHandlerContext) => void;
11
+ export declare const CodeHandlers: Record<Exclude<OpCode, OpCode.Done>, CodeHandler>;
8
12
  export {};
9
13
  //# sourceMappingURL=handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/parsers/pic/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAoC,MAAM,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAY,MAAM,2BAA2B,CAAC;AAKlE,eAAO,MAAM,OAAO,eAAiB,CAAC;AAEtC,KAAK,WAAW,GAAG,CACjB,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,QAAQ,KACZ,WAAW,EAAE,GAAG,OAAO,OAAO,GAAG,IAAI,CAAC;AAE3C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAsJpD,CAAC"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/parsers/pic/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAoC,MAAM,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAY,MAAM,2BAA2B,CAAC;AAKlE,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,SAAS,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;CACpC;AAED,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,CAmJ1E,CAAC"}
@@ -1,87 +1,87 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CodeHandlers = exports.IS_DONE = void 0;
3
+ exports.CodeHandlers = void 0;
4
4
  const op_codes_1 = require("./op-codes");
5
5
  const points_1 = require("./points");
6
6
  const draw_command_1 = require("../../models/draw-command");
7
7
  const vec2_1 = require("../../models/vec2");
8
8
  const repeat_1 = require("../../utils/repeat");
9
9
  const cel_1 = require("../cel");
10
- exports.IS_DONE = Symbol('done');
11
10
  exports.CodeHandlers = {
12
- [op_codes_1.OpCode.SetVisual](br, state) {
11
+ [op_codes_1.OpCode.SetVisual]({ r, state }) {
13
12
  const [, priorityCode, controlCode] = state.drawCodes;
14
- const visualCode = br.read32(8);
13
+ const visualCode = r.read32(8);
15
14
  state.drawCodes = [visualCode, priorityCode, controlCode];
16
15
  state.drawMode |= draw_command_1.DrawMode.Visual;
17
16
  },
18
- [op_codes_1.OpCode.ClearVisual](br, state) {
17
+ [op_codes_1.OpCode.ClearVisual]({ state }) {
19
18
  state.drawMode &= ~draw_command_1.DrawMode.Visual;
20
19
  },
21
- [op_codes_1.OpCode.SetPriority](br, state) {
20
+ [op_codes_1.OpCode.SetPriority]({ r: br, state }) {
22
21
  const [visualCode, , controlCode] = state.drawCodes;
23
22
  const priorityCode = br.read32(8);
24
23
  state.drawCodes = [visualCode, priorityCode, controlCode];
25
24
  state.drawMode |= draw_command_1.DrawMode.Priority;
26
25
  },
27
- [op_codes_1.OpCode.ClearPriority](br, state) {
26
+ [op_codes_1.OpCode.ClearPriority]({ state }) {
28
27
  state.drawMode &= ~draw_command_1.DrawMode.Priority;
29
28
  },
30
- [op_codes_1.OpCode.SetControl](br, state) {
29
+ [op_codes_1.OpCode.SetControl]({ r, state }) {
31
30
  const [visualCode, priorityCode] = state.drawCodes;
32
- const controlCode = br.read32(8);
31
+ const controlCode = r.read32(8);
33
32
  state.drawCodes = [visualCode, priorityCode, controlCode];
34
33
  state.drawMode |= draw_command_1.DrawMode.Control;
35
34
  },
36
- [op_codes_1.OpCode.ClearControl](br, state) {
35
+ [op_codes_1.OpCode.ClearControl]({ state }) {
37
36
  state.drawMode &= ~draw_command_1.DrawMode.Control;
38
37
  },
39
- [op_codes_1.OpCode.ShortLines](br, { drawMode, drawCodes }) {
38
+ // Lines
39
+ [op_codes_1.OpCode.ShortLines]({ r, state, push }) {
40
40
  const points = [];
41
- const prev = (0, points_1.getPoint24)(br, vec2_1.vec2.create());
41
+ const prev = (0, points_1.getPoint24)(r, vec2_1.vec2.create());
42
42
  points.push(vec2_1.vec2.clone(prev));
43
- while (br.peek32(8) < 0xf0) {
44
- const next = (0, points_1.getPoint8)(br, vec2_1.vec2.create(), prev);
43
+ while (r.peek32(8) < 0xf0) {
44
+ const next = (0, points_1.getPoint8)(r, vec2_1.vec2.create(), prev);
45
45
  points.push(next);
46
46
  vec2_1.vec2.copy(prev, next);
47
47
  }
48
- return [['PLINE', drawMode, drawCodes, ...points]];
48
+ push(['PLINE', state.drawMode, state.drawCodes, ...points]);
49
49
  },
50
- [op_codes_1.OpCode.MediumLines](br, { drawMode, drawCodes }) {
50
+ [op_codes_1.OpCode.MediumLines]({ r, state, push }) {
51
51
  const points = [];
52
- const prev = (0, points_1.getPoint24)(br, vec2_1.vec2.create());
52
+ const prev = (0, points_1.getPoint24)(r, vec2_1.vec2.create());
53
53
  points.push(vec2_1.vec2.clone(prev));
54
- while (br.peek32(8) < 0xf0) {
55
- const next = (0, points_1.getPoint16)(br, vec2_1.vec2.create(), prev);
54
+ while (r.peek32(8) < 0xf0) {
55
+ const next = (0, points_1.getPoint16)(r, vec2_1.vec2.create(), prev);
56
56
  points.push(next);
57
57
  vec2_1.vec2.copy(prev, next);
58
58
  }
59
- return [['PLINE', drawMode, drawCodes, ...points]];
59
+ push(['PLINE', state.drawMode, state.drawCodes, ...points]);
60
60
  },
61
- [op_codes_1.OpCode.LongLines](br, { drawMode, drawCodes }) {
61
+ [op_codes_1.OpCode.LongLines]({ r, state, push }) {
62
62
  const points = [];
63
- points.push((0, points_1.getPoint24)(br, vec2_1.vec2.create()));
64
- while (br.peek32(8) < 0xf0) {
65
- points.push((0, points_1.getPoint24)(br, vec2_1.vec2.create()));
63
+ points.push((0, points_1.getPoint24)(r, vec2_1.vec2.create()));
64
+ while (r.peek32(8) < 0xf0) {
65
+ points.push((0, points_1.getPoint24)(r, vec2_1.vec2.create()));
66
66
  }
67
- return [['PLINE', drawMode, drawCodes, ...points]];
67
+ push(['PLINE', state.drawMode, state.drawCodes, ...points]);
68
68
  },
69
69
  // Patterns
70
- [op_codes_1.OpCode.SetPattern](br, state) {
71
- const code = br.read32(8);
70
+ [op_codes_1.OpCode.SetPattern]({ r, state }) {
71
+ const code = r.read32(8);
72
72
  state.patternCode = [
73
73
  code & 0b00111,
74
74
  (code & 0b010000) !== 0,
75
75
  (code & 0b100000) !== 0,
76
76
  ];
77
77
  },
78
- [op_codes_1.OpCode.ShortBrushes](br, { drawMode, drawCodes, patternCode }) {
79
- const cmds = [];
78
+ [op_codes_1.OpCode.ShortBrushes]({ r, state, push }) {
80
79
  const prev = vec2_1.vec2.create();
80
+ const { drawMode, drawCodes, patternCode } = state;
81
81
  const [, , isTextured] = patternCode;
82
- let texture = isTextured ? br.read32(8) >> 1 : 0;
83
- (0, points_1.getPoint24)(br, prev);
84
- cmds.push([
82
+ let texture = isTextured ? r.read32(8) >> 1 : 0;
83
+ (0, points_1.getPoint24)(r, prev);
84
+ push([
85
85
  'BRUSH',
86
86
  drawMode,
87
87
  drawCodes,
@@ -89,21 +89,20 @@ exports.CodeHandlers = {
89
89
  texture,
90
90
  vec2_1.vec2.clone(prev),
91
91
  ]);
92
- while (br.peek32(8) < 0xf0) {
93
- texture = isTextured ? br.read32(8) >> 1 : 0;
94
- const next = (0, points_1.getPoint8)(br, vec2_1.vec2.create(), prev);
95
- cmds.push(['BRUSH', drawMode, drawCodes, patternCode, texture, next]);
92
+ while (r.peek32(8) < 0xf0) {
93
+ texture = isTextured ? r.read32(8) >> 1 : 0;
94
+ const next = (0, points_1.getPoint8)(r, vec2_1.vec2.create(), prev);
95
+ push(['BRUSH', drawMode, drawCodes, patternCode, texture, next]);
96
96
  vec2_1.vec2.copy(prev, next);
97
97
  }
98
- return cmds;
99
98
  },
100
- [op_codes_1.OpCode.MediumBrushes](br, { drawMode, drawCodes, patternCode }) {
101
- const cmds = [];
99
+ [op_codes_1.OpCode.MediumBrushes]({ r, state, push }) {
102
100
  const prev = vec2_1.vec2.create();
101
+ const { drawMode, drawCodes, patternCode } = state;
103
102
  const [, , isTextured] = patternCode;
104
- let texture = isTextured ? br.read32(8) >> 1 : 0;
105
- (0, points_1.getPoint24)(br, prev);
106
- cmds.push([
103
+ let texture = isTextured ? r.read32(8) >> 1 : 0;
104
+ (0, points_1.getPoint24)(r, prev);
105
+ push([
107
106
  'BRUSH',
108
107
  drawMode,
109
108
  drawCodes,
@@ -111,98 +110,96 @@ exports.CodeHandlers = {
111
110
  texture,
112
111
  vec2_1.vec2.clone(prev),
113
112
  ]);
114
- while (br.peek32(8) < 0xf0) {
115
- texture = isTextured ? br.read32(8) >> 1 : 0;
116
- const next = (0, points_1.getPoint16)(br, vec2_1.vec2.create(), prev);
117
- cmds.push(['BRUSH', drawMode, drawCodes, patternCode, texture, next]);
113
+ while (r.peek32(8) < 0xf0) {
114
+ texture = isTextured ? r.read32(8) >> 1 : 0;
115
+ const next = (0, points_1.getPoint16)(r, vec2_1.vec2.create(), prev);
116
+ push(['BRUSH', drawMode, drawCodes, patternCode, texture, next]);
118
117
  vec2_1.vec2.copy(prev, next);
119
118
  }
120
- return cmds;
121
119
  },
122
- [op_codes_1.OpCode.LongBrushes](br, { drawMode, drawCodes, patternCode }) {
123
- const cmds = [];
120
+ [op_codes_1.OpCode.LongBrushes]({ r, state, push }) {
121
+ const { drawMode, drawCodes, patternCode } = state;
124
122
  const [, , isTextured] = patternCode;
125
- while (br.peek32(8) < 0xf0) {
126
- const texture = isTextured ? br.read32(8) >> 1 : 0;
127
- const pos = (0, points_1.getPoint24)(br, vec2_1.vec2.create());
128
- cmds.push(['BRUSH', drawMode, drawCodes, patternCode, texture, pos]);
123
+ while (r.peek32(8) < 0xf0) {
124
+ const texture = isTextured ? r.read32(8) >> 1 : 0;
125
+ const pos = (0, points_1.getPoint24)(r, vec2_1.vec2.create());
126
+ push(['BRUSH', drawMode, drawCodes, patternCode, texture, pos]);
129
127
  }
130
- return cmds;
131
128
  },
132
129
  // Fills
133
- [op_codes_1.OpCode.Fills](br, { drawMode, drawCodes }) {
134
- const fills = [];
130
+ [op_codes_1.OpCode.Fills]({ r, state, push }) {
131
+ const { drawMode, drawCodes } = state;
135
132
  const p1 = vec2_1.vec2.create();
136
133
  while (true) {
137
- const peek = br.peek32(8);
134
+ const peek = r.peek32(8);
138
135
  if (peek >= 0xf0)
139
136
  break;
140
- (0, points_1.getPoint24)(br, p1);
141
- fills.push(['FILL', drawMode, drawCodes, vec2_1.vec2.clone(p1)]);
137
+ (0, points_1.getPoint24)(r, p1);
138
+ push(['FILL', drawMode, drawCodes, vec2_1.vec2.clone(p1)]);
142
139
  }
143
- return fills;
144
140
  },
145
- [op_codes_1.OpCode.XOp](br, state) {
146
- const opx = br.read32(8);
141
+ [op_codes_1.OpCode.XOp](ctx) {
142
+ const opx = ctx.r.read32(8);
147
143
  if (!(0, op_codes_1.isExtendedOpCode)(opx))
148
144
  throw new Error(`Unrecognized xopcode: 0x${opx.toString(16)}`);
149
- return ExtendedHandlers[opx](br, state);
145
+ ExtendedHandlers[opx](ctx);
150
146
  },
151
- [op_codes_1.OpCode.Done]: () => exports.IS_DONE,
152
147
  };
153
148
  const ExtendedHandlers = {
154
- [op_codes_1.ExtendedOpCode.UpdatePalette](br) {
149
+ [op_codes_1.ExtendedOpCode.UpdatePalette]({ r, push }) {
155
150
  const entries = [];
156
- while (br.peek32(8) < 0xf0) {
157
- const entry = br.read32(8);
151
+ while (r.peek32(8) < 0xf0) {
152
+ const entry = r.read32(8);
158
153
  const pal = (entry / 40) >>> 0;
159
154
  const idx = entry % 40;
160
- const code = br.read32(8);
155
+ const code = r.read32(8);
161
156
  entries.push([pal, idx, code]);
162
157
  }
163
- return [['UPDATE_PALETTE', entries]];
164
- },
165
- [op_codes_1.ExtendedOpCode.SetPalette](br) {
166
- const pal = br.read32(8);
167
- const colors = new Uint8Array(40);
168
- (0, repeat_1.repeat)(40, (i) => (colors[i] = br.read32(8)));
169
- return [['SET_PALETTE', pal, colors]];
170
- },
171
- [op_codes_1.ExtendedOpCode.x02](br) {
172
- // Looks like a palette, but i'm not sure what this chunk is for
173
- br.skip(8);
174
- br.skip(8 * 40);
158
+ push(['UPDATE_PALETTE', entries]);
159
+ },
160
+ [op_codes_1.ExtendedOpCode.SetPalette]({ r, push }) {
161
+ const pal = r.read32(8);
162
+ const colors = Array(40).fill(0);
163
+ (0, repeat_1.repeat)(40, (i) => (colors[i] = r.read32(8)));
164
+ push(['SET_PALETTE', pal, colors]);
165
+ },
166
+ [op_codes_1.ExtendedOpCode.x02]({ r }) {
167
+ // Looks like a palette, but I'm not sure what this chunk is for
168
+ r.skip(8);
169
+ r.skip(8 * 40);
175
170
  // in Colonels Bequest Demo, PIC.991 this opcode appears to have a 141 byte payload.
176
- // Looks like another palette, but i'm not sure what this chunk is for
171
+ // Looks like another palette, but I'm not sure what this chunk is for
177
172
  // br.skip(141 * 8);
178
173
  },
179
- [op_codes_1.ExtendedOpCode.x03](br) {
174
+ [op_codes_1.ExtendedOpCode.x03]({ r }) {
180
175
  // Not sure what byte this is for
181
- br.skip(8);
176
+ r.skip(8);
182
177
  },
183
178
  [op_codes_1.ExtendedOpCode.x04]() {
184
179
  // Not sure what this code means
185
180
  // NOOP
186
181
  },
187
- [op_codes_1.ExtendedOpCode.x05](br) {
182
+ [op_codes_1.ExtendedOpCode.x05]({ r }) {
188
183
  // Not sure what byte this is for
189
- br.skip(8);
184
+ r.skip(8);
190
185
  },
191
186
  [op_codes_1.ExtendedOpCode.x06]() {
192
187
  // Not sure what this code means
193
188
  // NOOP
194
189
  },
195
- [op_codes_1.ExtendedOpCode.x07](br, state) {
196
- const pos = (0, points_1.getPoint24)(br, vec2_1.vec2.create());
197
- const size = br.read32(8) | (br.read32(8) << 8);
190
+ [op_codes_1.ExtendedOpCode.x07]({ r, state, push }) {
191
+ const pos = (0, points_1.getPoint24)(r, vec2_1.vec2.create());
192
+ const size = r.read32(8) | (r.read32(8) << 8);
198
193
  const buffer = new ArrayBuffer(size);
199
194
  const view = new DataView(buffer);
200
- (0, repeat_1.repeat)(size, (i) => view.setUint8(i, br.read32(8)));
195
+ (0, repeat_1.repeat)(size, (i) => {
196
+ view.setUint8(i, r.read32(8));
197
+ });
201
198
  const cel = (0, cel_1.parseCel)(view);
202
- return [['CEL', state.drawMode, pos, cel]];
199
+ push(['CEL', state.drawMode, pos, cel]);
203
200
  },
204
- [op_codes_1.ExtendedOpCode.x08](br) {
205
- (0, repeat_1.repeat)(14, () => br.read32(8));
201
+ [op_codes_1.ExtendedOpCode.x08]({ r }) {
202
+ (0, repeat_1.repeat)(14, () => r.read32(8));
206
203
  },
207
204
  };
208
205
  //# sourceMappingURL=handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/parsers/pic/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/parsers/pic/handlers.ts"],"names":[],"mappings":";;;AACA,yCAAsE;AAEtE,qCAA6D;AAC7D,4DAAkE;AAClE,4CAA+C;AAC/C,+CAA4C;AAC5C,gCAAkC;AAUrB,QAAA,YAAY,GAAsD;IAC7E,CAAC,iBAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;QAC7B,MAAM,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;QACtD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,KAAK,CAAC,SAAS,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1D,KAAK,CAAC,QAAQ,IAAI,uBAAQ,CAAC,MAAM,CAAC;IACpC,CAAC;IACD,CAAC,iBAAM,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE;QAC5B,KAAK,CAAC,QAAQ,IAAI,CAAC,uBAAQ,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,CAAC,iBAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE;QACnC,MAAM,CAAC,UAAU,EAAE,AAAD,EAAG,WAAW,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;QACpD,MAAM,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,CAAC,SAAS,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1D,KAAK,CAAC,QAAQ,IAAI,uBAAQ,CAAC,QAAQ,CAAC;IACtC,CAAC;IACD,CAAC,iBAAM,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE;QAC9B,KAAK,CAAC,QAAQ,IAAI,CAAC,uBAAQ,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,CAAC,iBAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;QAC9B,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;QACnD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,CAAC,SAAS,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1D,KAAK,CAAC,QAAQ,IAAI,uBAAQ,CAAC,OAAO,CAAC;IACrC,CAAC;IACD,CAAC,iBAAM,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE;QAC7B,KAAK,CAAC,QAAQ,IAAI,CAAC,uBAAQ,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,QAAQ;IACR,CAAC,iBAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QACpC,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,CAAC,EAAE,WAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,WAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAA,kBAAS,EAAC,CAAC,EAAE,WAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,WAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,CAAC,iBAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QACrC,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,CAAC,EAAE,WAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,WAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,CAAC,EAAE,WAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,WAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,CAAC,iBAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QACnC,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAA,mBAAU,EAAC,CAAC,EAAE,WAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,IAAA,mBAAU,EAAC,CAAC,EAAE,WAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,WAAW;IACX,CAAC,iBAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;QAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,KAAK,CAAC,WAAW,GAAG;YAClB,IAAI,GAAG,OAAO;YACd,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;YACvB,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;SACxB,CAAC;IACJ,CAAC;IACD,CAAC,iBAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QACnD,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,CAAC,GAAG,WAAW,CAAC;QAErC,IAAI,OAAO,GAAW,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,IAAA,mBAAU,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC;YACH,OAAO;YACP,QAAQ;YACR,SAAS;YACT,WAAW;YACX,OAAO;YACP,WAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACjB,CAAC,CAAC;QAEH,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAA,kBAAS,EAAC,CAAC,EAAE,WAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACjE,WAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,CAAC,iBAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QACvC,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QACnD,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,CAAC,GAAG,WAAW,CAAC;QAErC,IAAI,OAAO,GAAW,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,IAAA,mBAAU,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC;YACH,OAAO;YACP,QAAQ;YACR,SAAS;YACT,WAAW;YACX,OAAO;YACP,WAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACjB,CAAC,CAAC;QAEH,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,CAAC,EAAE,WAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACjE,WAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,CAAC,iBAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QACrC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QACnD,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,CAAC,GAAG,WAAW,CAAC;QAErC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,CAAC,EAAE,WAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,QAAQ;IACR,CAAC,iBAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QAC/B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QACtC,MAAM,EAAE,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,IAAI,IAAI;gBAAE,MAAM;YACxB,IAAA,mBAAU,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClB,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,CAAC,iBAAM,CAAC,GAAG,CAAC,CAAC,GAAG;QACd,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAA,2BAAgB,EAAC,GAAG,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAwC;IAC5D,CAAC,yBAAc,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;QACxC,MAAM,OAAO,GAA+B,EAAE,CAAC;QAC/C,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC;YAEvB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,CAAC,yBAAc,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;QACrC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,MAAM,GAAa,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,CAAC,yBAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;QACxB,gEAAgE;QAChE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAEf,oFAAoF;QACpF,sEAAsE;QACtE,oBAAoB;IACtB,CAAC;IACD,CAAC,yBAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;QACxB,iCAAiC;QACjC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,CAAC,yBAAc,CAAC,GAAG,CAAC;QAClB,gCAAgC;QAChC,OAAO;IACT,CAAC;IACD,CAAC,yBAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;QACxB,iCAAiC;QACjC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,CAAC,yBAAc,CAAC,GAAG,CAAC;QAClB,gCAAgC;QAChC,OAAO;IACT,CAAC;IACD,CAAC,yBAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QACrC,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,CAAC,EAAE,WAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClC,IAAA,eAAM,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,cAAQ,EAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,CAAC,yBAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;QACxB,IAAA,eAAM,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parsers/pic/parser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,eAAO,MAAM,SAAS,SAAU,UAAU,KAAG,WAAW,EAqBvD,CAAC"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parsers/pic/parser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,eAAO,MAAM,SAAS,SAAU,UAAU,KAAG,WAAW,EAyBvD,CAAC"}
@@ -7,20 +7,23 @@ const op_codes_1 = require("./op-codes");
7
7
  const pic_state_1 = require("./pic-state");
8
8
  const parseFrom = (data) => {
9
9
  const commands = [];
10
- const br = (0, readers_1.createBitReader)(data, { mode: 'msb' });
11
- const state = (0, pic_state_1.createPicState)();
10
+ const ctx = {
11
+ r: (0, readers_1.createBitReader)(data, { mode: 'msb' }),
12
+ state: (0, pic_state_1.createPicState)(),
13
+ push(...next) {
14
+ commands.push(...next);
15
+ },
16
+ };
12
17
  while (true) {
13
- const op = br.read32(8);
18
+ const op = ctx.r.read32(8);
14
19
  if (!(0, op_codes_1.isOpCode)(op))
15
20
  throw new Error(`Unrecognized opcode: 0x${op.toString(16)}`);
21
+ if (op === op_codes_1.OpCode.Done)
22
+ break;
16
23
  const handler = handlers_1.CodeHandlers[op];
17
24
  if (!handler)
18
25
  throw new Error(`Unhandled opcode: 0x${op.toString(16)}`);
19
- const next = handler(br, state);
20
- if (next === handlers_1.IS_DONE)
21
- break;
22
- if (next)
23
- commands.push(...next);
26
+ handler(ctx);
24
27
  }
25
28
  return commands;
26
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/parsers/pic/parser.ts"],"names":[],"mappings":";;;AAAA,+CAAoD;AACpD,yCAAmD;AACnD,yCAAsC;AACtC,2CAA6C;AAGtC,MAAM,SAAS,GAAG,CAAC,IAAgB,EAAiB,EAAE;IAC3D,MAAM,QAAQ,GAAkB,EAAE,CAAC;IAEnC,MAAM,EAAE,GAAG,IAAA,yBAAe,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAA,0BAAc,GAAE,CAAC;IAE/B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAExB,IAAI,CAAC,IAAA,mBAAQ,EAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,uBAAY,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAExE,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,IAAI,KAAK,kBAAO;YAAE,MAAM;QAC5B,IAAI,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AArBW,QAAA,SAAS,aAqBpB"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/parsers/pic/parser.ts"],"names":[],"mappings":";;;AAAA,+CAAoD;AACpD,yCAA8D;AAC9D,yCAA8C;AAC9C,2CAA6C;AAGtC,MAAM,SAAS,GAAG,CAAC,IAAgB,EAAiB,EAAE;IAC3D,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,GAAG,GAAuB;QAC9B,CAAC,EAAE,IAAA,yBAAe,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACzC,KAAK,EAAE,IAAA,0BAAc,GAAE;QACvB,IAAI,CAAC,GAAG,IAAmB;YACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;KACF,CAAC;IAEF,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,CAAC,IAAA,mBAAQ,EAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAE/D,IAAI,EAAE,KAAK,iBAAM,CAAC,IAAI;YAAE,MAAM;QAE9B,MAAM,OAAO,GAAG,uBAAY,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAExE,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAzBW,QAAA,SAAS,aAyBpB"}
@@ -1,6 +1,6 @@
1
1
  import { BitReader } from '@4bitlabs/readers';
2
- import { Vec2, StaticVec2 } from '../../models/vec2';
2
+ import { Vec2 } from '../../models/vec2';
3
3
  export declare function getPoint24(br: BitReader, out: Vec2): Vec2;
4
- export declare function getPoint16(br: BitReader, out: Vec2, ref: StaticVec2): Vec2;
5
- export declare function getPoint8(br: BitReader, out: Vec2, ref: StaticVec2): Vec2;
4
+ export declare function getPoint16(br: BitReader, out: Vec2, ref: Readonly<Vec2>): Vec2;
5
+ export declare function getPoint8(br: BitReader, out: Vec2, ref: Readonly<Vec2>): Vec2;
6
6
  //# sourceMappingURL=points.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"points.d.ts","sourceRoot":"","sources":["../../../src/parsers/pic/points.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAQ,MAAM,mBAAmB,CAAC;AAW3D,wBAAgB,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,CAKzD;AASD,wBAAgB,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAS1E;AASD,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAazE"}
1
+ {"version":3,"file":"points.d.ts","sourceRoot":"","sources":["../../../src/parsers/pic/points.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAQ,MAAM,mBAAmB,CAAC;AAW/C,wBAAgB,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,CAKzD;AASD,wBAAgB,UAAU,CACxB,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAClB,IAAI,CASN;AASD,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAa7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"points.js","sourceRoot":"","sources":["../../../src/parsers/pic/points.ts"],"names":[],"mappings":";;;AACA,4CAA2D;AAE3D,sDAAsD;AACtD,0CAA0C;AAC1C,EAAE;AACF,UAAU;AACV,oCAAoC;AACpC,oCAAoC;AACpC,iCAAiC;AACjC,iCAAiC;AACjC,EAAE;AACF,SAAgB,UAAU,CAAC,EAAa,EAAE,GAAS;IACjD,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,OAAO,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AALD,gCAKC;AAED,8DAA8D;AAC9D,0CAA0C;AAC1C,EAAE;AACF,SAAS;AACT,iBAAiB;AACjB,iBAAiB;AACjB,EAAE;AACF,SAAgB,UAAU,CAAC,EAAa,EAAE,GAAS,EAAE,GAAe;IAClE,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,CAAC,GAAG,GAAW,CAAC;IAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAElD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,GAAG,GAAW,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,OAAO,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AATD,gCASC;AAED,6DAA6D;AAC7D,yCAAyC;AACzC,EAAE;AACF,SAAS;AACT,iBAAiB;AACjB,iBAAiB;AACjB,EAAE;AACF,SAAgB,SAAS,CAAC,EAAa,EAAE,GAAS,EAAE,GAAe;IACjE,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE1B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAEhC,OAAO,WAAI,CAAC,GAAG,CACb,GAAG,EACH,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5B,CAAC;AACJ,CAAC;AAbD,8BAaC"}
1
+ {"version":3,"file":"points.js","sourceRoot":"","sources":["../../../src/parsers/pic/points.ts"],"names":[],"mappings":";;;AACA,4CAA+C;AAE/C,sDAAsD;AACtD,0CAA0C;AAC1C,EAAE;AACF,UAAU;AACV,oCAAoC;AACpC,oCAAoC;AACpC,iCAAiC;AACjC,iCAAiC;AACjC,EAAE;AACF,SAAgB,UAAU,CAAC,EAAa,EAAE,GAAS;IACjD,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,OAAO,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AALD,gCAKC;AAED,8DAA8D;AAC9D,0CAA0C;AAC1C,EAAE;AACF,SAAS;AACT,iBAAiB;AACjB,iBAAiB;AACjB,EAAE;AACF,SAAgB,UAAU,CACxB,EAAa,EACb,GAAS,EACT,GAAmB;IAEnB,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,CAAC,GAAG,GAAW,CAAC;IAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAElD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,GAAG,GAAW,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,OAAO,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AAbD,gCAaC;AAED,6DAA6D;AAC7D,yCAAyC;AACzC,EAAE;AACF,SAAS;AACT,iBAAiB;AACjB,iBAAiB;AACjB,EAAE;AACF,SAAgB,SAAS,CAAC,EAAa,EAAE,GAAS,EAAE,GAAmB;IACrE,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE1B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAEhC,OAAO,WAAI,CAAC,GAAG,CACb,GAAG,EACH,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5B,CAAC;AACJ,CAAC;AAbD,8BAaC"}
@@ -2,6 +2,8 @@ import { DrawCommand } from '../models/draw-command';
2
2
  import { RenderResult } from './render-result';
3
3
  interface RenderOptions {
4
4
  forcePal?: 0 | 1 | 2 | 3 | undefined;
5
+ width?: number;
6
+ height?: number;
5
7
  }
6
8
  export declare const renderPic: (commands: DrawCommand[], options?: RenderOptions) => RenderResult;
7
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"render-pic.d.ts","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAY,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CACtC;AAED,eAAO,MAAM,SAAS,aACV,WAAW,EAAE,YACd,aAAa,KACrB,YAyEF,CAAC"}
1
+ {"version":3,"file":"render-pic.d.ts","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,SAAS,aACV,WAAW,EAAE,YACd,aAAa,KACrB,YAkEF,CAAC"}
@@ -3,16 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renderPic = void 0;
4
4
  const screen_buffer_1 = require("./screen-buffer");
5
5
  const default_palette_1 = require("./default-palette");
6
- const draw_command_1 = require("../models/draw-command");
6
+ const exhaustive_1 = require("../utils/exhaustive");
7
7
  const renderPic = (commands, options = {}) => {
8
- const { forcePal } = options;
8
+ const { forcePal, width = 320, height = 190 } = options;
9
9
  const palettes = [
10
10
  Uint8Array.from(default_palette_1.DEFAULT_PALETTE),
11
11
  Uint8Array.from(default_palette_1.DEFAULT_PALETTE),
12
12
  Uint8Array.from(default_palette_1.DEFAULT_PALETTE),
13
13
  Uint8Array.from(default_palette_1.DEFAULT_PALETTE),
14
14
  ];
15
- const [result, screen] = (0, screen_buffer_1.createScreenBuffer)(forcePal, palettes);
15
+ const [result, screen] = (0, screen_buffer_1.createScreenBuffer)(forcePal, palettes, [
16
+ width,
17
+ height,
18
+ ]);
16
19
  for (const cmd of commands) {
17
20
  const [mode] = cmd;
18
21
  switch (mode) {
@@ -46,23 +49,12 @@ const renderPic = (commands, options = {}) => {
46
49
  break;
47
50
  }
48
51
  case 'CEL': {
49
- const [, drawMode, pos, cel] = cmd;
50
- if ((drawMode & draw_command_1.DrawMode.Visual) !== draw_command_1.DrawMode.Visual)
51
- continue;
52
- const data = cel.pixels;
53
- for (let y = pos[1]; y < pos[1] + cel.height; y++)
54
- for (let x = pos[0]; x < pos[0] + cel.width; x++) {
55
- if (x >= 320 || y >= 190)
56
- continue;
57
- const color = data[x + y * cel.width];
58
- if (color === cel.keyColor)
59
- continue;
60
- screen.setPixel(x, y, color);
61
- }
52
+ const [, drawMode, [x, y], cel] = cmd;
53
+ screen.blit(x, y, drawMode, cel);
62
54
  break;
63
55
  }
64
56
  default:
65
- console.log(`unhandled opcode: ${mode}`);
57
+ (0, exhaustive_1.exhaustive)('unhandled opcode', mode);
66
58
  }
67
59
  }
68
60
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"render-pic.js","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-pic.js","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { type Screen } from './screen';
2
2
  import { type RenderResult } from './render-result';
3
- export declare const createScreenBuffer: (forcePal: 0 | 1 | 2 | 3 | undefined, palettes: [Uint8Array, Uint8Array, Uint8Array, Uint8Array]) => [RenderResult, Screen];
3
+ export declare const createScreenBuffer: (forcePal: 0 | 1 | 2 | 3 | undefined, palettes: [Uint8Array, Uint8Array, Uint8Array, Uint8Array], [width, height]: [number, number]) => [RenderResult, Screen];
4
4
  //# sourceMappingURL=screen-buffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"screen-buffer.d.ts","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD,eAAO,MAAM,kBAAkB,aACnB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,YACzB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,KACzD,CAAC,YAAY,EAAE,MAAM,CAmEvB,CAAC"}
1
+ {"version":3,"file":"screen-buffer.d.ts","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAM7E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQpD,eAAO,MAAM,kBAAkB,aACnB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,YACzB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,mBACzC,CAAC,MAAM,EAAE,MAAM,CAAC,KAChC,CAAC,YAAY,EAAE,MAAM,CAmEvB,CAAC"}
@@ -4,40 +4,39 @@ exports.createScreenBuffer = void 0;
4
4
  const image_1 = require("@4bitlabs/image");
5
5
  const draw_command_1 = require("../models/draw-command");
6
6
  const tools_1 = require("./tools");
7
- const bufferWidth = 320;
8
- const bufferHeight = 190;
9
- const createScreenBuffer = (forcePal, palettes) => {
10
- const visible = (0, image_1.createIndexedPixelData)(bufferWidth, bufferHeight);
11
- const priority = (0, image_1.createIndexedPixelData)(bufferWidth, bufferHeight);
12
- const control = (0, image_1.createIndexedPixelData)(bufferWidth, bufferHeight);
13
- const alpha = (0, image_1.createIndexedPixelData)(bufferWidth, bufferHeight);
7
+ const createScreenBuffer = (forcePal, palettes, [width, height]) => {
8
+ const visible = (0, image_1.createIndexedPixelData)(width, height);
9
+ const priority = (0, image_1.createIndexedPixelData)(width, height);
10
+ const control = (0, image_1.createIndexedPixelData)(width, height);
11
+ const alpha = (0, image_1.createIndexedPixelData)(width, height);
14
12
  visible.pixels.fill(0xff);
15
13
  priority.pixels.fill(0x00);
16
14
  control.pixels.fill(0x00);
17
15
  const setPixel = (x, y, color) => {
18
- const idx = bufferWidth * y + x;
16
+ const idx = width * y + x;
19
17
  visible.pixels[idx] = (color & 0b1111) | (color << 4);
20
18
  };
21
19
  const plot = (x, y, drawMode, drawCodes) => {
22
- const idx = bufferWidth * y + x;
23
- if ((drawMode & draw_command_1.DrawMode.Visual) === draw_command_1.DrawMode.Visual) {
20
+ if (x < 0 || x >= width || y < 0 || y >= height)
21
+ return;
22
+ const idx = width * y + x;
23
+ if ((0, draw_command_1.isVisualMode)(drawMode)) {
24
24
  const pal = forcePal !== null && forcePal !== void 0 ? forcePal : (drawCodes[0] / 40) >>> 0;
25
25
  const palette = palettes[pal];
26
26
  const palIndex = drawCodes[0] % 40 >>> 0;
27
27
  visible.pixels[idx] = palette[palIndex];
28
28
  alpha.pixels[idx] = 255;
29
29
  }
30
- if ((drawMode & draw_command_1.DrawMode.Priority) === draw_command_1.DrawMode.Priority) {
30
+ if ((0, draw_command_1.isPriorityMode)(drawMode)) {
31
31
  priority.pixels[idx] = drawCodes[1];
32
32
  }
33
- if ((drawMode & draw_command_1.DrawMode.Control) === draw_command_1.DrawMode.Control) {
33
+ if ((0, draw_command_1.isControlMode)(drawMode)) {
34
34
  control.pixels[idx] = drawCodes[2];
35
35
  }
36
36
  };
37
37
  const isFillable = (x, y, drawMode) => {
38
- const idx = x + y * bufferWidth;
39
- const isVisible = (drawMode & draw_command_1.DrawMode.Visual) === draw_command_1.DrawMode.Visual;
40
- if (isVisible) {
38
+ const idx = x + y * width;
39
+ if ((0, draw_command_1.isVisualMode)(drawMode)) {
41
40
  const dither = (x & 1) ^ (y & 1);
42
41
  const val = visible.pixels[idx];
43
42
  return 0xf === (dither ? val & 0xf : val >>> 4);
@@ -47,18 +46,17 @@ const createScreenBuffer = (forcePal, palettes) => {
47
46
  * replaced 0x00 pixels in control and priority layers. Not sure if its intentional or not. But
48
47
  * may require a different way of modeling indexed "alpha" channel.
49
48
  */
50
- const isPriority = (drawMode & draw_command_1.DrawMode.Priority) === draw_command_1.DrawMode.Priority;
51
- const isControl = (drawMode & draw_command_1.DrawMode.Control) === draw_command_1.DrawMode.Control;
52
- return ((isPriority && priority.pixels[idx] === 0x00) ||
53
- (isControl && control.pixels[idx] === 0x00));
49
+ return (((0, draw_command_1.isPriorityMode)(drawMode) && priority.pixels[idx] === 0x00) ||
50
+ ((0, draw_command_1.isControlMode)(drawMode) && control.pixels[idx] === 0x00));
54
51
  };
55
52
  return [
56
53
  { visible, priority, control, alpha },
57
54
  {
58
55
  setPixel,
59
- brush: (0, tools_1.createBrush)(plot, [bufferWidth, bufferHeight]),
60
- fill: (0, tools_1.createFloodFill)(plot, isFillable, [bufferWidth, bufferHeight]),
56
+ brush: (0, tools_1.createBrush)(plot, [width, height]),
57
+ fill: (0, tools_1.createFloodFill)(plot, isFillable, [width, height]),
61
58
  line: (0, tools_1.createLine)(plot),
59
+ blit: (0, tools_1.createBlitter)(setPixel, [width, height]),
62
60
  },
63
61
  ];
64
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"screen-buffer.js","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screen-buffer.js","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":";;;AAAA,2CAAyD;AAEzD,yDAIgC;AAEhC,mCAKiB;AAEV,MAAM,kBAAkB,GAAG,CAChC,QAAmC,EACnC,QAA0D,EAC1D,CAAC,KAAK,EAAE,MAAM,CAAmB,EACT,EAAE;IAC1B,MAAM,OAAO,GAAG,IAAA,8BAAsB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAA,8BAAsB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAA,8BAAsB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAA,8BAAsB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEpD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1B,MAAM,QAAQ,GAAe,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,EAAE;QACnE,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,IAAI,GAAY,CAAC,CAAS,EAAE,CAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;QAClE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM;YAAE,OAAO;QAExD,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,IAAA,2BAAY,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,IAAI,IAAA,6BAAc,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,IAAA,4BAAa,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAe,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAE1B,IAAI,IAAA,2BAAY,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAClD,CAAC;QAED;;;;WAIG;QACH,OAAO,CACL,CAAC,IAAA,6BAAc,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;YAC3D,CAAC,IAAA,4BAAa,EAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAC1D,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QACrC;YACE,QAAQ;YACR,KAAK,EAAE,IAAA,mBAAW,EAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,EAAE,IAAA,uBAAe,EAAC,IAAI,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,EAAE,IAAA,kBAAU,EAAC,IAAI,CAAC;YACtB,IAAI,EAAE,IAAA,qBAAa,EAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC/C;KACF,CAAC;AACJ,CAAC,CAAC;AAvEW,QAAA,kBAAkB,sBAuE7B"}
@@ -1,14 +1,17 @@
1
1
  import { DrawCodes, DrawMode } from '../models/draw-command';
2
+ import { Cel } from '../models/cel';
2
3
  export type RawPlotter = (x: number, y: number, color: number) => void;
3
4
  export type Plotter = (x: number, y: number, drawMode: DrawMode, drawCodes: DrawCodes) => void;
4
5
  export type IsFillable = (x: number, y: number, drawMode: DrawMode) => boolean;
5
6
  export type Filler = (x: number, y: number, drawMode: DrawMode, drawCodes: DrawCodes) => void;
6
7
  export type Liner = (x0: number, y0: number, x1: number, y1: number, drawMode: DrawMode, drawCodes: DrawCodes) => void;
7
8
  export type Brusher = (cx: number, cy: number, size: number, isRect: boolean, isSpray: boolean, textureCode: number, drawMode: DrawMode, drawCodes: DrawCodes) => void;
9
+ export type Blitter = (x: number, y: number, drawMode: DrawMode, cel: Cel) => void;
8
10
  export interface Screen {
9
11
  brush: Brusher;
10
12
  fill: Filler;
11
13
  line: Liner;
12
14
  setPixel: RawPlotter;
15
+ blit: Blitter;
13
16
  }
14
17
  //# sourceMappingURL=screen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../src/screen/screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvE,MAAM,MAAM,OAAO,GAAG,CACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;AAE/E,MAAM,MAAM,MAAM,GAAG,CACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,KAAK,GAAG,CAClB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,OAAO,GAAG,CACpB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,UAAU,CAAC;CACtB"}
1
+ {"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../src/screen/screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvE,MAAM,MAAM,OAAO,GAAG,CACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;AAE/E,MAAM,MAAM,MAAM,GAAG,CACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,KAAK,GAAG,CAClB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,OAAO,GAAG,CACpB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,OAAO,GAAG,CACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,KACL,IAAI,CAAC;AAEV,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,UAAU,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;CACf"}
@@ -0,0 +1,5 @@
1
+ import { DrawMode } from '../../models/draw-command';
2
+ import { Cel } from '../../models/cel';
3
+ import { RawPlotter } from '../screen';
4
+ export declare const createBlitter: (plot: RawPlotter, [stageWidth, stageHeight]: readonly [number, number]) => (x0: number, y0: number, drawMode: DrawMode, cel: Cel) => void;
5
+ //# sourceMappingURL=create-blitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-blitter.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-blitter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAIT,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,eAAO,MAAM,aAAa,SACjB,UAAU,gEACZ,MAAM,MAAM,MAAM,YAAY,QAAQ,OAAO,GAAG,SAepD,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBlitter = void 0;
4
+ const draw_command_1 = require("../../models/draw-command");
5
+ const createBlitter = (plot, [stageWidth, stageHeight]) => (x0, y0, drawMode, cel) => {
6
+ if ((0, draw_command_1.isControlMode)(drawMode) || (0, draw_command_1.isPriorityMode)(drawMode))
7
+ console.warn('unhandled CEL command on Control/Priority layer');
8
+ if (!(0, draw_command_1.isVisualMode)(drawMode))
9
+ return;
10
+ const data = cel.pixels;
11
+ for (let y = y0; y < y0 + cel.height; y++)
12
+ for (let x = x0; x < x0 + cel.width; x++) {
13
+ if (x >= stageWidth || y >= stageHeight)
14
+ continue;
15
+ const color = data[x + y * cel.width];
16
+ if (color === cel.keyColor)
17
+ continue;
18
+ plot(x, y, color);
19
+ }
20
+ };
21
+ exports.createBlitter = createBlitter;
22
+ //# sourceMappingURL=create-blitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-blitter.js","sourceRoot":"","sources":["../../../src/screen/tools/create-blitter.ts"],"names":[],"mappings":";;;AAAA,4DAKmC;AAK5B,MAAM,aAAa,GACxB,CAAC,IAAgB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAiB,EAAE,EAAE,CAChE,CAAC,EAAU,EAAE,EAAU,EAAE,QAAkB,EAAE,GAAQ,EAAE,EAAE;IACvD,IAAI,IAAA,4BAAa,EAAC,QAAQ,CAAC,IAAI,IAAA,6BAAc,EAAC,QAAQ,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAElE,IAAI,CAAC,IAAA,2BAAY,EAAC,QAAQ,CAAC;QAAE,OAAO;IAEpC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QACvC,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,WAAW;gBAAE,SAAS;YAElD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,KAAK,KAAK,GAAG,CAAC,QAAQ;gBAAE,SAAS;YACrC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACpB,CAAC;AACL,CAAC,CAAC;AAjBS,QAAA,aAAa,iBAiBtB"}
@@ -1,4 +1,3 @@
1
1
  import { Brusher, Plotter } from '../screen';
2
- import { StaticVec2 } from '../../models/vec2';
3
- export declare const createBrush: (plot: Plotter, [stageWidth, stageHeight]: StaticVec2) => Brusher;
2
+ export declare const createBrush: (plot: Plotter, [stageWidth, stageHeight]: readonly [number, number]) => Brusher;
4
3
  //# sourceMappingURL=create-brush.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-brush.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-brush.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK/C,eAAO,MAAM,WAAW,SAChB,OAAO,4CAEZ,OAmCA,CAAC"}
1
+ {"version":3,"file":"create-brush.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-brush.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAM7C,eAAO,MAAM,WAAW,SAChB,OAAO,2DAEZ,OAmCA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-brush.js","sourceRoot":"","sources":["../../../src/screen/tools/create-brush.ts"],"names":[],"mappings":";;;;;;AAGA,mCAA+C;AAC/C,wDAAgC;AAEzB,MAAM,WAAW,GAAG,CACzB,IAAa,EACb,CAAC,UAAU,EAAE,WAAW,CAAa,EAC5B,EAAE,CACX,SAAS,KAAK,CACZ,EAAE,EACF,EAAE,EACF,IAAI,EACJ,MAAM,EACN,OAAO,EACP,WAAW,EACX,QAAkB,EAClB,SAAoB;IAEpB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAE5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACjC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3B,IAAI,KAAK,IAAI,UAAU;QAAE,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC;IACnD,IAAI,MAAM,IAAI,WAAW;QAAE,GAAG,GAAG,WAAW,GAAG,MAAM,CAAC;IAEtD,IAAI,QAAQ,GAAG,qBAAa,CAAC,WAAW,CAAC,CAAC;IAE1C,KAAK,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC;QACrC,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;gBAC7B,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS;YAC9C,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,aAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;gBAAE,SAAS;YACnD,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC;AACL,CAAC,CAAC;AAtCS,QAAA,WAAW,eAsCpB"}
1
+ {"version":3,"file":"create-brush.js","sourceRoot":"","sources":["../../../src/screen/tools/create-brush.ts"],"names":[],"mappings":";;;;;;AAGA,mCAA+C;AAC/C,wDAAgC;AAEzB,MAAM,WAAW,GAAG,CACzB,IAAa,EACb,CAAC,UAAU,EAAE,WAAW,CAAiB,EAChC,EAAE,CACX,SAAS,KAAK,CACZ,EAAE,EACF,EAAE,EACF,IAAI,EACJ,MAAM,EACN,OAAO,EACP,WAAW,EACX,QAAkB,EAClB,SAAoB;IAEpB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAE5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACjC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3B,IAAI,KAAK,IAAI,UAAU;QAAE,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC;IACnD,IAAI,MAAM,IAAI,WAAW;QAAE,GAAG,GAAG,WAAW,GAAG,MAAM,CAAC;IAEtD,IAAI,QAAQ,GAAG,qBAAa,CAAC,WAAW,CAAC,CAAC;IAE1C,KAAK,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC;QACrC,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;gBAC7B,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS;YAC9C,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,aAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;gBAAE,SAAS;YACnD,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC;AACL,CAAC,CAAC;AAtCS,QAAA,WAAW,eAsCpB"}
@@ -1,4 +1,3 @@
1
1
  import { Filler, IsFillable, Plotter } from '../screen';
2
- import { StaticVec2 } from '../../models/vec2';
3
- export declare const createFloodFill: (plot: Plotter, isLegal: IsFillable, [width, height]: StaticVec2) => Filler;
2
+ export declare const createFloodFill: (plot: Plotter, isLegal: IsFillable, [width, height]: readonly [number, number]) => Filler;
4
3
  //# sourceMappingURL=create-flood-fill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-flood-fill.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-flood-fill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,eAAO,MAAM,eAAe,SACpB,OAAO,WACJ,UAAU,kCAElB,MAuEF,CAAC"}
1
+ {"version":3,"file":"create-flood-fill.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-flood-fill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIxD,eAAO,MAAM,eAAe,SACpB,OAAO,WACJ,UAAU,iDAElB,MAuEF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-flood-fill.js","sourceRoot":"","sources":["../../../src/screen/tools/create-flood-fill.ts"],"names":[],"mappings":";;;AAAA,2DAAuD;AAKhD,MAAM,eAAe,GAAG,CAC7B,IAAa,EACb,OAAmB,EACnB,CAAC,KAAK,EAAE,MAAM,CAAa,EACnB,EAAE;IACV,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,4BAAY,CAAC,KAAK,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC;IAE5D,OAAO,SAAS,SAAS,CACvB,EAAU,EACV,EAAU,EACV,QAAkB,EAClB,SAAoB;QAEpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,MAAM,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElB,GAAG,CAAC;YACF,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAExB,IAAI,OAAO,CAAC,CAAC,CAAC;gBAAE,SAAS;YACzB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAElB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAE5B,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;gBAAE,SAAS;YACvC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAEhC,MAAM,YAAY,GAChB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YACnE,MAAM,YAAY,GAChB,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEvE,IAAI,YAAY;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YACxC,IAAI,YAAY;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAExC,sBAAsB;YACtB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;gBACtC,IAAI,YAAY,GAAG,YAAY,CAAC;gBAChC,IAAI,YAAY,GAAG,YAAY,CAAC;gBAEhC,KACE,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,EAChB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAC5D,EAAE,IAAI,GAAG,EACT,CAAC;oBACD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAEjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;wBACxC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;4BACjC,IAAI,CAAC,YAAY;gCAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;4BAC3C,YAAY,GAAG,IAAI,CAAC;wBACtB,CAAC;6BAAM,CAAC;4BACN,YAAY,GAAG,KAAK,CAAC;wBACvB,CAAC;oBACH,CAAC;oBAED,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;wBAC5C,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;4BACjC,IAAI,CAAC,YAAY;gCAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;4BAC3C,YAAY,GAAG,IAAI,CAAC;wBACtB,CAAC;6BAAM,CAAC;4BACN,YAAY,GAAG,KAAK,CAAC;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;IAC7B,CAAC,CAAC;AACJ,CAAC,CAAC;AA3EW,QAAA,eAAe,mBA2E1B"}
1
+ {"version":3,"file":"create-flood-fill.js","sourceRoot":"","sources":["../../../src/screen/tools/create-flood-fill.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@ export { createBrush } from './create-brush';
2
2
  export { createFloodFill } from './create-flood-fill';
3
3
  export { createLine } from './create-line';
4
4
  export { createMarker } from './create-marker';
5
+ export { createBlitter } from './create-blitter';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createMarker = exports.createLine = exports.createFloodFill = exports.createBrush = void 0;
3
+ exports.createBlitter = exports.createMarker = exports.createLine = exports.createFloodFill = exports.createBrush = void 0;
4
4
  var create_brush_1 = require("./create-brush");
5
5
  Object.defineProperty(exports, "createBrush", { enumerable: true, get: function () { return create_brush_1.createBrush; } });
6
6
  var create_flood_fill_1 = require("./create-flood-fill");
@@ -9,4 +9,6 @@ var create_line_1 = require("./create-line");
9
9
  Object.defineProperty(exports, "createLine", { enumerable: true, get: function () { return create_line_1.createLine; } });
10
10
  var create_marker_1 = require("./create-marker");
11
11
  Object.defineProperty(exports, "createMarker", { enumerable: true, get: function () { return create_marker_1.createMarker; } });
12
+ var create_blitter_1 = require("./create-blitter");
13
+ Object.defineProperty(exports, "createBlitter", { enumerable: true, get: function () { return create_blitter_1.createBlitter; } });
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screen/tools/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AACxB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screen/tools/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AACxB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function exhaustive(msg: string, _: never): never;
2
+ //# sourceMappingURL=exhaustive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exhaustive.d.ts","sourceRoot":"","sources":["../../src/utils/exhaustive.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAEvD"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exhaustive = void 0;
4
+ function exhaustive(msg, _) {
5
+ throw new Error(`${msg}: ${JSON.stringify(_)}`);
6
+ }
7
+ exports.exhaustive = exhaustive;
8
+ //# sourceMappingURL=exhaustive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exhaustive.js","sourceRoot":"","sources":["../../src/utils/exhaustive.ts"],"names":[],"mappings":";;;AAAA,SAAgB,UAAU,CAAC,GAAW,EAAE,CAAQ;IAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AAFD,gCAEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"repeat.d.ts","sourceRoot":"","sources":["../../src/utils/repeat.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,SAAU,MAAM,UAAU,MAAM,KAAK,CAAC,KAAG,CAAC,EAGpC,CAAC"}
1
+ {"version":3,"file":"repeat.d.ts","sourceRoot":"","sources":["../../src/utils/repeat.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,SAAU,MAAM,MAAM,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,KAAG,CAAC,EAGpC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@4bitlabs/sci0",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "Library for parsing and rendering assets from Sierra On-line's SCI-engine.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -24,9 +24,9 @@
24
24
  "author": "J. Holmes <j@holmes.codes>",
25
25
  "license": "ISC",
26
26
  "dependencies": {
27
- "@4bitlabs/codecs": "^2.0.0",
28
- "@4bitlabs/image": "^3.3.7",
29
- "@4bitlabs/numeric-deque": "^1.1.3",
30
- "@4bitlabs/readers": "^2.0.4"
27
+ "@4bitlabs/codecs": "^2.0.1",
28
+ "@4bitlabs/image": "^3.3.9",
29
+ "@4bitlabs/numeric-deque": "^1.1.5",
30
+ "@4bitlabs/readers": "^2.0.5"
31
31
  }
32
32
  }