@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-tp3.js
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Copyright (c) 2026 Bitti09 — modplayjs contributors
|
|
3
|
+
// Ported from: libxmp src/loaders/prowizard/tp3.c (Tracker Packer v2 + v3,
|
|
4
|
+
// shared depack_tp23 :34-214, test_tp23 :216-277).
|
|
5
|
+
import { ptkTable, ptkIsValidNote } from './ptktable.js';
|
|
6
|
+
import { readmem16b, 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_tp23 (tp3.c:34-214). ver = 2 or 3. */
|
|
14
|
+
function depackTp23(data, start, ver) {
|
|
15
|
+
let pos = start;
|
|
16
|
+
const out = [];
|
|
17
|
+
const u8 = () => data[pos++] ?? 0;
|
|
18
|
+
const u16 = () => { const v = readmem16b(data, pos); pos += 2; return v; };
|
|
19
|
+
pos += 8; // hio_seek(in, 8, SEEK_CUR) — skip magic
|
|
20
|
+
// title (tp3.c:41): move 20 bytes verbatim
|
|
21
|
+
for (let i = 0; i < 20; i++)
|
|
22
|
+
out.push(data[pos++] ?? 0);
|
|
23
|
+
const nins = u16() >> 3; // number of samples
|
|
24
|
+
// Sample headers (tp3.c:45-58)
|
|
25
|
+
let ssize = 0;
|
|
26
|
+
for (let i = 0; i < nins; i++) {
|
|
27
|
+
writeZero(out, 22); // sample name
|
|
28
|
+
const c3 = u8(); // finetune
|
|
29
|
+
const c4 = u8(); // volume
|
|
30
|
+
const size = u16();
|
|
31
|
+
ssize += size * 2;
|
|
32
|
+
put16b(out, size);
|
|
33
|
+
put8(out, c3);
|
|
34
|
+
put8(out, c4);
|
|
35
|
+
put16b(out, u16()); // loop start
|
|
36
|
+
put16b(out, u16()); // loop size
|
|
37
|
+
}
|
|
38
|
+
// Pad to 31 (tp3.c:60-66): zeros with a 0x01 loop-size flag.
|
|
39
|
+
{
|
|
40
|
+
const pad = new Array(30).fill(0);
|
|
41
|
+
pad[29] = 0x01;
|
|
42
|
+
for (let i = nins; i < 31; i++)
|
|
43
|
+
out.push(...pad);
|
|
44
|
+
}
|
|
45
|
+
// Sequence length (tp3.c:69-78): one skipped byte, then the length.
|
|
46
|
+
u8();
|
|
47
|
+
const len = u8();
|
|
48
|
+
if (len >= 128)
|
|
49
|
+
throw new Error('tp23: sequence too long');
|
|
50
|
+
put8(out, len);
|
|
51
|
+
put8(out, 0x7f); // ntk byte
|
|
52
|
+
// Pattern numbers (tp3.c:80-88): u16 track numbers / 8.
|
|
53
|
+
const pnum = [];
|
|
54
|
+
let npat = 0;
|
|
55
|
+
for (let i = 0; i < len; i++) {
|
|
56
|
+
const p = u16() >> 3;
|
|
57
|
+
pnum.push(p);
|
|
58
|
+
if (p > npat)
|
|
59
|
+
npat = p;
|
|
60
|
+
}
|
|
61
|
+
if (npat >= 128)
|
|
62
|
+
throw new Error('tp23: too many patterns');
|
|
63
|
+
// Track addresses (tp3.c:91-101): (npat+1) patterns × 4.
|
|
64
|
+
const trkOfs = [];
|
|
65
|
+
for (let i = 0; i <= npat; i++) {
|
|
66
|
+
const row = [];
|
|
67
|
+
for (let j = 0; j < 4; j++)
|
|
68
|
+
row.push(u16());
|
|
69
|
+
trkOfs.push(row);
|
|
70
|
+
}
|
|
71
|
+
// Pattern list + magic (tp3.c:104-106)
|
|
72
|
+
for (let i = 0; i < 128; i++)
|
|
73
|
+
put8(out, pnum[i]);
|
|
74
|
+
put32b(out, PW_MOD_MAGIC);
|
|
75
|
+
// pat_ofs = hio_tell + 2 (tp3.c:108) — after the magic we just wrote;
|
|
76
|
+
// the C file pointer sits after pnum+magic reads, +2 skips a size field.
|
|
77
|
+
const patOfs = pos + 2;
|
|
78
|
+
// Pattern data (tp3.c:111-205)
|
|
79
|
+
const pdata = new Uint8Array(1024);
|
|
80
|
+
let maxTrkOfs = 0;
|
|
81
|
+
for (let i = 0; i <= npat; i++) {
|
|
82
|
+
pdata.fill(0);
|
|
83
|
+
for (let j = 0; j < 4; j++) {
|
|
84
|
+
pos = patOfs + trkOfs[i][j];
|
|
85
|
+
for (let k = 0; k >= 0 && k < 64; k++) {
|
|
86
|
+
const p = k * 16 + j * 4;
|
|
87
|
+
const c1 = u8();
|
|
88
|
+
if ((c1 & 0xc0) === 0xc0) {
|
|
89
|
+
// Blank rows (tp3.c:126-129)
|
|
90
|
+
k += 0x100 - c1 - 1;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if ((c1 & 0xc0) === 0x80) {
|
|
94
|
+
// Effect-only row (tp3.c:131-155)
|
|
95
|
+
const c2 = u8();
|
|
96
|
+
let fxt = ver === 2 ? (c1 >> 2) & 0x0f : (c1 >> 1) & 0x0f;
|
|
97
|
+
let fxp = c2;
|
|
98
|
+
if (fxt === 0x05 || fxt === 0x06 || fxt === 0x0a) {
|
|
99
|
+
if (fxp > 0x80)
|
|
100
|
+
fxp = 0x100 - fxp;
|
|
101
|
+
else if (fxp <= 0x80)
|
|
102
|
+
fxp = (fxp << 4) & 0xf0;
|
|
103
|
+
}
|
|
104
|
+
if (fxt === 0x08)
|
|
105
|
+
fxt = 0x00;
|
|
106
|
+
pdata[p + 2] = fxt;
|
|
107
|
+
pdata[p + 3] = fxp;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const c2 = u8();
|
|
111
|
+
const ins = ((c2 >> 4) & 0x0f) | ((c1 >> 2) & 0x10);
|
|
112
|
+
let note;
|
|
113
|
+
if (ver === 2) {
|
|
114
|
+
note = (c1 & 0xfe) >> 1;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
if ((c1 & 0x40) === 0x40)
|
|
118
|
+
note = 0x7f - c1;
|
|
119
|
+
else
|
|
120
|
+
note = c1 & 0x3f;
|
|
121
|
+
}
|
|
122
|
+
if (!ptkIsValidNote(note))
|
|
123
|
+
throw new Error('tp23: invalid note');
|
|
124
|
+
const fxt = c2 & 0x0f;
|
|
125
|
+
if (fxt === 0x00) {
|
|
126
|
+
// No effect: 3-byte cell (tp3.c:150-158/166-174)
|
|
127
|
+
pdata[p] = (ins & 0xf0) | ptkTable[note][0];
|
|
128
|
+
pdata[p + 1] = ptkTable[note][1];
|
|
129
|
+
pdata[p + 2] = ver === 2 ? ((ins << 4) & 0xf0) | 0 : (ins << 4) & 0xf0;
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const c3 = u8();
|
|
133
|
+
let fxtV = fxt;
|
|
134
|
+
if (fxtV === 0x08)
|
|
135
|
+
fxtV = 0x00;
|
|
136
|
+
let fxp = c3;
|
|
137
|
+
if (fxtV === 0x05 || fxtV === 0x06 || fxtV === 0x0a) {
|
|
138
|
+
if (fxp > 0x80)
|
|
139
|
+
fxp = 0x100 - fxp;
|
|
140
|
+
else if (fxp <= 0x80)
|
|
141
|
+
fxp = (fxp << 4) & 0xf0;
|
|
142
|
+
}
|
|
143
|
+
pdata[p] = (ins & 0xf0) | ptkTable[note][0];
|
|
144
|
+
pdata[p + 1] = ptkTable[note][1];
|
|
145
|
+
pdata[p + 2] = ((ins << 4) & 0xf0) | fxtV;
|
|
146
|
+
pdata[p + 3] = fxp;
|
|
147
|
+
}
|
|
148
|
+
if (pos > maxTrkOfs)
|
|
149
|
+
maxTrkOfs = pos;
|
|
150
|
+
}
|
|
151
|
+
for (let k = 0; k < 1024; k++)
|
|
152
|
+
out.push(pdata[k]);
|
|
153
|
+
}
|
|
154
|
+
// Sample data (tp3.c:210-214): v3 pads max_trk_ofs to even.
|
|
155
|
+
if (ver > 2 && (maxTrkOfs & 0x01) !== 0)
|
|
156
|
+
maxTrkOfs += 1;
|
|
157
|
+
moveData(data, maxTrkOfs, out, ssize);
|
|
158
|
+
return Uint8Array.from(out);
|
|
159
|
+
}
|
|
160
|
+
/** test_tp23 (tp3.c:216-277). */
|
|
161
|
+
function testTp23(data, start, magic) {
|
|
162
|
+
const s = data.length - start;
|
|
163
|
+
if (s < 1024)
|
|
164
|
+
return 1024 - s;
|
|
165
|
+
for (let i = 0; i < 8; i++) {
|
|
166
|
+
if (data[start + i] !== magic.charCodeAt(i))
|
|
167
|
+
return -1;
|
|
168
|
+
}
|
|
169
|
+
// Number of samples (tp3.c:226-230)
|
|
170
|
+
let nins = readmem16b(data, start + 28);
|
|
171
|
+
if (nins === 0 || (nins & 0x07) !== 0 || nins >> 3 > 31)
|
|
172
|
+
return -1;
|
|
173
|
+
nins >>= 3;
|
|
174
|
+
for (let i = 0; i < nins; i++) {
|
|
175
|
+
const d = start + i * 8;
|
|
176
|
+
if (data[d + 30] > 0x0f)
|
|
177
|
+
return -1; // finetunes
|
|
178
|
+
if (data[d + 31] > 0x40)
|
|
179
|
+
return -1; // volumes
|
|
180
|
+
}
|
|
181
|
+
// Sample sizes (tp3.c:236-255)
|
|
182
|
+
let ssize = 0;
|
|
183
|
+
for (let i = 0; i < nins; i++) {
|
|
184
|
+
const d = start + i * 8;
|
|
185
|
+
const l = readmem16b(data, d + 32) << 1;
|
|
186
|
+
const lstart = readmem16b(data, d + 34) << 1;
|
|
187
|
+
const lsize = readmem16b(data, d + 36) << 1;
|
|
188
|
+
if (l > 0xffff || lstart > 0xffff || lsize > 0xffff)
|
|
189
|
+
return -1;
|
|
190
|
+
if (lstart + lsize > l + 2)
|
|
191
|
+
return -1;
|
|
192
|
+
if (lstart !== 0 && lsize === 0)
|
|
193
|
+
return -1;
|
|
194
|
+
ssize += l;
|
|
195
|
+
}
|
|
196
|
+
if (ssize <= 4)
|
|
197
|
+
return -1;
|
|
198
|
+
// Pattern list size (tp3.c:258-262)
|
|
199
|
+
const npat = data[start + nins * 8 + 31];
|
|
200
|
+
if (npat === 0 || npat > 128)
|
|
201
|
+
return -1;
|
|
202
|
+
pwReadTitle(data.subarray(start + 8), 20);
|
|
203
|
+
return 0;
|
|
204
|
+
}
|
|
205
|
+
/** pw_tp3: "Tracker Packer v3" (magic CPLX_TP3). */
|
|
206
|
+
export const pwTp3 = {
|
|
207
|
+
name: 'Tracker Packer v3',
|
|
208
|
+
test: (data, start) => testTp23(data, start, 'CPLX_TP3'),
|
|
209
|
+
depack: (data, start) => depackTp23(data, start, 3),
|
|
210
|
+
};
|
|
211
|
+
/** pw_tp2: "Tracker Packer v2" (magic MEXX_TP2). */
|
|
212
|
+
export const pwTp2 = {
|
|
213
|
+
name: 'Tracker Packer v2',
|
|
214
|
+
test: (data, start) => testTp23(data, start, 'MEXX_TP2'),
|
|
215
|
+
depack: (data, start) => depackTp23(data, start, 2),
|
|
216
|
+
};
|
|
217
|
+
//# sourceMappingURL=pw-tp3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-tp3.js","sourceRoot":"","sources":["../src/pw-tp3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type PwFormat } from './prowiz.js';
|
|
2
|
+
/** pw_unic_id: "UNIC Tracker". */
|
|
3
|
+
export declare const pwUnicId: PwFormat;
|
|
4
|
+
/** pw_unic_noid: "UNIC Tracker noid". */
|
|
5
|
+
export declare const pwUnicNoid: PwFormat;
|
|
6
|
+
/** pw_unic_emptyid: "UNIC Tracker id0". */
|
|
7
|
+
export declare const pwUnicEmptyId: PwFormat;
|
|
8
|
+
//# sourceMappingURL=pw-unic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-unic.d.ts","sourceRoot":"","sources":["../src/pw-unic.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAwQ9E,kCAAkC;AAClC,eAAO,MAAM,QAAQ,EAAE,QAItB,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,UAAU,EAAE,QAIxB,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,aAAa,EAAE,QAI3B,CAAC"}
|
package/dist/pw-unic.js
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Copyright (c) 2026 Bitti09 — modplayjs contributors
|
|
3
|
+
// Ported from: libxmp src/loaders/prowizard/unic.c (Unic Tracker, id/noid/
|
|
4
|
+
// emptyid variants share depack_unic :40-152; tests :154-398) and unic2.c
|
|
5
|
+
// (Unic Tracker 2).
|
|
6
|
+
import { ptkTable, ptkIsValidNote } from './ptktable.js';
|
|
7
|
+
import { readmem16b, readmem32b, moveData } from './prowiz.js';
|
|
8
|
+
const MAGIC_M_K_ = 0x4d2e4b2e; // 'M.K.'
|
|
9
|
+
const MAGIC_UNIC = 0x554e4943; // 'UNIC'
|
|
10
|
+
const MAGIC_0000 = 0x00000000;
|
|
11
|
+
function put8(out, b) { out.push(b & 0xff); }
|
|
12
|
+
function put16b(out, v) { out.push((v >> 8) & 0xff, v & 0xff); }
|
|
13
|
+
function put32b(out, v) {
|
|
14
|
+
out.push((v >>> 24) & 0xff, (v >> 16) & 0xff, (v >> 8) & 0xff, v & 0xff);
|
|
15
|
+
}
|
|
16
|
+
/** depack_unic (unic.c:40-152) — shared by id / noid / emptyid variants. */
|
|
17
|
+
function depackUnic(data, start) {
|
|
18
|
+
let pos = start;
|
|
19
|
+
const out = [];
|
|
20
|
+
const u8 = () => data[pos++] ?? 0;
|
|
21
|
+
const u16 = () => { const v = readmem16b(data, pos); pos += 2; return v; };
|
|
22
|
+
// title (unic.c:44): move 20 bytes verbatim
|
|
23
|
+
for (let i = 0; i < 20; i++)
|
|
24
|
+
out.push(data[pos++] ?? 0);
|
|
25
|
+
// Sample headers (unic.c:47-86): 22-byte name moved, 2 zeros, then
|
|
26
|
+
// finetune-from-loop-word, size, skip, fine, vol, loop with doubling.
|
|
27
|
+
let ssize = 0;
|
|
28
|
+
for (let i = 0; i < 31; i++) {
|
|
29
|
+
// sample name (unic.c:48)
|
|
30
|
+
for (let k = 0; k < 20; k++)
|
|
31
|
+
out.push(data[pos++] ?? 0);
|
|
32
|
+
put8(out, 0);
|
|
33
|
+
put8(out, 0);
|
|
34
|
+
// fine on? (unic.c:51-62)
|
|
35
|
+
const c1 = u8();
|
|
36
|
+
const c2 = u8();
|
|
37
|
+
const j = (c1 << 8) + c2;
|
|
38
|
+
let fine = 0;
|
|
39
|
+
if (j !== 0) {
|
|
40
|
+
fine = j < 256 ? 0x10 - c2 : 0x100 - c2;
|
|
41
|
+
}
|
|
42
|
+
// smp size (unic.c:65-67)
|
|
43
|
+
const len = u16();
|
|
44
|
+
put16b(out, len);
|
|
45
|
+
ssize += len * 2;
|
|
46
|
+
u8(); // skip
|
|
47
|
+
put8(out, fine); // fine
|
|
48
|
+
put8(out, u8()); // vol
|
|
49
|
+
let lstart = u16(); // loop start
|
|
50
|
+
const lsize = u16(); // loop size
|
|
51
|
+
// unic.c:77-81: loop start in bytes when it fits
|
|
52
|
+
if (lstart * 2 + lsize <= len && lstart !== 0) {
|
|
53
|
+
lstart <<= 1;
|
|
54
|
+
}
|
|
55
|
+
put16b(out, lstart);
|
|
56
|
+
put16b(out, lsize);
|
|
57
|
+
}
|
|
58
|
+
const npat = u8();
|
|
59
|
+
put8(out, npat); // number of patterns
|
|
60
|
+
put8(out, 0x7f); // noisetracker byte
|
|
61
|
+
u8(); // skip
|
|
62
|
+
// Pattern table (unic.c:91-93)
|
|
63
|
+
const tmp = [];
|
|
64
|
+
for (let i = 0; i < 128; i++)
|
|
65
|
+
tmp.push(u8());
|
|
66
|
+
for (let i = 0; i < 128; i++)
|
|
67
|
+
put8(out, tmp[i]);
|
|
68
|
+
// Highest pattern number (unic.c:95-99)
|
|
69
|
+
let max = 0;
|
|
70
|
+
for (let i = 0; i < 128; i++) {
|
|
71
|
+
if (tmp[i] > max)
|
|
72
|
+
max = tmp[i];
|
|
73
|
+
}
|
|
74
|
+
max++;
|
|
75
|
+
put32b(out, 0x4d2e4b2e);
|
|
76
|
+
// UNIC ID handling (unic.c:102-108): seek 1080; read32b ADVANCES the C
|
|
77
|
+
// file pointer to 1084. If the id is nonzero and not M.K./UNIC, rewind 4
|
|
78
|
+
// (pattern data starts at the id itself).
|
|
79
|
+
pos = start + 1084; // read32b advanced past the id
|
|
80
|
+
const id = readmem32b(data, start + 1080);
|
|
81
|
+
if (id !== 0 && id !== MAGIC_M_K_ && id !== MAGIC_UNIC) {
|
|
82
|
+
pos = start + 1080;
|
|
83
|
+
}
|
|
84
|
+
// Pattern data (unic.c:111-146): 3-byte cells.
|
|
85
|
+
for (let i = 0; i < max; i++) {
|
|
86
|
+
for (let j = 0; j < 256; j++) {
|
|
87
|
+
const c1 = u8();
|
|
88
|
+
const c2 = u8();
|
|
89
|
+
const c3 = u8();
|
|
90
|
+
if (pos > data.length + 1)
|
|
91
|
+
throw new Error('unic: read error');
|
|
92
|
+
const ins = ((c1 >> 2) & 0x10) | ((c2 >> 4) & 0x0f);
|
|
93
|
+
const note = c1 & 0x3f;
|
|
94
|
+
if (!ptkIsValidNote(note))
|
|
95
|
+
throw new Error('unic: invalid note');
|
|
96
|
+
const fxt = c2 & 0x0f;
|
|
97
|
+
let fxp = c3;
|
|
98
|
+
if (fxt === 0x0d) {
|
|
99
|
+
// pattern break: BCD-ish decimal → hex nybbles (unic.c:133-137)
|
|
100
|
+
const tens = Math.trunc(fxp / 10);
|
|
101
|
+
const ones = fxp % 10;
|
|
102
|
+
fxp = 16 * tens + ones;
|
|
103
|
+
}
|
|
104
|
+
out.push((ins & 0xf0) | ptkTable[note][0]);
|
|
105
|
+
out.push(ptkTable[note][1]);
|
|
106
|
+
out.push(((ins << 4) & 0xf0) | fxt);
|
|
107
|
+
out.push(fxp);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Sample data (unic.c:149-152)
|
|
111
|
+
moveData(data, pos, out, ssize);
|
|
112
|
+
return Uint8Array.from(out);
|
|
113
|
+
}
|
|
114
|
+
/** check_instruments (unic.c:154-204). Returns max non-empty sample index+1. */
|
|
115
|
+
function checkInstruments(data, start) {
|
|
116
|
+
let ssize = 0;
|
|
117
|
+
let maxIns = 0;
|
|
118
|
+
for (let i = 0; i < 31; i++) {
|
|
119
|
+
const d = start + i * 30;
|
|
120
|
+
const len = readmem16b(data, d + 42) << 1;
|
|
121
|
+
const lstart = readmem16b(data, d + 46) << 1;
|
|
122
|
+
const lsize = readmem16b(data, d + 48) << 1;
|
|
123
|
+
const fine = readmem16b(data, d + 40);
|
|
124
|
+
ssize += len;
|
|
125
|
+
if (lsize !== 0 && len + 2 < lstart + lsize)
|
|
126
|
+
return -1;
|
|
127
|
+
if (len > 0xffff || lstart > 0xffff || lsize > 0xffff)
|
|
128
|
+
return -1;
|
|
129
|
+
if (data[d + 45] > 0x40)
|
|
130
|
+
return -1;
|
|
131
|
+
if ((fine !== 0 && len === 0) || (fine > 8 && fine < 247))
|
|
132
|
+
return -1;
|
|
133
|
+
if (lstart !== 0 && lsize <= 2)
|
|
134
|
+
return -1;
|
|
135
|
+
if (data[d + 45] !== 0 && len === 0)
|
|
136
|
+
return -1;
|
|
137
|
+
if (len !== 0)
|
|
138
|
+
maxIns = i + 1;
|
|
139
|
+
}
|
|
140
|
+
if (ssize <= 2)
|
|
141
|
+
return -1;
|
|
142
|
+
return maxIns;
|
|
143
|
+
}
|
|
144
|
+
/** check_pattern_list_size (unic.c:206-235). Returns psize (<<8) or -1. */
|
|
145
|
+
function checkPatternListSize(data, start) {
|
|
146
|
+
const len = data[start + 950];
|
|
147
|
+
if (len === 0 || len > 127)
|
|
148
|
+
return -1;
|
|
149
|
+
let psize = 0;
|
|
150
|
+
let i = 0;
|
|
151
|
+
for (; i < len; i++) {
|
|
152
|
+
const x = data[start + 952 + i];
|
|
153
|
+
if (x > 127)
|
|
154
|
+
return -1;
|
|
155
|
+
if (x > psize)
|
|
156
|
+
psize = x;
|
|
157
|
+
}
|
|
158
|
+
for (; i !== 128; i++) {
|
|
159
|
+
if (data[start + 952 + i] !== 0)
|
|
160
|
+
return -1;
|
|
161
|
+
}
|
|
162
|
+
psize++;
|
|
163
|
+
psize <<= 8;
|
|
164
|
+
return psize;
|
|
165
|
+
}
|
|
166
|
+
/** check_pattern (unic.c:237-272). */
|
|
167
|
+
function checkPattern(data, s, psize, maxIns, offset) {
|
|
168
|
+
if (s < offset + psize * 3 + 2)
|
|
169
|
+
return offset + psize * 3 + 2 - s;
|
|
170
|
+
for (let i = 0; i < psize; i++) {
|
|
171
|
+
const d = offset + i * 3;
|
|
172
|
+
if (data[d] > 0x74)
|
|
173
|
+
return -1;
|
|
174
|
+
if ((data[d] & 0x3f) > 0x24)
|
|
175
|
+
return -1;
|
|
176
|
+
if ((data[d + 1] & 0x0f) === 0x0c && data[d + 2] > 0x40)
|
|
177
|
+
return -1;
|
|
178
|
+
if ((data[d + 1] & 0x0f) === 0x0b && data[d + 2] > 0x7f)
|
|
179
|
+
return -1;
|
|
180
|
+
if ((data[d + 1] & 0x0f) === 0x0d && data[d + 2] > 0x40)
|
|
181
|
+
return -1;
|
|
182
|
+
const ins = ((data[d] >> 2) & 0x30) | ((data[d + 1] >> 4) & 0x0f);
|
|
183
|
+
if (ins > maxIns)
|
|
184
|
+
return -1;
|
|
185
|
+
}
|
|
186
|
+
return 0;
|
|
187
|
+
}
|
|
188
|
+
/** test_unic_id (unic.c:274-322). */
|
|
189
|
+
function testUnicId(data, start) {
|
|
190
|
+
const s = data.length - start;
|
|
191
|
+
if (s < 1084)
|
|
192
|
+
return 1084 - s;
|
|
193
|
+
if (readmem32b(data, start + 1080) !== MAGIC_M_K_)
|
|
194
|
+
return -1;
|
|
195
|
+
let ssize = 0;
|
|
196
|
+
for (let i = 0; i < 31; i++) {
|
|
197
|
+
const d = start + i * 30;
|
|
198
|
+
const size = readmem16b(data, d + 42) << 1;
|
|
199
|
+
ssize += size;
|
|
200
|
+
const end = (readmem16b(data, d + 46) + readmem16b(data, d + 48)) << 1;
|
|
201
|
+
if (size + 2 < end)
|
|
202
|
+
return -1;
|
|
203
|
+
}
|
|
204
|
+
if (ssize <= 2)
|
|
205
|
+
return -1;
|
|
206
|
+
for (let i = 0; i < 31; i++) {
|
|
207
|
+
const d = start + i * 30;
|
|
208
|
+
const fine = (data[d + 40] << 24) >> 24; // int8
|
|
209
|
+
if (fine < -8 || fine > 7)
|
|
210
|
+
return -1;
|
|
211
|
+
if (data[d + 44] !== 0 || data[d + 45] > 0x40)
|
|
212
|
+
return -1;
|
|
213
|
+
}
|
|
214
|
+
const psize = checkPatternListSize(data, start);
|
|
215
|
+
if (psize < 0)
|
|
216
|
+
return -1;
|
|
217
|
+
if (s < psize * 3 + 1084)
|
|
218
|
+
return psize * 3 + 1084 - s;
|
|
219
|
+
for (let i = 0; i < psize; i++) {
|
|
220
|
+
if (data[start + 1084 + i * 3] > 0x74)
|
|
221
|
+
return -1;
|
|
222
|
+
}
|
|
223
|
+
return 0;
|
|
224
|
+
}
|
|
225
|
+
/** test_unic_emptyid (unic.c:324-351) — ID = $00000000. */
|
|
226
|
+
function testUnicEmptyId(data, start) {
|
|
227
|
+
const s = data.length - start;
|
|
228
|
+
if (s < 1084)
|
|
229
|
+
return 1084 - s;
|
|
230
|
+
if (readmem32b(data, start + 1080) !== MAGIC_0000)
|
|
231
|
+
return -1;
|
|
232
|
+
const maxIns = checkInstruments(data, start);
|
|
233
|
+
if (maxIns < 0)
|
|
234
|
+
return -1;
|
|
235
|
+
const psize = checkPatternListSize(data, start);
|
|
236
|
+
if (psize < 0)
|
|
237
|
+
return -1;
|
|
238
|
+
const r = checkPattern(data, s, psize, maxIns, start + 1084);
|
|
239
|
+
if (r < 0)
|
|
240
|
+
return r;
|
|
241
|
+
return 0;
|
|
242
|
+
}
|
|
243
|
+
/** test_unic_noid (unic.c:353-394). */
|
|
244
|
+
function testUnicNoid(data, start) {
|
|
245
|
+
const s = data.length - start;
|
|
246
|
+
if (s < 1084)
|
|
247
|
+
return 1084 - s;
|
|
248
|
+
if (readmem32b(data, start + 1080) === MAGIC_0000)
|
|
249
|
+
return -1;
|
|
250
|
+
const maxIns = checkInstruments(data, start);
|
|
251
|
+
if (maxIns < 0)
|
|
252
|
+
return -1;
|
|
253
|
+
const psize = checkPatternListSize(data, start);
|
|
254
|
+
if (psize < 0)
|
|
255
|
+
return -1;
|
|
256
|
+
const r = checkPattern(data, s, psize, maxIns, start + 1080);
|
|
257
|
+
if (r < 0)
|
|
258
|
+
return r;
|
|
259
|
+
// Title coherence (unic.c:384-390)
|
|
260
|
+
for (let i = 0; i < 20; i++) {
|
|
261
|
+
const c = data[start + i];
|
|
262
|
+
if ((c !== 0 && c < 32) || c > 180)
|
|
263
|
+
return -1;
|
|
264
|
+
}
|
|
265
|
+
return 0;
|
|
266
|
+
}
|
|
267
|
+
/** pw_unic_id: "UNIC Tracker". */
|
|
268
|
+
export const pwUnicId = {
|
|
269
|
+
name: 'UNIC Tracker',
|
|
270
|
+
test: testUnicId,
|
|
271
|
+
depack: depackUnic,
|
|
272
|
+
};
|
|
273
|
+
/** pw_unic_noid: "UNIC Tracker noid". */
|
|
274
|
+
export const pwUnicNoid = {
|
|
275
|
+
name: 'UNIC Tracker noid',
|
|
276
|
+
test: testUnicNoid,
|
|
277
|
+
depack: depackUnic,
|
|
278
|
+
};
|
|
279
|
+
/** pw_unic_emptyid: "UNIC Tracker id0". */
|
|
280
|
+
export const pwUnicEmptyId = {
|
|
281
|
+
name: 'UNIC Tracker id0',
|
|
282
|
+
test: testUnicEmptyId,
|
|
283
|
+
depack: depackUnic,
|
|
284
|
+
};
|
|
285
|
+
//# sourceMappingURL=pw-unic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-unic.js","sourceRoot":"","sources":["../src/pw-unic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-unic2.d.ts","sourceRoot":"","sources":["../src/pw-unic2.ts"],"names":[],"mappings":"AAMA,OAAO,EAA4D,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAsKtG,kCAAkC;AAClC,eAAO,MAAM,OAAO,EAAE,QAIrB,CAAC"}
|