Builder, upcoming page, mods page for the current mods

- builder.html: build C900NXS.UPD in the browser (official 1.31 update in,
  mods ticked with their dependencies, no-liability and Claude Code
  confirmations, download). Ports of upd.py, the LZSS packer and the mods'
  application; the result is checked against the SHA-256 the Python
  patcher gives and is byte for byte the patcher's file.
- builder/data.js from tools/make_builder_data.py: the mods' bytes per
  combination; firmware parts (UTILITY table, HOT KEYS box, the asset
  blob's resource table) are made from the user's own update.
- index.html: rgb_waveform, extended_bpm, phasemeter, cuecolours,
  hotcuekeys (experimental), ledsaver, credit; stable/experimental and a
  green "ran on a player" dot.
- upcoming.html: beat jump, stems, uniform Camelot / Open Key, 3-band
  waveform.
- docs.html: the builder, the new mod names, hot cue loading and locks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Thiemo TizianiandClaude Opus 5.5 committed 2026-10-19 00:21:47 +02:00
1 parent f931ca0423
commit e4728b16ea
12 files changed
+1347 -145

No files matched your search

+110
View File
@@ -0,0 +1,110 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CDJ-900NXS Mods Builder</title>
<meta name="description" content="Build your own modded C900NXS.UPD in the browser: upload the official 1.31 update, tick the mods, download the file. Nothing leaves your computer.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
<script src="builder/data.js"></script>
<script src="builder/builder.js"></script>
<script src="builder/ui.js"></script>
</head>
<body>
<header class="top">
<div class="wrap">
<a class="brand" href="index.html"><span class="disc" aria-hidden="true"></span><span>CDJ-900NXS Mods</span></a>
<nav class="tabs" aria-label="Sections">
<a href="index.html">Mods</a>
<a href="builder.html" aria-current="page">Builder</a>
<a href="upcoming.html">Upcoming</a>
<a href="docs.html">Docs</a>
</nav>
<button class="theme-btn" type="button" aria-label="Switch light / dark">☀</button>
</div>
</header>
<main class="wrap builder">
<div class="eyebrow">Builder</div>
<h1>Build your update</h1>
<p class="lead">Upload the official CDJ-900NXS <strong>1.31</strong> update, tick the mods and download your <code>C900NXS.UPD</code>. Everything runs in your browser: the file never leaves your computer.</p>
<!-- 1 -->
<section class="step" id="step-file">
<div class="step-n">1</div>
<div class="step-body">
<h2>The official update</h2>
<p>Pioneer DJ's <code>C900NXS.UPD</code> for firmware 1.31. The builder checks its SHA-256 and refuses any other file.</p>
<label class="drop" id="drop">
<input type="file" id="file" accept=".UPD,.upd">
<span class="drop-t"><strong>Choose C900NXS.UPD</strong> or drop it here</span>
<span class="drop-s" id="file-state">No file yet</span>
</label>
</div>
</section>
<!-- 2 -->
<section class="step" id="step-mods">
<div class="step-n">2</div>
<div class="step-body">
<h2>The mods</h2>
<p>Ticking a mod also ticks what it needs; unticking one unticks what needs it. Tick none for the stock firmware (relabelled so the player takes it).</p>
<div class="picks" id="picks"></div>
<p class="hint" id="pick-note"></p>
</div>
</section>
<!-- 3 -->
<section class="step" id="step-ok">
<div class="step-n">3</div>
<div class="step-body">
<h2>Before you build</h2>
<div class="callout warn">
<strong>Unofficial firmware.</strong> Flashing modified firmware can leave your player unusable. The boot loader and the recovery stay untouched, so an official update can still be run, but there is no guarantee.
</div>
<label class="agree"><input type="checkbox" id="agree-risk"> I flash this at my own risk. The authors accept <strong>no liability</strong> for any damage to my player, my data or anything else.</label>
<label class="agree"><input type="checkbox" id="agree-ai"> I understand that our mods, this builder and the website were written with <strong>Claude Code</strong> (Anthropic's AI coding assistant, Claude Opus 5.5) and tested in an emulator and on one player.</label>
</div>
</section>
<!-- 4 -->
<section class="step" id="step-build">
<div class="step-n">4</div>
<div class="step-body">
<h2>Build</h2>
<button class="btn primary" type="button" id="build" disabled>Build C900NXS.UPD</button>
<span class="hint" id="build-why"></span>
<div class="log" id="log" hidden></div>
<div class="result" id="result" hidden>
<a class="btn primary" id="download" download="C900NXS.UPD">Download C900NXS.UPD</a>
<div class="sum" id="sum"></div>
<details>
<summary>What was checked</summary>
<ul id="checks"></ul>
</details>
<p class="hint">Copy <code>C900NXS.UPD</code> to the root of a FAT32 USB stick and run the update on the player as for an official one. The file is labelled 1.32 so the player installs it; the player still reports 1.31.</p>
</div>
</div>
</section>
</main>
<footer>
<div class="wrap cols">
<div>
<div class="ai"><span class="dot"></span>Made with Claude Code · Claude Opus 5.5</div>
<p>This website, the builder, our mods and the patcher were developed with Claude Code (Anthropic's AI coding assistant, model Claude Opus 5.5), by reverse engineering the firmware in an emulator. The mods <code>extended_bpm</code>, <code>phasemeter</code> and <code>rgb_waveform</code> are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>.</p>
</div>
<div>
<h4>Disclaimer</h4>
<p>Unofficial. Not affiliated with or endorsed by Pioneer DJ or AlphaTheta; CDJ and rekordbox are their trademarks. Flashing modified firmware can leave your player unusable. Everything here is provided as is, without warranty, and used at your own risk.</p>
</div>
</div>
</footer>
</body>
</html>