@4bitlabs/sci0 2.5.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/models/draw-command.d.ts +23 -8
- package/dist/models/draw-command.d.ts.map +1 -1
- package/dist/models/draw-command.js +7 -1
- package/dist/models/draw-command.js.map +1 -1
- package/dist/models/resource-id.d.ts.map +1 -1
- package/dist/models/resource-id.js +3 -2
- package/dist/models/resource-id.js.map +1 -1
- package/dist/parsers/compression.d.ts.map +1 -1
- package/dist/parsers/compression.js +4 -3
- package/dist/parsers/compression.js.map +1 -1
- package/dist/parsers/mapping.d.ts.map +1 -1
- package/dist/parsers/pic/handlers.d.ts +7 -3
- package/dist/parsers/pic/handlers.d.ts.map +1 -1
- package/dist/parsers/pic/handlers.js +79 -82
- package/dist/parsers/pic/handlers.js.map +1 -1
- package/dist/parsers/pic/parser.d.ts.map +1 -1
- package/dist/parsers/pic/parser.js +10 -10
- package/dist/parsers/pic/parser.js.map +1 -1
- package/dist/screen/render-pic.d.ts.map +1 -1
- package/dist/screen/render-pic.js +3 -2
- package/dist/screen/render-pic.js.map +1 -1
- package/dist/screen/screen-buffer.d.ts.map +1 -1
- package/dist/screen/screen-buffer.js +6 -9
- package/dist/screen/screen-buffer.js.map +1 -1
- package/dist/utils/exhaustive.d.ts +2 -0
- package/dist/utils/exhaustive.d.ts.map +1 -0
- package/dist/utils/exhaustive.js +8 -0
- package/dist/utils/exhaustive.js.map +1 -0
- package/dist/utils/repeat.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -5,14 +5,29 @@ export declare enum DrawMode {
|
|
|
5
5
|
Priority = 2,
|
|
6
6
|
Control = 4
|
|
7
7
|
}
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
type
|
|
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
|
+
type SetPaletteCommand = readonly [
|
|
22
|
+
mode: 'SET_PALETTE',
|
|
23
|
+
pal: number,
|
|
24
|
+
colors: Uint8Array
|
|
25
|
+
];
|
|
26
|
+
type UpdatePaletteCommand = readonly [
|
|
12
27
|
mode: 'UPDATE_PALETTE',
|
|
13
28
|
entries: [pal: number, idx: number, color: number][]
|
|
14
29
|
];
|
|
15
|
-
type BrushCommand = [
|
|
30
|
+
type BrushCommand = readonly [
|
|
16
31
|
mode: 'BRUSH',
|
|
17
32
|
drawMode: DrawMode,
|
|
18
33
|
drawCodes: DrawCodes,
|
|
@@ -20,19 +35,19 @@ type BrushCommand = [
|
|
|
20
35
|
textureCode: number,
|
|
21
36
|
pos: StaticVec2
|
|
22
37
|
];
|
|
23
|
-
type FillCommand = [
|
|
38
|
+
type FillCommand = readonly [
|
|
24
39
|
mode: 'FILL',
|
|
25
40
|
drawMode: DrawMode,
|
|
26
41
|
drawCodes: DrawCodes,
|
|
27
42
|
pos: StaticVec2
|
|
28
43
|
];
|
|
29
|
-
type PolylineCommand = [
|
|
44
|
+
type PolylineCommand = readonly [
|
|
30
45
|
mode: 'PLINE',
|
|
31
46
|
drawMode: DrawMode,
|
|
32
47
|
drawCodes: DrawCodes,
|
|
33
48
|
...points: StaticVec2[]
|
|
34
49
|
];
|
|
35
|
-
type EmbeddedCelCommand = [
|
|
50
|
+
type EmbeddedCelCommand = readonly [
|
|
36
51
|
mode: 'CEL',
|
|
37
52
|
drawMode: DrawMode,
|
|
38
53
|
pos: StaticVec2,
|
|
@@ -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,
|
|
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,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,KAAK,iBAAiB,GAAG,SAAS;IAChC,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,MAAM;IACX,MAAM,EAAE,UAAU;CACnB,CAAC;AAEF,KAAK,oBAAoB,GAAG,SAAS;IACnC,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,SAAS;IAC3B,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,SAAS;IAC1B,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,GAAG,EAAE,UAAU;CAChB,CAAC;AAEF,KAAK,eAAe,GAAG,SAAS;IAC9B,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,GAAG,MAAM,EAAE,UAAU,EAAE;CACxB,CAAC;AAEF,KAAK,kBAAkB,GAAG,SAAS;IACjC,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,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,
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/parsers/compression.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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;
|
|
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,
|
|
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
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export interface CodeHandlerContext {
|
|
6
|
+
r: BitReader;
|
|
7
|
+
state: PicState;
|
|
8
|
+
cmds: DrawCommand[];
|
|
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,
|
|
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,EAAE,WAAW,EAAE,CAAC;CACrB;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,86 +1,86 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CodeHandlers =
|
|
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](
|
|
11
|
+
[op_codes_1.OpCode.SetVisual]({ r, state }) {
|
|
13
12
|
const [, priorityCode, controlCode] = state.drawCodes;
|
|
14
|
-
const visualCode =
|
|
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](
|
|
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](
|
|
26
|
+
[op_codes_1.OpCode.ClearPriority]({ state }) {
|
|
28
27
|
state.drawMode &= ~draw_command_1.DrawMode.Priority;
|
|
29
28
|
},
|
|
30
|
-
[op_codes_1.OpCode.SetControl](
|
|
29
|
+
[op_codes_1.OpCode.SetControl]({ r, state }) {
|
|
31
30
|
const [visualCode, priorityCode] = state.drawCodes;
|
|
32
|
-
const controlCode =
|
|
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](
|
|
35
|
+
[op_codes_1.OpCode.ClearControl]({ state }) {
|
|
37
36
|
state.drawMode &= ~draw_command_1.DrawMode.Control;
|
|
38
37
|
},
|
|
39
|
-
|
|
38
|
+
// Lines
|
|
39
|
+
[op_codes_1.OpCode.ShortLines]({ r, state, cmds }) {
|
|
40
40
|
const points = [];
|
|
41
|
-
const prev = (0, points_1.getPoint24)(
|
|
41
|
+
const prev = (0, points_1.getPoint24)(r, vec2_1.vec2.create());
|
|
42
42
|
points.push(vec2_1.vec2.clone(prev));
|
|
43
|
-
while (
|
|
44
|
-
const next = (0, points_1.getPoint8)(
|
|
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
|
-
|
|
48
|
+
cmds.push(['PLINE', state.drawMode, state.drawCodes, ...points]);
|
|
49
49
|
},
|
|
50
|
-
[op_codes_1.OpCode.MediumLines](
|
|
50
|
+
[op_codes_1.OpCode.MediumLines]({ r, state, cmds }) {
|
|
51
51
|
const points = [];
|
|
52
|
-
const prev = (0, points_1.getPoint24)(
|
|
52
|
+
const prev = (0, points_1.getPoint24)(r, vec2_1.vec2.create());
|
|
53
53
|
points.push(vec2_1.vec2.clone(prev));
|
|
54
|
-
while (
|
|
55
|
-
const next = (0, points_1.getPoint16)(
|
|
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
|
-
|
|
59
|
+
cmds.push(['PLINE', state.drawMode, state.drawCodes, ...points]);
|
|
60
60
|
},
|
|
61
|
-
[op_codes_1.OpCode.LongLines](
|
|
61
|
+
[op_codes_1.OpCode.LongLines]({ r, state, cmds }) {
|
|
62
62
|
const points = [];
|
|
63
|
-
points.push((0, points_1.getPoint24)(
|
|
64
|
-
while (
|
|
65
|
-
points.push((0, points_1.getPoint24)(
|
|
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
|
-
|
|
67
|
+
cmds.push(['PLINE', state.drawMode, state.drawCodes, ...points]);
|
|
68
68
|
},
|
|
69
69
|
// Patterns
|
|
70
|
-
[op_codes_1.OpCode.SetPattern](
|
|
71
|
-
const code =
|
|
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](
|
|
79
|
-
const cmds = [];
|
|
78
|
+
[op_codes_1.OpCode.ShortBrushes]({ r, state, cmds }) {
|
|
80
79
|
const prev = vec2_1.vec2.create();
|
|
80
|
+
const { drawMode, drawCodes, patternCode } = state;
|
|
81
81
|
const [, , isTextured] = patternCode;
|
|
82
|
-
let texture = isTextured ?
|
|
83
|
-
(0, points_1.getPoint24)(
|
|
82
|
+
let texture = isTextured ? r.read32(8) >> 1 : 0;
|
|
83
|
+
(0, points_1.getPoint24)(r, prev);
|
|
84
84
|
cmds.push([
|
|
85
85
|
'BRUSH',
|
|
86
86
|
drawMode,
|
|
@@ -89,20 +89,19 @@ exports.CodeHandlers = {
|
|
|
89
89
|
texture,
|
|
90
90
|
vec2_1.vec2.clone(prev),
|
|
91
91
|
]);
|
|
92
|
-
while (
|
|
93
|
-
texture = isTextured ?
|
|
94
|
-
const next = (0, points_1.getPoint8)(
|
|
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
95
|
cmds.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](
|
|
101
|
-
const cmds = [];
|
|
99
|
+
[op_codes_1.OpCode.MediumBrushes]({ r, state, cmds }) {
|
|
102
100
|
const prev = vec2_1.vec2.create();
|
|
101
|
+
const { drawMode, drawCodes, patternCode } = state;
|
|
103
102
|
const [, , isTextured] = patternCode;
|
|
104
|
-
let texture = isTextured ?
|
|
105
|
-
(0, points_1.getPoint24)(
|
|
103
|
+
let texture = isTextured ? r.read32(8) >> 1 : 0;
|
|
104
|
+
(0, points_1.getPoint24)(r, prev);
|
|
106
105
|
cmds.push([
|
|
107
106
|
'BRUSH',
|
|
108
107
|
drawMode,
|
|
@@ -111,98 +110,96 @@ exports.CodeHandlers = {
|
|
|
111
110
|
texture,
|
|
112
111
|
vec2_1.vec2.clone(prev),
|
|
113
112
|
]);
|
|
114
|
-
while (
|
|
115
|
-
texture = isTextured ?
|
|
116
|
-
const next = (0, points_1.getPoint16)(
|
|
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);
|
|
117
116
|
cmds.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](
|
|
123
|
-
const
|
|
120
|
+
[op_codes_1.OpCode.LongBrushes]({ r, state, cmds }) {
|
|
121
|
+
const { drawMode, drawCodes, patternCode } = state;
|
|
124
122
|
const [, , isTextured] = patternCode;
|
|
125
|
-
while (
|
|
126
|
-
const texture = isTextured ?
|
|
127
|
-
const pos = (0, points_1.getPoint24)(
|
|
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());
|
|
128
126
|
cmds.push(['BRUSH', drawMode, drawCodes, patternCode, texture, pos]);
|
|
129
127
|
}
|
|
130
|
-
return cmds;
|
|
131
128
|
},
|
|
132
129
|
// Fills
|
|
133
|
-
[op_codes_1.OpCode.Fills](
|
|
134
|
-
const
|
|
130
|
+
[op_codes_1.OpCode.Fills]({ r, state, cmds }) {
|
|
131
|
+
const { drawMode, drawCodes } = state;
|
|
135
132
|
const p1 = vec2_1.vec2.create();
|
|
136
133
|
while (true) {
|
|
137
|
-
const peek =
|
|
134
|
+
const peek = r.peek32(8);
|
|
138
135
|
if (peek >= 0xf0)
|
|
139
136
|
break;
|
|
140
|
-
(0, points_1.getPoint24)(
|
|
141
|
-
|
|
137
|
+
(0, points_1.getPoint24)(r, p1);
|
|
138
|
+
cmds.push(['FILL', drawMode, drawCodes, vec2_1.vec2.clone(p1)]);
|
|
142
139
|
}
|
|
143
|
-
return fills;
|
|
144
140
|
},
|
|
145
|
-
[op_codes_1.OpCode.XOp](
|
|
146
|
-
const opx =
|
|
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
|
-
|
|
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](
|
|
149
|
+
[op_codes_1.ExtendedOpCode.UpdatePalette]({ r, cmds }) {
|
|
155
150
|
const entries = [];
|
|
156
|
-
while (
|
|
157
|
-
const entry =
|
|
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 =
|
|
155
|
+
const code = r.read32(8);
|
|
161
156
|
entries.push([pal, idx, code]);
|
|
162
157
|
}
|
|
163
|
-
|
|
158
|
+
cmds.push(['UPDATE_PALETTE', entries]);
|
|
164
159
|
},
|
|
165
|
-
[op_codes_1.ExtendedOpCode.SetPalette](
|
|
166
|
-
const pal =
|
|
160
|
+
[op_codes_1.ExtendedOpCode.SetPalette]({ r, cmds }) {
|
|
161
|
+
const pal = r.read32(8);
|
|
167
162
|
const colors = new Uint8Array(40);
|
|
168
|
-
(0, repeat_1.repeat)(40, (i) => (colors[i] =
|
|
169
|
-
|
|
163
|
+
(0, repeat_1.repeat)(40, (i) => (colors[i] = r.read32(8)));
|
|
164
|
+
cmds.push(['SET_PALETTE', pal, colors]);
|
|
170
165
|
},
|
|
171
|
-
[op_codes_1.ExtendedOpCode.x02](
|
|
166
|
+
[op_codes_1.ExtendedOpCode.x02]({ r }) {
|
|
172
167
|
// Looks like a palette, but i'm not sure what this chunk is for
|
|
173
|
-
|
|
174
|
-
|
|
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
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](
|
|
174
|
+
[op_codes_1.ExtendedOpCode.x03]({ r }) {
|
|
180
175
|
// Not sure what byte this is for
|
|
181
|
-
|
|
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](
|
|
182
|
+
[op_codes_1.ExtendedOpCode.x05]({ r }) {
|
|
188
183
|
// Not sure what byte this is for
|
|
189
|
-
|
|
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](
|
|
196
|
-
const pos = (0, points_1.getPoint24)(
|
|
197
|
-
const size =
|
|
190
|
+
[op_codes_1.ExtendedOpCode.x07]({ r, state, cmds }) {
|
|
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) =>
|
|
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
|
-
|
|
199
|
+
cmds.push(['CEL', state.drawMode, pos, cel]);
|
|
203
200
|
},
|
|
204
|
-
[op_codes_1.ExtendedOpCode.x08](
|
|
205
|
-
(0, repeat_1.repeat)(14, () =>
|
|
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":";;;AACA,yCAAsE;AAEtE,qCAA6D;AAC7D,4DAAkE;AAClE,4CAA+C;AAC/C,+CAA4C;AAC5C,gCAAkC;
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/parsers/pic/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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,EAsBvD,CAAC"}
|
|
@@ -6,23 +6,23 @@ const handlers_1 = require("./handlers");
|
|
|
6
6
|
const op_codes_1 = require("./op-codes");
|
|
7
7
|
const pic_state_1 = require("./pic-state");
|
|
8
8
|
const parseFrom = (data) => {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const ctx = {
|
|
10
|
+
r: (0, readers_1.createBitReader)(data, { mode: 'msb' }),
|
|
11
|
+
state: (0, pic_state_1.createPicState)(),
|
|
12
|
+
cmds: [],
|
|
13
|
+
};
|
|
12
14
|
while (true) {
|
|
13
|
-
const op =
|
|
15
|
+
const op = ctx.r.read32(8);
|
|
14
16
|
if (!(0, op_codes_1.isOpCode)(op))
|
|
15
17
|
throw new Error(`Unrecognized opcode: 0x${op.toString(16)}`);
|
|
18
|
+
if (op === op_codes_1.OpCode.Done)
|
|
19
|
+
break;
|
|
16
20
|
const handler = handlers_1.CodeHandlers[op];
|
|
17
21
|
if (!handler)
|
|
18
22
|
throw new Error(`Unhandled opcode: 0x${op.toString(16)}`);
|
|
19
|
-
|
|
20
|
-
if (next === handlers_1.IS_DONE)
|
|
21
|
-
break;
|
|
22
|
-
if (next)
|
|
23
|
-
commands.push(...next);
|
|
23
|
+
handler(ctx);
|
|
24
24
|
}
|
|
25
|
-
return
|
|
25
|
+
return ctx.cmds;
|
|
26
26
|
};
|
|
27
27
|
exports.parseFrom = parseFrom;
|
|
28
28
|
//# sourceMappingURL=parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/parsers/pic/parser.ts"],"names":[],"mappings":";;;AAAA,+CAAoD;AACpD,
|
|
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,GAAG,GAAuB;QAC9B,CAAC,EAAE,IAAA,yBAAe,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACzC,KAAK,EAAE,IAAA,0BAAc,GAAE;QACvB,IAAI,EAAE,EAAE;KACT,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,GAAG,CAAC,IAAI,CAAC;AAClB,CAAC,CAAC;AAtBW,QAAA,SAAS,aAsBpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-pic.d.ts","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"render-pic.d.ts","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,wBAAwB,CAAC;AACnE,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;CACtC;AAED,eAAO,MAAM,SAAS,aACV,WAAW,EAAE,YACd,aAAa,KACrB,YAyEF,CAAC"}
|
|
@@ -4,6 +4,7 @@ exports.renderPic = void 0;
|
|
|
4
4
|
const screen_buffer_1 = require("./screen-buffer");
|
|
5
5
|
const default_palette_1 = require("./default-palette");
|
|
6
6
|
const draw_command_1 = require("../models/draw-command");
|
|
7
|
+
const exhaustive_1 = require("../utils/exhaustive");
|
|
7
8
|
const renderPic = (commands, options = {}) => {
|
|
8
9
|
const { forcePal } = options;
|
|
9
10
|
const palettes = [
|
|
@@ -47,7 +48,7 @@ const renderPic = (commands, options = {}) => {
|
|
|
47
48
|
}
|
|
48
49
|
case 'CEL': {
|
|
49
50
|
const [, drawMode, pos, cel] = cmd;
|
|
50
|
-
if ((
|
|
51
|
+
if (!(0, draw_command_1.isVisualMode)(drawMode))
|
|
51
52
|
continue;
|
|
52
53
|
const data = cel.pixels;
|
|
53
54
|
for (let y = pos[1]; y < pos[1] + cel.height; y++)
|
|
@@ -62,7 +63,7 @@ const renderPic = (commands, options = {}) => {
|
|
|
62
63
|
break;
|
|
63
64
|
}
|
|
64
65
|
default:
|
|
65
|
-
|
|
66
|
+
(0, exhaustive_1.exhaustive)('unhandled opcode', mode);
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-pic.js","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":";;;AAAA,mDAAqD;AACrD,uDAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"render-pic.js","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":";;;AAAA,mDAAqD;AACrD,uDAAoD;AACpD,yDAAmE;AAEnE,oDAAiD;AAM1C,MAAM,SAAS,GAAG,CACvB,QAAuB,EACvB,UAAyB,EAAE,EACb,EAAE;IAChB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE7B,MAAM,QAAQ,GAAqD;QACjE,UAAU,CAAC,IAAI,CAAC,iCAAe,CAAC;QAChC,UAAU,CAAC,IAAI,CAAC,iCAAe,CAAC;QAChC,UAAU,CAAC,IAAI,CAAC,iCAAe,CAAC;QAChC,UAAU,CAAC,IAAI,CAAC,iCAAe,CAAC;KACjC,CAAC;IAEF,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAA,kCAAkB,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEhE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAEnB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;gBAC7B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;YACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;gBACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBACpC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC7B,CAAC,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;gBACzC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACvC,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;gBAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE;oBACxC,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACZ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACZ,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAChB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAChB,QAAQ,EACR,SAAS,CACV,CAAC;gBACJ,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;gBACxE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACvE,MAAM;YACR,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;gBACnC,IAAI,CAAC,IAAA,2BAAY,EAAC,QAAQ,CAAC;oBAAE,SAAS;gBAEtC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC;gBACxB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC/C,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;wBACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG;4BAAE,SAAS;wBAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;wBACtC,IAAI,KAAK,KAAK,GAAG,CAAC,QAAQ;4BAAE,SAAS;wBACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;oBAC/B,CAAC;gBACH,MAAM;YACR,CAAC;YACD;gBACE,IAAA,uBAAU,EAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA5EW,QAAA,SAAS,aA4EpB"}
|
|
@@ -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;
|
|
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;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,CAgEvB,CAAC"}
|
|
@@ -20,24 +20,23 @@ const createScreenBuffer = (forcePal, palettes) => {
|
|
|
20
20
|
};
|
|
21
21
|
const plot = (x, y, drawMode, drawCodes) => {
|
|
22
22
|
const idx = bufferWidth * y + x;
|
|
23
|
-
if ((
|
|
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 ((
|
|
30
|
+
if ((0, draw_command_1.isPriorityMode)(drawMode)) {
|
|
31
31
|
priority.pixels[idx] = drawCodes[1];
|
|
32
32
|
}
|
|
33
|
-
if ((
|
|
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
38
|
const idx = x + y * bufferWidth;
|
|
39
|
-
|
|
40
|
-
if (isVisible) {
|
|
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,10 +46,8 @@ 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
|
-
|
|
51
|
-
|
|
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 },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen-buffer.js","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":";;;AAAA,2CAAyD;AAEzD,
|
|
1
|
+
{"version":3,"file":"screen-buffer.js","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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.
|
|
3
|
+
"version": "2.5.1",
|
|
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.
|
|
28
|
-
"@4bitlabs/image": "^3.3.
|
|
29
|
-
"@4bitlabs/numeric-deque": "^1.1.
|
|
30
|
-
"@4bitlabs/readers": "^2.0.
|
|
27
|
+
"@4bitlabs/codecs": "^2.0.1",
|
|
28
|
+
"@4bitlabs/image": "^3.3.8",
|
|
29
|
+
"@4bitlabs/numeric-deque": "^1.1.4",
|
|
30
|
+
"@4bitlabs/readers": "^2.0.5"
|
|
31
31
|
}
|
|
32
32
|
}
|