@modplayjs/fmt-prowizard 0.0.0-stage → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/prowiz.d.ts +44 -0
- package/dist/prowiz.d.ts.map +1 -0
- package/dist/prowiz.js +157 -0
- package/dist/prowiz.js.map +1 -0
- package/dist/ptktable.d.ts +5 -0
- package/dist/ptktable.d.ts.map +1 -0
- package/dist/ptktable.js +49 -0
- package/dist/ptktable.js.map +1 -0
- package/dist/pw-ac1d.d.ts +4 -0
- package/dist/pw-ac1d.d.ts.map +1 -0
- package/dist/pw-ac1d.js +133 -0
- package/dist/pw-ac1d.js.map +1 -0
- package/dist/pw-di.d.ts +4 -0
- package/dist/pw-di.d.ts.map +1 -0
- package/dist/pw-di.js +177 -0
- package/dist/pw-di.js.map +1 -0
- package/dist/pw-eureka.d.ts +4 -0
- package/dist/pw-eureka.d.ts.map +1 -0
- package/dist/pw-eureka.js +171 -0
- package/dist/pw-eureka.js.map +1 -0
- package/dist/pw-fcm.d.ts +4 -0
- package/dist/pw-fcm.d.ts.map +1 -0
- package/dist/pw-fcm.js +102 -0
- package/dist/pw-fcm.js.map +1 -0
- package/dist/pw-fuchs.d.ts +4 -0
- package/dist/pw-fuchs.d.ts.map +1 -0
- package/dist/pw-fuchs.js +139 -0
- package/dist/pw-fuchs.js.map +1 -0
- package/dist/pw-heatseek.d.ts +4 -0
- package/dist/pw-heatseek.d.ts.map +1 -0
- package/dist/pw-heatseek.js +197 -0
- package/dist/pw-heatseek.js.map +1 -0
- package/dist/pw-hrt.d.ts +4 -0
- package/dist/pw-hrt.d.ts.map +1 -0
- package/dist/pw-hrt.js +104 -0
- package/dist/pw-hrt.js.map +1 -0
- package/dist/pw-ksm.d.ts +4 -0
- package/dist/pw-ksm.d.ts.map +1 -0
- package/dist/pw-ksm.js +212 -0
- package/dist/pw-ksm.js.map +1 -0
- package/dist/pw-mp.d.ts +6 -0
- package/dist/pw-mp.d.ts.map +1 -0
- package/dist/pw-mp.js +171 -0
- package/dist/pw-mp.js.map +1 -0
- package/dist/pw-np12.d.ts +6 -0
- package/dist/pw-np12.d.ts.map +1 -0
- package/dist/pw-np12.js +234 -0
- package/dist/pw-np12.js.map +1 -0
- package/dist/pw-np3.d.ts +4 -0
- package/dist/pw-np3.d.ts.map +1 -0
- package/dist/pw-np3.js +218 -0
- package/dist/pw-np3.js.map +1 -0
- package/dist/pw-p40.d.ts +4 -0
- package/dist/pw-p40.d.ts.map +1 -0
- package/dist/pw-p40.js +221 -0
- package/dist/pw-p40.js.map +1 -0
- package/dist/pw-plugin.d.ts +8 -0
- package/dist/pw-plugin.d.ts.map +1 -0
- package/dist/pw-plugin.js +27 -0
- package/dist/pw-plugin.js.map +1 -0
- package/dist/pw-pp.d.ts +8 -0
- package/dist/pw-pp.d.ts.map +1 -0
- package/dist/pw-pp.js +341 -0
- package/dist/pw-pp.js.map +1 -0
- package/dist/pw-skyt.d.ts +4 -0
- package/dist/pw-skyt.d.ts.map +1 -0
- package/dist/pw-skyt.js +116 -0
- package/dist/pw-skyt.js.map +1 -0
- package/dist/pw-starpack.d.ts +4 -0
- package/dist/pw-starpack.d.ts.map +1 -0
- package/dist/pw-starpack.js +253 -0
- package/dist/pw-starpack.js.map +1 -0
- package/dist/pw-theplayer.d.ts +6 -0
- package/dist/pw-theplayer.d.ts.map +1 -0
- package/dist/pw-theplayer.js +367 -0
- package/dist/pw-theplayer.js.map +1 -0
- package/dist/pw-tp1.d.ts +4 -0
- package/dist/pw-tp1.d.ts.map +1 -0
- package/dist/pw-tp1.js +162 -0
- package/dist/pw-tp1.js.map +1 -0
- package/dist/pw-tp3.d.ts +6 -0
- package/dist/pw-tp3.d.ts.map +1 -0
- package/dist/pw-tp3.js +217 -0
- package/dist/pw-tp3.js.map +1 -0
- package/dist/pw-unic.d.ts +8 -0
- package/dist/pw-unic.d.ts.map +1 -0
- package/dist/pw-unic.js +285 -0
- package/dist/pw-unic.js.map +1 -0
- package/dist/pw-unic2.d.ts +4 -0
- package/dist/pw-unic2.d.ts.map +1 -0
- package/dist/pw-unic2.js +173 -0
- package/dist/pw-unic2.js.map +1 -0
- package/dist/pw-wn.d.ts +4 -0
- package/dist/pw-wn.d.ts.map +1 -0
- package/dist/pw-wn.js +82 -0
- package/dist/pw-wn.js.map +1 -0
- package/dist/pw-xann.d.ts +4 -0
- package/dist/pw-xann.d.ts.map +1 -0
- package/dist/pw-xann.js +220 -0
- package/dist/pw-xann.js.map +1 -0
- package/dist/pw-zen.d.ts +4 -0
- package/dist/pw-zen.d.ts.map +1 -0
- package/dist/pw-zen.js +162 -0
- package/dist/pw-zen.js.map +1 -0
- package/package.json +49 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-fuchs.js","sourceRoot":"","sources":["../src/pw-fuchs.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,sDAAsD;AACtD,sEAAsE;AACtE,6CAA6C;AAE7C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AAEjF,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,SAAS;AAE1C,SAAS,MAAM,CAAC,GAAa,EAAE,CAAS;IACtC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,qCAAqC;AACrC,SAAS,WAAW,CAAC,IAAgB,EAAE,KAAa;IAClD,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3E,sDAAsD;IACtD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAEjC,qCAAqC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACvD,GAAG,EAAE,CAAC,CAAC,uBAAuB;IAE9B,mEAAmE;IACnE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACnC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,yCAAyC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;IAClC,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAChB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,yBAAyB;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QAC5C,IAAI,QAAQ,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YAC1C,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,qEAAqE;IACrE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAEhB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;QAClB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;QAC1B,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAC;IACjC,CAAC;IAED,+CAA+C;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAE1B,uEAAuE;IACvE,GAAG,EAAE,CAAC,CAAC,YAAY;IACnB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IACtB,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAE5D,uDAAuD;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;YACtB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;IAEpD,wEAAwE;IACxE,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,oCAAoC;AACpC,SAAS,SAAS,CAAC,IAAgB,EAAE,KAAa;IAChD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IAC9B,IAAI,CAAC,GAAG,GAAG;QAAE,OAAO,GAAG,GAAG,CAAC,CAAC;IAE5B,kCAAkC;IAClC,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,GAAG,CAAC,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC,CAAC;IAE5D,oCAAoC;IACpC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;IAC9C,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,CAAC,CAAC,CAAC;IAEvD,qEAAqE;IACrE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAE,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU;QAC/C,IAAI,GAAG,GAAG,MAAM;YAAE,OAAO,CAAC,CAAC,CAAC;QAC5B,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,QAAQ;QAAE,OAAO,CAAC,CAAC,CAAC;IAE9C,+CAA+C;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAErB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,MAAM,MAAM,GAAa;IAC9B,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;CACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-heatseek.d.ts","sourceRoot":"","sources":["../src/pw-heatseek.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkD,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AA+L5F,gCAAgC;AAChC,eAAO,MAAM,KAAK,EAAE,QAInB,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Copyright (c) 2026 Bitti09 — modplayjs contributors
|
|
3
|
+
// Ported from: libxmp src/loaders/prowizard/heatseek.c (Heatseeker 1.0,
|
|
4
|
+
// depack_crb) — depack_crb :37-127, test_crb :135-247.
|
|
5
|
+
import { readmem16b, readmem24b, writeZero, pwReadTitle } from './prowiz.js';
|
|
6
|
+
const PW_MOD_MAGIC = 0x4d2e4b2e; // 'M.K.'
|
|
7
|
+
function put8(out, b) { out.push(b & 0xff); }
|
|
8
|
+
function put16b(out, v) { out.push((v >> 8) & 0xff, v & 0xff); }
|
|
9
|
+
function put32b(out, v) {
|
|
10
|
+
out.push((v >>> 24) & 0xff, (v >> 16) & 0xff, (v >> 8) & 0xff, v & 0xff);
|
|
11
|
+
}
|
|
12
|
+
/** depack_crb (heatseek.c:37-127). */
|
|
13
|
+
function depackCrb(data, start) {
|
|
14
|
+
let pos = start;
|
|
15
|
+
const out = [];
|
|
16
|
+
const u8 = () => data[pos++] ?? 0;
|
|
17
|
+
const u16 = () => { const v = readmem16b(data, pos); pos += 2; return v; };
|
|
18
|
+
writeZero(out, 20); // title
|
|
19
|
+
// Sample descriptions (heatseek.c:43-52)
|
|
20
|
+
let ssize = 0;
|
|
21
|
+
for (let i = 0; i < 31; i++) {
|
|
22
|
+
for (let k = 0; k < 22; k++)
|
|
23
|
+
out.push(0); // sample name
|
|
24
|
+
const size = u16();
|
|
25
|
+
put16b(out, size);
|
|
26
|
+
ssize += size * 2;
|
|
27
|
+
put8(out, u8()); // finetune
|
|
28
|
+
put8(out, u8()); // volume
|
|
29
|
+
put16b(out, u16()); // loop start
|
|
30
|
+
const loopSize = u16();
|
|
31
|
+
put16b(out, loopSize !== 0 ? loopSize : 1);
|
|
32
|
+
}
|
|
33
|
+
const patPos = u8();
|
|
34
|
+
put8(out, patPos);
|
|
35
|
+
put8(out, u8()); // NoiseTracker byte
|
|
36
|
+
// Pattern list (heatseek.c:56-63)
|
|
37
|
+
const ptable = [];
|
|
38
|
+
let patMax = 0;
|
|
39
|
+
let i = 0;
|
|
40
|
+
for (; i < 128; i++) {
|
|
41
|
+
const c1 = u8();
|
|
42
|
+
ptable.push(c1);
|
|
43
|
+
put8(out, c1);
|
|
44
|
+
if (c1 > patMax)
|
|
45
|
+
patMax = c1;
|
|
46
|
+
}
|
|
47
|
+
patMax++;
|
|
48
|
+
put32b(out, PW_MOD_MAGIC);
|
|
49
|
+
// Pattern data (heatseek.c:66-121): per-track saved positions (taddr)
|
|
50
|
+
// enable the 0xc0 repeat-block reference; 0x80 = skip rows (24-bit).
|
|
51
|
+
const taddr = new Array(512).fill(0);
|
|
52
|
+
for (i = 0; i < patMax; i++) {
|
|
53
|
+
const pat = new Uint8Array(1024);
|
|
54
|
+
for (let j = 0; j < 4; j++) {
|
|
55
|
+
const x = pos;
|
|
56
|
+
taddr[i * 4 + j] = x;
|
|
57
|
+
for (let k = 0; k < 64; k++) {
|
|
58
|
+
const y = k * 16 + j * 4;
|
|
59
|
+
let c1 = u8();
|
|
60
|
+
if (c1 === 0x80) {
|
|
61
|
+
k += readmem24b(data, pos);
|
|
62
|
+
pos += 3;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (c1 === 0xc0) {
|
|
66
|
+
const m = readmem24b(data, pos);
|
|
67
|
+
pos += 3;
|
|
68
|
+
const l = pos;
|
|
69
|
+
if (m >= 2048)
|
|
70
|
+
throw new Error('crb: bad pattern reference');
|
|
71
|
+
const saved = pos;
|
|
72
|
+
pos = taddr[m >> 2];
|
|
73
|
+
for (let m2 = 0; m2 < 64; m2++) {
|
|
74
|
+
const x2 = m2 * 16 + j * 4;
|
|
75
|
+
const cc = u8();
|
|
76
|
+
if (cc === 0x80) {
|
|
77
|
+
m2 += readmem24b(data, pos);
|
|
78
|
+
pos += 3;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
pat[x2] = cc;
|
|
82
|
+
pat[x2 + 1] = u8();
|
|
83
|
+
pat[x2 + 2] = u8();
|
|
84
|
+
pat[x2 + 3] = u8();
|
|
85
|
+
}
|
|
86
|
+
pos = saved;
|
|
87
|
+
void l;
|
|
88
|
+
k += 100;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
pat[y] = c1;
|
|
92
|
+
pat[y + 1] = u8();
|
|
93
|
+
pat[y + 2] = u8();
|
|
94
|
+
pat[y + 3] = u8();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
for (let k = 0; k < 1024; k++)
|
|
98
|
+
out.push(pat[k]);
|
|
99
|
+
}
|
|
100
|
+
// Sample data (heatseek.c:124-126)
|
|
101
|
+
for (let k = 0; k < ssize && pos < data.length; k++)
|
|
102
|
+
out.push(data[pos++] ?? 0);
|
|
103
|
+
return Uint8Array.from(out);
|
|
104
|
+
}
|
|
105
|
+
/** test_crb (heatseek.c:135-247). */
|
|
106
|
+
function testCrb(data, start) {
|
|
107
|
+
const s = data.length - start;
|
|
108
|
+
if (s < 378)
|
|
109
|
+
return 378 - s;
|
|
110
|
+
// Pattern table size (heatseek.c:139-143)
|
|
111
|
+
if (data[start + 248] > 0x7f || data[start + 248] === 0x00)
|
|
112
|
+
return -1;
|
|
113
|
+
// NoiseTracker byte (heatseek.c:145-148)
|
|
114
|
+
if (data[start + 249] !== 0x7f)
|
|
115
|
+
return -1;
|
|
116
|
+
// Samples (heatseek.c:150-180)
|
|
117
|
+
let ssize = 0;
|
|
118
|
+
for (let i = 0; i < 31; i++) {
|
|
119
|
+
const d = start + i * 8;
|
|
120
|
+
if (data[d + 2] > 0x0f)
|
|
121
|
+
return -1;
|
|
122
|
+
if (data[d + 3] > 0x40)
|
|
123
|
+
return -1;
|
|
124
|
+
const len = readmem16b(data, d) << 1;
|
|
125
|
+
const lstart = readmem16b(data, d + 4) << 1;
|
|
126
|
+
const lsize = readmem16b(data, d + 6) << 1;
|
|
127
|
+
if (len > 0xffff || lstart > 0xffff || lsize > 0xffff)
|
|
128
|
+
return -1;
|
|
129
|
+
if (lsize !== 0 && lsize !== 2 && lstart + lsize > len)
|
|
130
|
+
return -1;
|
|
131
|
+
if (lstart !== 0 && lsize <= 2)
|
|
132
|
+
return -1;
|
|
133
|
+
ssize += len;
|
|
134
|
+
}
|
|
135
|
+
if (ssize <= 4)
|
|
136
|
+
return -1;
|
|
137
|
+
// Pattern table (heatseek.c:186-195)
|
|
138
|
+
let max = 0;
|
|
139
|
+
for (let i = 0; i < 128; i++) {
|
|
140
|
+
if (data[start + 250 + i] > 0x7f)
|
|
141
|
+
return -1;
|
|
142
|
+
if (data[start + 250 + i] > max)
|
|
143
|
+
max = data[start + 250 + i];
|
|
144
|
+
}
|
|
145
|
+
max++;
|
|
146
|
+
// Upper bound of packed pattern data or the sample data size (heatseek.c:198-200)
|
|
147
|
+
const initData = Math.min(4 * max * 4 * 64, ssize);
|
|
148
|
+
if (s < 378 + initData)
|
|
149
|
+
return 378 + initData - s;
|
|
150
|
+
// Notes (heatseek.c:203-241)
|
|
151
|
+
let idx = 0;
|
|
152
|
+
for (let i = 0; i < max; i++) {
|
|
153
|
+
for (let j = 0; j < 4; j++) {
|
|
154
|
+
for (let k = 0; k < 64; k++) {
|
|
155
|
+
const d = start + 378 + idx;
|
|
156
|
+
if (idx >= initData) {
|
|
157
|
+
const left = 4 * 4 * (max - i - 1);
|
|
158
|
+
if (s < 378 + idx + left + 4)
|
|
159
|
+
return 378 + idx + left + 4 - s;
|
|
160
|
+
}
|
|
161
|
+
switch (data[d] & 0xc0) {
|
|
162
|
+
case 0x00:
|
|
163
|
+
if ((data[d] & 0x0f) > 0x03)
|
|
164
|
+
return -1;
|
|
165
|
+
idx += 4;
|
|
166
|
+
break;
|
|
167
|
+
case 0x40:
|
|
168
|
+
idx += 4;
|
|
169
|
+
break;
|
|
170
|
+
case 0x80:
|
|
171
|
+
if (data[d + 1] !== 0)
|
|
172
|
+
return -1;
|
|
173
|
+
k += data[d + 3];
|
|
174
|
+
idx += 4;
|
|
175
|
+
break;
|
|
176
|
+
case 0xc0:
|
|
177
|
+
if (data[d + 1] !== 0)
|
|
178
|
+
return -1;
|
|
179
|
+
k = 100;
|
|
180
|
+
idx += 4;
|
|
181
|
+
break;
|
|
182
|
+
default:
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
pwReadTitle(null, 0);
|
|
189
|
+
return 0;
|
|
190
|
+
}
|
|
191
|
+
/** pw_crb: "Heatseeker 1.0". */
|
|
192
|
+
export const pwCrb = {
|
|
193
|
+
name: 'Heatseeker 1.0',
|
|
194
|
+
test: testCrb,
|
|
195
|
+
depack: depackCrb,
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=pw-heatseek.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-heatseek.js","sourceRoot":"","sources":["../src/pw-heatseek.ts"],"names":[],"mappings":"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"}
|
package/dist/pw-hrt.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-hrt.d.ts","sourceRoot":"","sources":["../src/pw-hrt.ts"],"names":[],"mappings":"AAMA,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqGnE,+BAA+B;AAC/B,eAAO,MAAM,KAAK,EAAE,QAInB,CAAC"}
|
package/dist/pw-hrt.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Copyright (c) 2026 Bitti09 — modplayjs contributors
|
|
3
|
+
// Ported from: libxmp src/loaders/prowizard/hrt.c (Hornet Packer) —
|
|
4
|
+
// depack_hrt :32-106, test_hrt :108-133.
|
|
5
|
+
import { ptkTable, ptkIsValidNote } from './ptktable.js';
|
|
6
|
+
import { moveData, pwReadTitle } from './prowiz.js';
|
|
7
|
+
const PW_MOD_MAGIC = 0x4d2e4b2e; // 'M.K.'
|
|
8
|
+
function put8(out, b) { out.push(b & 0xff); }
|
|
9
|
+
function put32b(out, v) {
|
|
10
|
+
out.push((v >>> 24) & 0xff, (v >> 16) & 0xff, (v >> 8) & 0xff, v & 0xff);
|
|
11
|
+
}
|
|
12
|
+
/** depack_hrt (hrt.c:32-106). */
|
|
13
|
+
function depackHrt(data, start) {
|
|
14
|
+
let pos = start;
|
|
15
|
+
const out = [];
|
|
16
|
+
// header: 950 bytes moved verbatim, but sample addresses erased (hrt.c:35-44)
|
|
17
|
+
const buf = new Uint8Array(950);
|
|
18
|
+
for (let i = 0; i < 950; i++)
|
|
19
|
+
buf[i] = data[pos++] ?? 0;
|
|
20
|
+
for (let i = 0; i < 31; i++) {
|
|
21
|
+
const p = 38 + 30 * i;
|
|
22
|
+
buf[p] = 0;
|
|
23
|
+
buf[p + 1] = 0;
|
|
24
|
+
buf[p + 2] = 0;
|
|
25
|
+
buf[p + 3] = 0;
|
|
26
|
+
}
|
|
27
|
+
for (let i = 0; i < 950; i++)
|
|
28
|
+
out.push(buf[i]);
|
|
29
|
+
// samples size (hrt.c:46-48)
|
|
30
|
+
let ssize = 0;
|
|
31
|
+
for (let i = 0; i < 31; i++) {
|
|
32
|
+
ssize += ((buf[42 + 30 * i] << 8) | buf[43 + 30 * i]) * 2;
|
|
33
|
+
}
|
|
34
|
+
// song length + nst byte (hrt.c:49-51)
|
|
35
|
+
const len = data[pos++] ?? 0;
|
|
36
|
+
put8(out, len);
|
|
37
|
+
put8(out, data[pos++] ?? 0); // nst byte
|
|
38
|
+
// pattern list (hrt.c:52-55): 128 bytes
|
|
39
|
+
const plist = new Uint8Array(128);
|
|
40
|
+
for (let i = 0; i < 128; i++)
|
|
41
|
+
plist[i] = data[pos++] ?? 0;
|
|
42
|
+
for (let i = 0; i < 128; i++)
|
|
43
|
+
out.push(plist[i]);
|
|
44
|
+
// number of patterns (hrt.c:57-62)
|
|
45
|
+
let npat = 0;
|
|
46
|
+
for (let i = 0; i < 128; i++) {
|
|
47
|
+
if (plist[i] > npat)
|
|
48
|
+
npat = plist[i];
|
|
49
|
+
}
|
|
50
|
+
npat++;
|
|
51
|
+
put32b(out, PW_MOD_MAGIC);
|
|
52
|
+
// pattern data (hrt.c:66-96) at 1084: note halved, sample nibble packed
|
|
53
|
+
pos = start + 1084;
|
|
54
|
+
for (let i = 0; i < npat; i++) {
|
|
55
|
+
for (let j = 0; j < 256; j++) {
|
|
56
|
+
const b0 = data[pos++] ?? 0;
|
|
57
|
+
const b1 = data[pos++] ?? 0;
|
|
58
|
+
const b2 = data[pos++] ?? 0;
|
|
59
|
+
const b3 = data[pos++] ?? 0;
|
|
60
|
+
const b0h = Math.trunc(b0 / 2); // note halved; sample hi nibble kept
|
|
61
|
+
let c1 = b0h & 0xf0;
|
|
62
|
+
let c2 = 0;
|
|
63
|
+
if (b1 !== 0 && ptkIsValidNote(Math.trunc(b1 / 2))) {
|
|
64
|
+
c1 |= ptkTable[Math.trunc(b1 / 2)][0];
|
|
65
|
+
c2 = ptkTable[Math.trunc(b1 / 2)][1];
|
|
66
|
+
}
|
|
67
|
+
const c3 = ((b0h << 4) & 0xf0) | b2;
|
|
68
|
+
const c4 = b3;
|
|
69
|
+
put8(out, c1);
|
|
70
|
+
put8(out, c2);
|
|
71
|
+
put8(out, c3);
|
|
72
|
+
put8(out, c4);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// sample data (hrt.c:99-102)
|
|
76
|
+
moveData(data, pos, out, ssize);
|
|
77
|
+
return Uint8Array.from(out);
|
|
78
|
+
}
|
|
79
|
+
/** test_hrt (hrt.c:108-133). */
|
|
80
|
+
function testHrt(data, start) {
|
|
81
|
+
const s = data.length - start;
|
|
82
|
+
if (s < 1084)
|
|
83
|
+
return 1084 - s;
|
|
84
|
+
// "HRT!" at 1080 (hrt.c:111-113)
|
|
85
|
+
if (((data[start + 1080] << 24) | (data[start + 1081] << 16) | (data[start + 1082] << 8) | data[start + 1083]) !== 0x48525421) {
|
|
86
|
+
return -1;
|
|
87
|
+
}
|
|
88
|
+
for (let i = 0; i < 31; i++) {
|
|
89
|
+
const d = start + 20 + i * 30;
|
|
90
|
+
if (data[d + 24] > 0x0f)
|
|
91
|
+
return -1; // finetune
|
|
92
|
+
if (data[d + 25] > 0x40)
|
|
93
|
+
return -1; // volume
|
|
94
|
+
}
|
|
95
|
+
pwReadTitle(data.subarray(start), 20);
|
|
96
|
+
return 0;
|
|
97
|
+
}
|
|
98
|
+
/** pw_hrt: "Hornet Packer". */
|
|
99
|
+
export const pwHrt = {
|
|
100
|
+
name: 'Hornet Packer',
|
|
101
|
+
test: testHrt,
|
|
102
|
+
depack: depackHrt,
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=pw-hrt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-hrt.js","sourceRoot":"","sources":["../src/pw-hrt.ts"],"names":[],"mappings":"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"}
|
package/dist/pw-ksm.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-ksm.d.ts","sourceRoot":"","sources":["../src/pw-ksm.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AA+M9E,uCAAuC;AACvC,eAAO,MAAM,KAAK,EAAE,QAInB,CAAC"}
|
package/dist/pw-ksm.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Copyright (c) 2026 Bitti09 — modplayjs contributors
|
|
3
|
+
// Ported from: libxmp src/loaders/prowizard/ksm.c (Kefrens Sound Machine) —
|
|
4
|
+
// depack_ksm :32-190, test_ksm :192-250.
|
|
5
|
+
import { ptkTable, ptkIsValidNote } from './ptktable.js';
|
|
6
|
+
import { moveData, writeZero, pwReadTitle } from './prowiz.js';
|
|
7
|
+
const PW_MOD_MAGIC = 0x4d2e4b2e; // 'M.K.'
|
|
8
|
+
function put8(out, b) { out.push(b & 0xff); }
|
|
9
|
+
function put16b(out, v) { out.push((v >> 8) & 0xff, v & 0xff); }
|
|
10
|
+
function put32b(out, v) {
|
|
11
|
+
out.push((v >>> 24) & 0xff, (v >> 16) & 0xff, (v >> 8) & 0xff, v & 0xff);
|
|
12
|
+
}
|
|
13
|
+
/** depack_ksm (ksm.c:32-190). */
|
|
14
|
+
function depackKsm(data, start) {
|
|
15
|
+
let pos = start + 2; // title at offset 2 (ksm.c:37-39)
|
|
16
|
+
const out = [];
|
|
17
|
+
// title: move 13 bytes, pad 7 (ksm.c:38-39)
|
|
18
|
+
for (let i = 0; i < 13; i++)
|
|
19
|
+
out.push(data[pos++] ?? 0);
|
|
20
|
+
writeZero(out, 7);
|
|
21
|
+
// Sample headers (ksm.c:43-62) at 32: 15 × 32-byte records
|
|
22
|
+
pos = start + 32;
|
|
23
|
+
let ssize = 0;
|
|
24
|
+
for (let i = 0; i < 15; i++) {
|
|
25
|
+
writeZero(out, 22); // name
|
|
26
|
+
pos += 20; // 16 unknown + 4 addr bytes
|
|
27
|
+
const k = ((data[pos] << 8) | data[pos + 1]);
|
|
28
|
+
pos += 2; // size (raw)
|
|
29
|
+
put16b(out, Math.trunc(k / 2));
|
|
30
|
+
ssize += k;
|
|
31
|
+
put8(out, 0); // finetune
|
|
32
|
+
put8(out, data[pos++] ?? 0); // volume
|
|
33
|
+
pos += 1; // bypass 1 unknown byte
|
|
34
|
+
const j = ((data[pos] << 8) | data[pos + 1]);
|
|
35
|
+
pos += 2; // loop start
|
|
36
|
+
put16b(out, Math.trunc(j / 2));
|
|
37
|
+
const loopRest = k - j;
|
|
38
|
+
put16b(out, loopRest !== k ? Math.trunc(loopRest / 2) : 1);
|
|
39
|
+
pos += 6; // bypass 6 unknown bytes
|
|
40
|
+
}
|
|
41
|
+
// Pad samples 15..30 (ksm.c:64-68)
|
|
42
|
+
{
|
|
43
|
+
const pad = new Array(30).fill(0);
|
|
44
|
+
pad[29] = 1;
|
|
45
|
+
for (let i = 0; i < 16; i++)
|
|
46
|
+
out.push(...pad);
|
|
47
|
+
}
|
|
48
|
+
// Pattern list (ksm.c:71-88) at 512: 4 bytes per entry, 0xff-terminated.
|
|
49
|
+
pos = start + 512;
|
|
50
|
+
const trknum = [];
|
|
51
|
+
let maxTrknum = 0;
|
|
52
|
+
let len = 0;
|
|
53
|
+
for (; len < 128; len++) {
|
|
54
|
+
const row = [data[pos] ?? 0, data[pos + 1] ?? 0, data[pos + 2] ?? 0, data[pos + 3] ?? 0];
|
|
55
|
+
pos += 4;
|
|
56
|
+
trknum.push(row);
|
|
57
|
+
if (row[0] === 0xff)
|
|
58
|
+
break;
|
|
59
|
+
for (const v of row) {
|
|
60
|
+
if (v > maxTrknum)
|
|
61
|
+
maxTrknum = v;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
put8(out, len);
|
|
65
|
+
put8(out, 0x7f); // ntk byte
|
|
66
|
+
// Sort track numbers (ksm.c:91-119): dedup 4-tuples → plist
|
|
67
|
+
const plist = new Array(128).fill(0);
|
|
68
|
+
let c5 = 0;
|
|
69
|
+
for (let i = 0; i < len; i++) {
|
|
70
|
+
if (i === 0) {
|
|
71
|
+
plist[0] = c5;
|
|
72
|
+
c5++;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
let status = 1;
|
|
76
|
+
for (let j = 0; j < i; j++) {
|
|
77
|
+
status = 1;
|
|
78
|
+
for (let k = 0; k < 4; k++) {
|
|
79
|
+
if (trknum[j][k] !== trknum[i][k]) {
|
|
80
|
+
status = 0;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (status === 1) {
|
|
85
|
+
plist[i] = plist[j];
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (status === 0) {
|
|
90
|
+
plist[i] = c5;
|
|
91
|
+
c5++;
|
|
92
|
+
}
|
|
93
|
+
status = 1;
|
|
94
|
+
}
|
|
95
|
+
// Real track numbers for existing patterns (ksm.c:122-142)
|
|
96
|
+
const realTnum = [];
|
|
97
|
+
let c1count = 0;
|
|
98
|
+
for (let i = 0; i < len; i++) {
|
|
99
|
+
if (i === 0) {
|
|
100
|
+
realTnum.push([trknum[0][0], trknum[0][1], trknum[0][2], trknum[0][3]]);
|
|
101
|
+
c1count++;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
let status = 1;
|
|
105
|
+
for (let j = 0; j < i; j++) {
|
|
106
|
+
status = 1;
|
|
107
|
+
if (plist[i] === plist[j]) {
|
|
108
|
+
status = 0;
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (status === 0)
|
|
113
|
+
continue;
|
|
114
|
+
realTnum.push([trknum[i][0], trknum[i][1], trknum[i][2], trknum[i][3]]);
|
|
115
|
+
c1count++;
|
|
116
|
+
status = 1;
|
|
117
|
+
}
|
|
118
|
+
void c5;
|
|
119
|
+
void c1count;
|
|
120
|
+
// Pattern list + ID (ksm.c:144-146)
|
|
121
|
+
for (let i = 0; i < 128; i++)
|
|
122
|
+
put8(out, plist[i]);
|
|
123
|
+
put32b(out, PW_MOD_MAGIC);
|
|
124
|
+
// Pattern data (ksm.c:149-177): tracks at 1536 + 192 × trknum, 3-byte cells
|
|
125
|
+
for (let i = 0; i < c1count; i++) {
|
|
126
|
+
const tmp = new Uint8Array(1024);
|
|
127
|
+
const tdata = [];
|
|
128
|
+
for (let k = 0; k < 4; k++) {
|
|
129
|
+
pos = start + 1536 + 192 * (realTnum[i][k] ?? 0);
|
|
130
|
+
const td = new Uint8Array(192);
|
|
131
|
+
for (let t = 0; t < 192; t++)
|
|
132
|
+
td[t] = data[pos++] ?? 0;
|
|
133
|
+
tdata.push(td);
|
|
134
|
+
}
|
|
135
|
+
for (let j = 0; j < 64; j++) {
|
|
136
|
+
const x = j * 16;
|
|
137
|
+
for (let k = 0; k < 4; k++) {
|
|
138
|
+
const t = tdata[k];
|
|
139
|
+
const tBase = j * 3;
|
|
140
|
+
// Sanity (ksm.c:159-162)
|
|
141
|
+
if (!ptkIsValidNote(t[tBase] ?? 0))
|
|
142
|
+
throw new Error('ksm: invalid note');
|
|
143
|
+
// 2-byte period from ptk (ksm.c:164)
|
|
144
|
+
tmp[x + k * 4] = ptkTable[t[tBase] ?? 0][0];
|
|
145
|
+
tmp[x + k * 4 + 1] = ptkTable[t[tBase] ?? 0][1];
|
|
146
|
+
// sample/fxt byte with 0x0d → 0x0a normalization (ksm.c:165-167)
|
|
147
|
+
let t1 = t[tBase + 1];
|
|
148
|
+
if ((t1 & 0x0f) === 0x0d)
|
|
149
|
+
t1 -= 0x03;
|
|
150
|
+
tmp[x + k * 4 + 2] = t1;
|
|
151
|
+
tmp[x + k * 4 + 3] = t[tBase + 2];
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
for (let k = 0; k < 1024; k++)
|
|
155
|
+
out.push(tmp[k]);
|
|
156
|
+
}
|
|
157
|
+
// Sample data (ksm.c:180-183)
|
|
158
|
+
moveData(data, start + 1536 + 192 * (maxTrknum + 1), out, ssize);
|
|
159
|
+
return Uint8Array.from(out);
|
|
160
|
+
}
|
|
161
|
+
/** test_ksm (ksm.c:192-250). */
|
|
162
|
+
function testKsm(data, start) {
|
|
163
|
+
const s = data.length - start;
|
|
164
|
+
if (s < 1536)
|
|
165
|
+
return 1536 - s;
|
|
166
|
+
// test 1 (ksm.c:197-200): 'M.' at 0
|
|
167
|
+
if (data[start] !== 0x4d || data[start + 1] !== 0x2e)
|
|
168
|
+
return -1;
|
|
169
|
+
// test "a" (ksm.c:203-205)
|
|
170
|
+
if (data[start + 15] !== 0x61)
|
|
171
|
+
return -1;
|
|
172
|
+
// volumes (ksm.c:207-211)
|
|
173
|
+
for (let i = 0; i < 15; i++) {
|
|
174
|
+
if (data[start + 54 + i * 32] > 0x40)
|
|
175
|
+
return -1;
|
|
176
|
+
}
|
|
177
|
+
// Highest track number (ksm.c:214-230)
|
|
178
|
+
let maxTrk = 0;
|
|
179
|
+
let i = 0;
|
|
180
|
+
for (; i < 1024; i++) {
|
|
181
|
+
const x = data[start + i + 512];
|
|
182
|
+
if (x === 0xff)
|
|
183
|
+
break;
|
|
184
|
+
if (x > maxTrk)
|
|
185
|
+
maxTrk = x;
|
|
186
|
+
}
|
|
187
|
+
if (i === 1024)
|
|
188
|
+
return -1;
|
|
189
|
+
if (maxTrk === 0)
|
|
190
|
+
return -1;
|
|
191
|
+
// PW_REQUEST_DATA(s, 1536 + max_trk * 192 + 64 * 3)
|
|
192
|
+
const need = 1536 + maxTrk * 192 + 64 * 3;
|
|
193
|
+
if (s < need)
|
|
194
|
+
return need - s;
|
|
195
|
+
// Track data sanity (ksm.c:236-244)
|
|
196
|
+
for (i = 0; i <= maxTrk; i++) {
|
|
197
|
+
const d = start + 1536 + i * 192;
|
|
198
|
+
for (let j = 0; j < 64; j++) {
|
|
199
|
+
if (data[d + j * 3] > 0x24)
|
|
200
|
+
return -1;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
pwReadTitle(data.subarray(start + 2), 13);
|
|
204
|
+
return 0;
|
|
205
|
+
}
|
|
206
|
+
/** pw_ksm: "Kefrens Sound Machine". */
|
|
207
|
+
export const pwKsm = {
|
|
208
|
+
name: 'Kefrens Sound Machine',
|
|
209
|
+
test: testKsm,
|
|
210
|
+
depack: depackKsm,
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=pw-ksm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-ksm.js","sourceRoot":"","sources":["../src/pw-ksm.ts"],"names":[],"mappings":"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"}
|
package/dist/pw-mp.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-mp.d.ts","sourceRoot":"","sources":["../src/pw-mp.ts"],"names":[],"mappings":"AAMA,OAAO,EAA4D,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAkKtG,2CAA2C;AAC3C,eAAO,MAAM,MAAM,EAAE,QAIpB,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,QAAQ,EAAE,QAItB,CAAC"}
|