@modplayjs/fmt-prowizard 0.0.0-stage → 0.2.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/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
package/dist/pw-unic2.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Copyright (c) 2026 Bitti09 — modplayjs contributors
|
|
3
|
+
// Ported from: libxmp src/loaders/prowizard/unic2.c (Unic Tracker 2) —
|
|
4
|
+
// depack_unic2 :40-131, test_unic2 :134-239.
|
|
5
|
+
import { ptkTable, ptkIsValidNote } from './ptktable.js';
|
|
6
|
+
import { readmem16b, readmem32b, moveData, writeZero, pwReadTitle } from './prowiz.js';
|
|
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_unic2 (unic2.c:40-131). */
|
|
13
|
+
function depackUnic2(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 (unic2.c:44)
|
|
19
|
+
// Sample headers (unic2.c:47-86) — same finetune scheme as unic.c.
|
|
20
|
+
let ssize = 0;
|
|
21
|
+
for (let i = 0; i < 31; i++) {
|
|
22
|
+
// sample name (unic2.c:48): move 20 bytes verbatim
|
|
23
|
+
for (let k = 0; k < 20; k++)
|
|
24
|
+
out.push(data[pos++] ?? 0);
|
|
25
|
+
put8(out, 0);
|
|
26
|
+
put8(out, 0);
|
|
27
|
+
// fine on? (unic2.c:51-62)
|
|
28
|
+
const c1 = u8();
|
|
29
|
+
const c2 = u8();
|
|
30
|
+
const j = (c1 << 8) + c2;
|
|
31
|
+
let fine = 0;
|
|
32
|
+
if (j !== 0) {
|
|
33
|
+
fine = j < 256 ? 0x10 - c2 : 0x100 - c2;
|
|
34
|
+
}
|
|
35
|
+
const len = u16();
|
|
36
|
+
put16b(out, len);
|
|
37
|
+
ssize += len << 1;
|
|
38
|
+
u8();
|
|
39
|
+
put8(out, fine);
|
|
40
|
+
put8(out, u8()); // vol
|
|
41
|
+
let lstart = u16();
|
|
42
|
+
const lsize = u16();
|
|
43
|
+
if (lstart * 2 + lsize <= len && lstart !== 0) {
|
|
44
|
+
lstart <<= 1;
|
|
45
|
+
}
|
|
46
|
+
put16b(out, lstart);
|
|
47
|
+
put16b(out, lsize);
|
|
48
|
+
}
|
|
49
|
+
const npat = u8();
|
|
50
|
+
put8(out, npat);
|
|
51
|
+
put8(out, 0x7f);
|
|
52
|
+
u8();
|
|
53
|
+
// Pattern table (unic2.c:92-94)
|
|
54
|
+
const tmp = [];
|
|
55
|
+
for (let i = 0; i < 128; i++)
|
|
56
|
+
tmp.push(u8());
|
|
57
|
+
for (let i = 0; i < 128; i++)
|
|
58
|
+
put8(out, tmp[i]);
|
|
59
|
+
// Highest pattern (unic2.c:96-100)
|
|
60
|
+
let maxpat = 0;
|
|
61
|
+
for (let i = 0; i < 128; i++) {
|
|
62
|
+
if (tmp[i] > maxpat)
|
|
63
|
+
maxpat = tmp[i];
|
|
64
|
+
}
|
|
65
|
+
maxpat++;
|
|
66
|
+
put32b(out, 0x4d2e4b2e); // M.K.
|
|
67
|
+
// Pattern data (unic2.c:103-128): 3-byte cells.
|
|
68
|
+
for (let i = 0; i < maxpat; i++) {
|
|
69
|
+
for (let j = 0; j < 256; j++) {
|
|
70
|
+
const c1 = u8();
|
|
71
|
+
const c2 = u8();
|
|
72
|
+
const c3 = u8();
|
|
73
|
+
const ins = ((c1 >> 2) & 0x10) | ((c2 >> 4) & 0x0f);
|
|
74
|
+
const note = c1 & 0x3f;
|
|
75
|
+
if (!ptkIsValidNote(note))
|
|
76
|
+
throw new Error('unic2: invalid note');
|
|
77
|
+
const fxt = c2 & 0x0f;
|
|
78
|
+
let fxp = c3;
|
|
79
|
+
if (fxt === 0x0d) {
|
|
80
|
+
const ones = fxp % 10;
|
|
81
|
+
const tens = Math.trunc(fxp / 10);
|
|
82
|
+
fxp = 16 * tens + ones;
|
|
83
|
+
}
|
|
84
|
+
out.push((ins & 0xf0) | ptkTable[note][0]);
|
|
85
|
+
out.push(ptkTable[note][1]);
|
|
86
|
+
out.push(((ins << 4) & 0xf0) | fxt);
|
|
87
|
+
out.push(fxp);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Sample data (unic2.c:131)
|
|
91
|
+
moveData(data, pos, out, ssize);
|
|
92
|
+
return Uint8Array.from(out);
|
|
93
|
+
}
|
|
94
|
+
/** test_unic2 (unic2.c:134-239). */
|
|
95
|
+
function testUnic2(data, start) {
|
|
96
|
+
const s = data.length - start;
|
|
97
|
+
if (s < 1084)
|
|
98
|
+
return 1084 - s;
|
|
99
|
+
if (readmem32b(data, start + 1080) === 0x00000000)
|
|
100
|
+
return -1;
|
|
101
|
+
// Samples (unic2.c:146-176) — note the d+22/26/28 field offsets.
|
|
102
|
+
let ssize = 0;
|
|
103
|
+
let maxIns = 0;
|
|
104
|
+
for (let i = 0; i < 31; i++) {
|
|
105
|
+
const d = start + i * 30;
|
|
106
|
+
const size = readmem16b(data, d + 22) << 1;
|
|
107
|
+
const lstart = readmem16b(data, d + 26) << 1;
|
|
108
|
+
const lsize = readmem16b(data, d + 28) << 1;
|
|
109
|
+
ssize += size;
|
|
110
|
+
if (size + 2 < lstart + lsize)
|
|
111
|
+
return -1;
|
|
112
|
+
if (size > 0xffff || lstart > 0xffff || lsize > 0xffff)
|
|
113
|
+
return -1;
|
|
114
|
+
if (data[d + 25] > 0x40)
|
|
115
|
+
return -1;
|
|
116
|
+
if ((readmem16b(data, d + 20) !== 0) && size === 0)
|
|
117
|
+
return -1;
|
|
118
|
+
if (data[d + 25] !== 0 && size === 0)
|
|
119
|
+
return -1;
|
|
120
|
+
if (size !== 0)
|
|
121
|
+
maxIns = i + 1;
|
|
122
|
+
}
|
|
123
|
+
if (ssize <= 2)
|
|
124
|
+
return -1;
|
|
125
|
+
// Pattern list size (unic2.c:179-198) at 930/932.
|
|
126
|
+
const len = data[start + 930];
|
|
127
|
+
if (len === 0 || len > 127)
|
|
128
|
+
return -1;
|
|
129
|
+
let psize = 0;
|
|
130
|
+
let i = 0;
|
|
131
|
+
for (; i < len; i++) {
|
|
132
|
+
const x = data[start + 932 + i];
|
|
133
|
+
if (x > 127)
|
|
134
|
+
return -1;
|
|
135
|
+
if (x > psize)
|
|
136
|
+
psize = x;
|
|
137
|
+
}
|
|
138
|
+
for (i += 2; i !== 128; i++) {
|
|
139
|
+
if (data[start + 932 + i] !== 0)
|
|
140
|
+
return -1;
|
|
141
|
+
}
|
|
142
|
+
psize++;
|
|
143
|
+
psize <<= 8;
|
|
144
|
+
// PW_REQUEST_DATA(s, 1060 + psize * 3 + 2)
|
|
145
|
+
if (s < 1060 + psize * 3 + 2)
|
|
146
|
+
return 1060 + psize * 3 + 2 - s;
|
|
147
|
+
// Pattern data sanity (unic2.c:204-231)
|
|
148
|
+
for (i = 0; i < psize; i++) {
|
|
149
|
+
const d = start + 1060 + i * 3;
|
|
150
|
+
if (data[d] > 0x74)
|
|
151
|
+
return -1;
|
|
152
|
+
if ((data[d] & 0x3f) > 0x24)
|
|
153
|
+
return -1;
|
|
154
|
+
if ((data[d + 1] & 0x0f) === 0x0c && data[d + 2] > 0x40)
|
|
155
|
+
return -1;
|
|
156
|
+
if ((data[d + 1] & 0x0f) === 0x0b && data[d + 2] > 0x7f)
|
|
157
|
+
return -1;
|
|
158
|
+
if ((data[d + 1] & 0x0f) === 0x0d && data[d + 2] > 0x40)
|
|
159
|
+
return -1;
|
|
160
|
+
const ins = ((data[d] >> 2) & 0x30) | ((data[d + 2] >> 4) & 0x0f);
|
|
161
|
+
if (ins > maxIns)
|
|
162
|
+
return -1;
|
|
163
|
+
}
|
|
164
|
+
pwReadTitle(null, 0);
|
|
165
|
+
return 0;
|
|
166
|
+
}
|
|
167
|
+
/** pw_unic2: "Unic Tracker 2". */
|
|
168
|
+
export const pwUnic2 = {
|
|
169
|
+
name: 'Unic Tracker 2',
|
|
170
|
+
test: testUnic2,
|
|
171
|
+
depack: depackUnic2,
|
|
172
|
+
};
|
|
173
|
+
//# sourceMappingURL=pw-unic2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-unic2.js","sourceRoot":"","sources":["../src/pw-unic2.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,sDAAsD;AACtD,uEAAuE;AACvE,6CAA6C;AAE7C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AAEtG,SAAS,IAAI,CAAC,GAAa,EAAE,CAAS,IAAU,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrE,SAAS,MAAM,CAAC,GAAa,EAAE,CAAS,IAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxF,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,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAClC,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,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB;IAEzC,mEAAmE;IACnE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,mDAAmD;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEb,2BAA2B;QAC3B,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAChB,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;QAElB,EAAE,EAAE,CAAC;QACL,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;QAEvB,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;QACpB,IAAI,MAAM,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,KAAK,CAAC,CAAC;QACf,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC;IAClB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChB,EAAE,EAAE,CAAC;IAEL,gCAAgC;IAChC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;IAEjD,mCAAmC;IACnC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,CAAC,CAAE,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;IACzC,CAAC;IACD,MAAM,EAAE,CAAC;IAET,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO;IAEhC,gDAAgD;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAChB,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAChB,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAEhB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAElE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;YACtB,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;gBAClC,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;YACzB,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAEhC,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,IAAI;QAAE,OAAO,IAAI,GAAG,CAAC,CAAC;IAE9B,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC,CAAC;IAE7D,iEAAiE;IACjE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5C,KAAK,IAAI,IAAI,CAAC;QAEd,IAAI,IAAI,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK;YAAE,OAAO,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,MAAM,IAAI,MAAM,GAAG,MAAM,IAAI,KAAK,GAAG,MAAM;YAAE,OAAO,CAAC,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAE,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QACjD,IAAI,IAAI,KAAK,CAAC;YAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IAE1B,kDAAkD;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAE,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG;QAAE,OAAO,CAAC,CAAC,CAAC;IAEtC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAE,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG;YAAE,OAAO,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,KAAK;YAAE,KAAK,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,KAAK,EAAE,CAAC;IACR,KAAK,KAAK,CAAC,CAAC;IAEZ,2CAA2C;IAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9D,wCAAwC;IACxC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,CAAC,CAAE,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAErE,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACpE,IAAI,GAAG,GAAG,MAAM;YAAE,OAAO,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAErB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,MAAM,OAAO,GAAa;IAC/B,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;CACpB,CAAC"}
|
package/dist/pw-wn.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-wn.d.ts","sourceRoot":"","sources":["../src/pw-wn.ts"],"names":[],"mappings":"AAMA,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmFnE,8BAA8B;AAC9B,eAAO,MAAM,IAAI,EAAE,QAIlB,CAAC"}
|
package/dist/pw-wn.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Copyright (c) 2026 Bitti09 — modplayjs contributors
|
|
3
|
+
// Ported from: libxmp src/loaders/prowizard/wn.c (Wanton Packer) —
|
|
4
|
+
// depack_wn :32-88, test_wn :90-113.
|
|
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_wn (wn.c:32-88) — nearly a straight MOD copy with cell rewrite. */
|
|
13
|
+
function depackWn(data, start) {
|
|
14
|
+
let pos = start;
|
|
15
|
+
const out = [];
|
|
16
|
+
// header: move 950 bytes verbatim (wn.c:36)
|
|
17
|
+
for (let i = 0; i < 950; i++)
|
|
18
|
+
out.push(data[pos++] ?? 0);
|
|
19
|
+
// whole sample size (wn.c:38-42): sizes at 42 + i*30
|
|
20
|
+
let ssize = 0;
|
|
21
|
+
for (let i = 0; i < 31; i++) {
|
|
22
|
+
ssize += ((data[start + 42 + i * 30] << 8) | data[start + 43 + i * 30]) * 2;
|
|
23
|
+
}
|
|
24
|
+
// pattern list size (wn.c:45-47)
|
|
25
|
+
const npat = data[start + 950];
|
|
26
|
+
put8(out, npat);
|
|
27
|
+
// order table + ntk byte (wn.c:48-50): 129 bytes (128 orders + 0x7f)
|
|
28
|
+
for (let i = 0; i < 129; i++)
|
|
29
|
+
out.push(data[start + 951 + i] ?? 0);
|
|
30
|
+
// ptk ID (wn.c:52)
|
|
31
|
+
put32b(out, PW_MOD_MAGIC);
|
|
32
|
+
// highest pattern number (wn.c:54-59): from tmp[i+1] = orders at 952+
|
|
33
|
+
let max = 0;
|
|
34
|
+
for (let i = 0; i < 128; i++) {
|
|
35
|
+
if (data[start + 951 + i + 1] > max)
|
|
36
|
+
max = data[start + 951 + i + 1];
|
|
37
|
+
}
|
|
38
|
+
max++;
|
|
39
|
+
// pattern data (wn.c:61-83): 4-byte cells with note nibble rewrite
|
|
40
|
+
pos = start + 1084;
|
|
41
|
+
for (let i = 0; i < max; i++) {
|
|
42
|
+
for (let j = 0; j < 256; j++) {
|
|
43
|
+
const c1 = data[pos++] ?? 0;
|
|
44
|
+
const c2 = data[pos++] ?? 0;
|
|
45
|
+
const c3 = data[pos++] ?? 0;
|
|
46
|
+
const c4 = data[pos++] ?? 0;
|
|
47
|
+
if (!ptkIsValidNote(Math.trunc(c1 / 2)))
|
|
48
|
+
throw new Error('wn: invalid note');
|
|
49
|
+
put8(out, (c2 & 0xf0) | ptkTable[Math.trunc(c1 / 2)][0]);
|
|
50
|
+
put8(out, ptkTable[Math.trunc(c1 / 2)][1]);
|
|
51
|
+
put8(out, ((c2 << 4) & 0xf0) | c3);
|
|
52
|
+
put8(out, c4);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// sample data (wn.c:86)
|
|
56
|
+
moveData(data, pos, out, ssize);
|
|
57
|
+
return Uint8Array.from(out);
|
|
58
|
+
}
|
|
59
|
+
/** test_wn (wn.c:90-113). */
|
|
60
|
+
function testWn(data, start) {
|
|
61
|
+
const s = data.length - start;
|
|
62
|
+
if (s < 1082)
|
|
63
|
+
return 1082 - s;
|
|
64
|
+
// test 1 (wn.c:94-97): 'WN' at 1080
|
|
65
|
+
if (data[start + 1080] !== 0x57 || data[start + 1081] !== 0x4e)
|
|
66
|
+
return -1;
|
|
67
|
+
// test 2 (wn.c:99-102): ntk byte
|
|
68
|
+
if (data[start + 951] !== 0x7f)
|
|
69
|
+
return -1;
|
|
70
|
+
// test 3 (wn.c:104-107)
|
|
71
|
+
if (data[start + 950] > 0x7f)
|
|
72
|
+
return -1;
|
|
73
|
+
pwReadTitle(data.subarray(start), 20);
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
/** pw_wn: "Wanton Packer". */
|
|
77
|
+
export const pwWn = {
|
|
78
|
+
name: 'Wanton Packer',
|
|
79
|
+
test: testWn,
|
|
80
|
+
depack: depackWn,
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=pw-wn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-wn.js","sourceRoot":"","sources":["../src/pw-wn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-xann.d.ts","sourceRoot":"","sources":["../src/pw-xann.ts"],"names":[],"mappings":"AAMA,OAAO,EAA4D,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAsKtG,8BAA8B;AAC9B,eAAO,MAAM,MAAM,EAAE,QAIpB,CAAC"}
|
package/dist/pw-xann.js
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Copyright (c) 2026 Bitti09 — modplayjs contributors
|
|
3
|
+
// Ported from: libxmp src/loaders/prowizard/xann.c (XANN Packer) —
|
|
4
|
+
// depack_xann :34-240, test_xann :243-296.
|
|
5
|
+
import { ptkTable, ptkIsValidNote } from './ptktable.js';
|
|
6
|
+
import { readmem16b, readmem32b, moveData, writeZero, pwReadTitle } from './prowiz.js';
|
|
7
|
+
/** SMP_DESC_ADDRESS (xann.c:24) / PAT_DATA_ADDRESS (xann.c:25). */
|
|
8
|
+
const SMP_DESC_ADDRESS = 0x206;
|
|
9
|
+
const PAT_DATA_ADDRESS = 0x43c;
|
|
10
|
+
function put8(out, b) { out.push(b & 0xff); }
|
|
11
|
+
function put16b(out, v) { out.push((v >> 8) & 0xff, v & 0xff); }
|
|
12
|
+
function put32b(out, v) {
|
|
13
|
+
out.push((v >>> 24) & 0xff, (v >> 16) & 0xff, (v >> 8) & 0xff, v & 0xff);
|
|
14
|
+
}
|
|
15
|
+
/** depack_xann (xann.c:34-240). */
|
|
16
|
+
function depackXann(data, start) {
|
|
17
|
+
let pos = start;
|
|
18
|
+
const out = [];
|
|
19
|
+
const u8 = () => data[pos++] ?? 0;
|
|
20
|
+
const u16 = () => { const v = readmem16b(data, pos); pos += 2; return v; };
|
|
21
|
+
const u32 = () => { const v = readmem32b(data, pos); pos += 4; return v; };
|
|
22
|
+
writeZero(out, 20); // title
|
|
23
|
+
// 31 sample headers (xann.c:41-63) at SMP_DESC_ADDRESS
|
|
24
|
+
pos = start + SMP_DESC_ADDRESS;
|
|
25
|
+
let ssize = 0;
|
|
26
|
+
for (let i = 0; i < 31; i++) {
|
|
27
|
+
writeZero(out, 22); // sample name
|
|
28
|
+
const fine = u8();
|
|
29
|
+
const vol = u8();
|
|
30
|
+
let j = u32(); // loop start address
|
|
31
|
+
const lsize = u16();
|
|
32
|
+
const k = u32(); // sample address
|
|
33
|
+
const size = u16();
|
|
34
|
+
ssize += size * 2;
|
|
35
|
+
j = j - k; // loop start value (xann.c:56)
|
|
36
|
+
put16b(out, size);
|
|
37
|
+
put8(out, fine);
|
|
38
|
+
put8(out, vol);
|
|
39
|
+
put16b(out, Math.trunc(j / 2));
|
|
40
|
+
put16b(out, lsize);
|
|
41
|
+
u16(); // bypass two unknown bytes
|
|
42
|
+
}
|
|
43
|
+
// Pattern table (xann.c:66-81) from offset 0
|
|
44
|
+
pos = start;
|
|
45
|
+
const ptable = new Array(128).fill(0);
|
|
46
|
+
let pat = 0;
|
|
47
|
+
let c5 = 0;
|
|
48
|
+
for (; c5 < 128; c5++) {
|
|
49
|
+
const k = u32();
|
|
50
|
+
if (k === 0)
|
|
51
|
+
break;
|
|
52
|
+
ptable[c5] = Math.trunc((k - 0x3c) / 1024) - 1;
|
|
53
|
+
if (ptable[c5] > pat)
|
|
54
|
+
pat = ptable[c5];
|
|
55
|
+
}
|
|
56
|
+
pat++; // starts at $00 (xann.c:80)
|
|
57
|
+
put8(out, c5); // number of patterns
|
|
58
|
+
put8(out, 0x7f); // noisetracker byte
|
|
59
|
+
for (let i = 0; i < 128; i++)
|
|
60
|
+
put8(out, ptable[i]);
|
|
61
|
+
put32b(out, 0x4d2e4b2e); // M.K.
|
|
62
|
+
// Pattern data (xann.c:86-236) with the XANN effect translation table
|
|
63
|
+
pos = start + PAT_DATA_ADDRESS;
|
|
64
|
+
for (let i = 0; i < pat; i++) {
|
|
65
|
+
for (let j = 0; j < 256; j++) {
|
|
66
|
+
const ins = Math.trunc((u8() >> 3) & 0x1f);
|
|
67
|
+
const note = u8();
|
|
68
|
+
let fxt = u8();
|
|
69
|
+
let fxp = u8();
|
|
70
|
+
if (!ptkIsValidNote(note >> 1))
|
|
71
|
+
throw new Error('xann: invalid note');
|
|
72
|
+
switch (fxt) {
|
|
73
|
+
case 0x00:
|
|
74
|
+
fxt = 0x00;
|
|
75
|
+
break; // no fxt
|
|
76
|
+
case 0x04:
|
|
77
|
+
fxt = 0x00;
|
|
78
|
+
break; // arpeggio
|
|
79
|
+
case 0x08:
|
|
80
|
+
fxt = 0x01;
|
|
81
|
+
break; // portamento up
|
|
82
|
+
case 0x0c:
|
|
83
|
+
fxt = 0x02;
|
|
84
|
+
break; // portamento down
|
|
85
|
+
case 0x10:
|
|
86
|
+
fxt = 0x03;
|
|
87
|
+
break; // tone porta, no fxp
|
|
88
|
+
case 0x14:
|
|
89
|
+
fxt = 0x03;
|
|
90
|
+
break; // tone portamento
|
|
91
|
+
case 0x18:
|
|
92
|
+
fxt = 0x04;
|
|
93
|
+
break; // vibrato, no fxp
|
|
94
|
+
case 0x1c:
|
|
95
|
+
fxt = 0x04;
|
|
96
|
+
break; // vibrato
|
|
97
|
+
case 0x24:
|
|
98
|
+
fxt = 0x05;
|
|
99
|
+
break; // tone porta + vol down
|
|
100
|
+
case 0x28: // vibrato + vol UP
|
|
101
|
+
fxt = 0x06;
|
|
102
|
+
fxp = (((fxp << 4) & 0xf0) | ((fxp >> 4) & 0x0f)) & 0xff;
|
|
103
|
+
break;
|
|
104
|
+
case 0x2c:
|
|
105
|
+
fxt = 0x06;
|
|
106
|
+
break; // vibrato + vol DOWN
|
|
107
|
+
case 0x38:
|
|
108
|
+
fxt = 0x09;
|
|
109
|
+
break; // sample offset
|
|
110
|
+
case 0x3c: // volume slide up
|
|
111
|
+
fxt = 0x0a;
|
|
112
|
+
fxp = (((fxp << 4) & 0xf0) | ((fxp >> 4) & 0x0f)) & 0xff;
|
|
113
|
+
break;
|
|
114
|
+
case 0x40:
|
|
115
|
+
fxt = 0x0a;
|
|
116
|
+
break; // volume slide down
|
|
117
|
+
case 0x44:
|
|
118
|
+
fxt = 0x0b;
|
|
119
|
+
break; // position jump
|
|
120
|
+
case 0x48:
|
|
121
|
+
fxt = 0x0c;
|
|
122
|
+
break; // set volume
|
|
123
|
+
case 0x4c:
|
|
124
|
+
fxt = 0x0d;
|
|
125
|
+
break; // pattern break
|
|
126
|
+
case 0x50:
|
|
127
|
+
fxt = 0x0f;
|
|
128
|
+
break; // set speed
|
|
129
|
+
case 0x58:
|
|
130
|
+
fxt = 0x0e;
|
|
131
|
+
fxp = 0x01;
|
|
132
|
+
break; // set filter
|
|
133
|
+
case 0x5c:
|
|
134
|
+
fxt = 0x0e;
|
|
135
|
+
fxp |= 0x10;
|
|
136
|
+
break; // fine slide up
|
|
137
|
+
case 0x60:
|
|
138
|
+
fxt = 0x0e;
|
|
139
|
+
fxp |= 0x20;
|
|
140
|
+
break; // fine slide down
|
|
141
|
+
case 0x84:
|
|
142
|
+
fxt = 0x0e;
|
|
143
|
+
fxp |= 0x90;
|
|
144
|
+
break; // retrigger
|
|
145
|
+
case 0x88:
|
|
146
|
+
fxt = 0x0e;
|
|
147
|
+
fxp |= 0xa0;
|
|
148
|
+
break; // fine vol slide up
|
|
149
|
+
case 0x8c:
|
|
150
|
+
fxt = 0x0e;
|
|
151
|
+
fxp |= 0xb0;
|
|
152
|
+
break; // fine vol slide down
|
|
153
|
+
case 0x94:
|
|
154
|
+
fxt = 0x0e;
|
|
155
|
+
fxp |= 0xd0;
|
|
156
|
+
break; // note delay
|
|
157
|
+
case 0x98:
|
|
158
|
+
fxt = 0x0e;
|
|
159
|
+
fxp |= 0xe0;
|
|
160
|
+
break; // pattern delay
|
|
161
|
+
default:
|
|
162
|
+
fxt = 0;
|
|
163
|
+
fxp = 0;
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
out.push((ins & 0xf0) | ptkTable[note >> 1][0]);
|
|
167
|
+
out.push(ptkTable[note >> 1][1]);
|
|
168
|
+
out.push(((ins << 4) & 0xf0) | fxt);
|
|
169
|
+
out.push(fxp);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Sample data (xann.c:239): sequential after the pattern data.
|
|
173
|
+
moveData(data, pos, out, ssize);
|
|
174
|
+
return Uint8Array.from(out);
|
|
175
|
+
}
|
|
176
|
+
/** test_xann (xann.c:243-296). */
|
|
177
|
+
function testXann(data, start) {
|
|
178
|
+
const s = data.length - start;
|
|
179
|
+
if (s < 2048)
|
|
180
|
+
return 2048 - s;
|
|
181
|
+
// test 1 (xann.c:250-253)
|
|
182
|
+
if (data[start + 3] !== 0x3c)
|
|
183
|
+
return -1;
|
|
184
|
+
// test 2 (xann.c:255-262)
|
|
185
|
+
for (let i = 0; i < 128; i++) {
|
|
186
|
+
const j = readmem32b(data, start + i * 4);
|
|
187
|
+
const k = j & ~3;
|
|
188
|
+
if (k !== j || j > 132156)
|
|
189
|
+
return -1;
|
|
190
|
+
}
|
|
191
|
+
// test 4 (xann.c:270-277)
|
|
192
|
+
for (let i = 0; i < 64; i++) {
|
|
193
|
+
if (data[start + 3 + i * 4] !== 0x3c && data[start + 3 + i * 4] !== 0) {
|
|
194
|
+
return -1;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// test 5 (xann.c:279-283)
|
|
198
|
+
for (let i = 0; i < 31; i++) {
|
|
199
|
+
if (data[start + 519 + 16 * i] > 0x40)
|
|
200
|
+
return -1;
|
|
201
|
+
}
|
|
202
|
+
// test 6 (xann.c:285-296): sample addresses ascending and >= 2108
|
|
203
|
+
for (let i = 0; i < 30; i++) {
|
|
204
|
+
const j = readmem32b(data, start + 526 + 16 * i);
|
|
205
|
+
const k = readmem32b(data, start + 520 + 16 * (i + 1));
|
|
206
|
+
if (j < 2108 || k < 2108)
|
|
207
|
+
return -1;
|
|
208
|
+
if (j > k)
|
|
209
|
+
return -1;
|
|
210
|
+
}
|
|
211
|
+
pwReadTitle(null, 0);
|
|
212
|
+
return 0;
|
|
213
|
+
}
|
|
214
|
+
/** pw_xann: "XANN Packer". */
|
|
215
|
+
export const pwXann = {
|
|
216
|
+
name: 'XANN Packer',
|
|
217
|
+
test: testXann,
|
|
218
|
+
depack: depackXann,
|
|
219
|
+
};
|
|
220
|
+
//# sourceMappingURL=pw-xann.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-xann.js","sourceRoot":"","sources":["../src/pw-xann.ts"],"names":[],"mappings":"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"}
|
package/dist/pw-zen.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-zen.d.ts","sourceRoot":"","sources":["../src/pw-zen.ts"],"names":[],"mappings":"AAMA,OAAO,EAA4D,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AA2KtG,4BAA4B;AAC5B,eAAO,MAAM,KAAK,EAAE,QAInB,CAAC"}
|