Site 1.2.0: rgb_waveform is now Advanced waveforms
Renamed everywhere (builder, pages, data); the built update is byte for byte the same. Upcoming: UTILITY > WAVEFORM (BLUE / RGB / 3BAND) in testing. The generator builds the released state only (patch(..., public=True)). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8133cd0b4b
commit
3e017e2a8e
10 files changed
+57
-42
No files matched your search
@@ -1,6 +1,14 @@
|
||||
{
|
||||
"_about": "The site's changelog, newest first. Versions follow Semantic Versioning (MAJOR.MINOR.PATCH), dates ISO 8601 (DIN EN 28601). make_builder_data.py adds every mod's current version from its module and writes assets/versions.js.",
|
||||
"site": [
|
||||
{
|
||||
"version": "1.2.0",
|
||||
"date": "2026-10-20",
|
||||
"changes": [
|
||||
"rgb_waveform is now called advanced_waveforms (Advanced waveforms); the old name still works in the patcher.",
|
||||
"Upcoming: UTILITY › WAVEFORM with BLUE / RGB / 3BAND for advanced waveforms, in testing."
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "1.1.1",
|
||||
"date": "2026-10-20",
|
||||
|
||||
@@ -18,7 +18,7 @@ go into data.js, except what is the player's own firmware:
|
||||
|
||||
arnoldasr's mods (credited on the site), as patch_cdj900nxs.py splits them
|
||||
up, are in data.js the same way: per combination of extended_bpm, phasemeter
|
||||
and rgb_waveform the bytes they change, except the asset blob at 0x08FC2D00,
|
||||
and advanced_waveforms the bytes they change, except the asset blob at 0x08FC2D00,
|
||||
which starts with a copy of the firmware's resource table: the browser makes
|
||||
it from the user's application (the port of patch_cdj900nxs.assets()).
|
||||
The SHA-256 of the finished application for every combination is in data.js
|
||||
@@ -188,7 +188,7 @@ def main():
|
||||
upstream, up_apps = {}, {(): stock}
|
||||
for k in range(1, len(p.UPSTREAM) + 1):
|
||||
for up in itertools.combinations(p.UPSTREAM, k):
|
||||
app = p.patch(stock, list(up))
|
||||
app = p.patch(stock, list(up), public=True)
|
||||
blob_len = len(app) - (p.DATA_BASE - BASE)
|
||||
masked = bytearray(app)
|
||||
masked[p.DATA_BASE - BASE:] = bytes(blob_len)
|
||||
@@ -200,7 +200,7 @@ def main():
|
||||
up_apps[up] = app
|
||||
print('%-40s %3d operations' % (','.join(up), len(ops)))
|
||||
for combo in combos:
|
||||
final = p.patch(stock, list(combo))
|
||||
final = p.patch(stock, list(combo), public=True)
|
||||
ops = ops_for(stock, final, boxes if 'hotcuekeys' in combo else [])
|
||||
if apply_ops(stock, stock, ops, hk, len(final)) != final:
|
||||
raise SystemExit('%s: the operations do not give the patcher\'s result' % ','.join(combo))
|
||||
@@ -216,8 +216,8 @@ def main():
|
||||
if up:
|
||||
expect[','.join(up)] = sha(base)
|
||||
for combo in combos:
|
||||
final = p.patch(stock, list(up) + list(combo))
|
||||
alone = p.patch(stock, list(combo))
|
||||
final = p.patch(stock, list(up) + list(combo), public=True)
|
||||
alone = p.patch(stock, list(combo), public=True)
|
||||
ops = ops_for(stock, alone, boxes if 'hotcuekeys' in combo else [])
|
||||
if apply_ops(base, stock, ops, hk, len(alone)) != final:
|
||||
raise SystemExit('%s + %s: differs from the patcher' % (','.join(up), ','.join(combo)))
|
||||
|
||||
Reference in new issue
Block a user