Commit Graph

5 Commits

Author SHA1 Message Date
type-two
cb22239363 The soundtrack is built out of the signal
The last structural promise in the design doc. No level gets a chord any
more. Every bed in the game is derived from a real number belonging to the
era it plays under, and src/score.js says which one and why in a comment
above each line.

  coldboot/stack  1000 Hz, the reference tone every piece of telecoms test
                  gear on earth agrees on. The fortress is tuned to a
                  calibration signal.
  timewait        50 Hz mains and its harmonics. The room's own hum was
                  always the entire score; now the bed agrees with it.
  war             the 1800 Hz V.32 carrier folded down, with dial-up hiss
                  under it, because everybody on EFnet was on a modem.
  smash           0x90 is the NOP. Read as a number it is 144, so the sled
                  has a pitch and the level is tuned to the byte you slide
                  down.
  worm            seven partials, and the seventh one is detuned. One in
                  seven, as a chord.
  cuckoo          45.45 baud — the Model 33 rate, 22 ms a bit. Fifty of
                  them in a basement is what he actually heard all night.
  board           the 1200 Hz V.22bis carrier folded four times, which is
                  the doc's exact phrase: a modem carrier detuned into a
                  pad.
  shell           the 750 Hz terminal bell over Helsinki's 50 Hz mains.
  handshake       silence. The fight is the score; anything underneath is
                  noise competing with the only thing in this game that
                  has to be listened to.
  copper          20 Hz ringing current, 50 Hz mains, and Strowger stepping
                  at ten pulses a second. Three real clocks, and the
                  cathedral is the beat they make against each other.
  bluebox         the six MF tones at once. That is literally what is
                  inside a blue box.
  climb           all of it, layered.
  root            2600 Hz folded six times until it is a low room tone.
                  The number the whole game turns on, finally at rest.

ESTABLISHED gets its own cue rather than a bed: 350 and 440, which is the
dial tone the handshake arena opened on and called the sound a line makes
when nothing is happening — with something finally on it.

Fixed while building: the pulse gate was driven by a bare square
oscillator swinging -1..+1, so its off half was not silence, it was the
same tone phase-inverted. Tremolo where a clock was wanted. DC offset now.

All 14 hops swept clean, and no voices leak between them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 20:17:18 +10:00
type-two
4554bfcd2d He stops arguing and edits the program, and the line changes its mind
The uname escalation. rms does not get angrier, he gets tireder — each
interjection shorter and flatter and typed faster than the last, down to
"GNU/linux.", then "...", then "no. i am not doing this again." And then
he stops trying to change your mind and goes and rebuilds uname so that it
says GNU/Linux, and installs it, and does not ask anybody.

Which is, in fairness, the entire strategy. He never won the argument
about naming and was never going to. What he did instead was write a
compiler, a linker, a shell, a libc and a debugger, put all of them under
a licence that forces everyone downstream to keep them free, and wait.
That part worked completely.

THE RETRAIN — the last cross-cutting system in the design doc that was
not in. Real modems renegotiated mid-call: the copper got wet, somebody
picked up an extension, the exchange rerouted you through a worse pair,
and the two ends stopped and did the whole handshake again in the middle
of your download. So now, once per run, somewhere after hop 51, wherever
you happen to be standing, the line goes and takes a baud rate off you.

The way back is the beat you were taught at hop 47: SPACE on the ANSam
phase reversal, 450 ms, four clean ones. Spamming it fails, correctly.
Terminal levels opt out with noRetrain, because taking SPACE off somebody
mid-sentence is not a mechanic, it is a bug with a story attached.

Fixed while testing: the reversal flash was decaying on a setTimeout while
the beat it was cueing ran on dt. Two clocks for one event. Frame-based
now, which is both more correct and the reason the win path is reachable.

75 philes. All 14 hops swept clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 18:40:06 +10:00
type-two
e5ecadeab5 THE SHELL — the thing that killed the board
Day three of THE BOARD already names what kills it: about a third of you
have got shell accounts now and are not calling any more, and i do not
blame you, because it is better, it is genuinely better. The player never
got to see it. Now they do, immediately afterwards, while the board's
ghost is still warm.

kruuna.helsinki.fi, 1991. It connects instantly, with no dial tone, no
ring and no busy signal, and that silence after eight minutes of the board
is the whole opening beat. who(1) shows the people who are on the machine
at this second, against a board that had forty-four users in nine years
and could hold one at a time. talk(1) puts every character on screen as it
is typed, because that is what talk did. And make compiles a kernel in the
top four lines while you carry on using the shell underneath it — two
things at once, demonstrated rather than stated, which the board could
never do.

Then the interjection. rms has been on ttyp7 since six in the morning. He
waited until the level printed a whole operating system over a build log
in which every single line is gcc, and then he opened a talk request, and
he is right. If you never answer it he leaves mail instead, because of
course he does.

The closing speech now credits the compiler, the linker, the shell, make
and libc, which were all finished and free years before the kernel was.

74 philes. All 14 hops swept clean. README and STAGES.md brought current.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 18:18:37 +10:00
type-two
8030547e3c Philes you can read, a save, and MTU that costs you something
Three holes closed:

  philes  — 40 written, all in src/philes.js so the next 160 is a writing
            job and not a code job. P opens a reader: list on the left,
            the text on the right, attributed to whoever wrote it in
            whatever year they wrote it. Every level now drops at least
            one; previously you collected files you could never open.

  save    — ESTABLISHED. Every hop writes level/ttl/hop/baud/philes/
            cargo/flags to localStorage, and the boot screen offers
            R — RESUME. A 64-hop game with no save is not a 64-hop game.

  MTU     — the HUD has been showing your MTU drop as you take files off
            the board while nothing happened. Now two files are free and
            after that you arrive in pieces, one TTL per extra fragment,
            every hop. You can put things down again from the traceroute
            map. Lore costs distance, which is the economy the whole
            design is built on.

All 13 hops re-swept: clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 15:46:18 +10:00
type-two
696b0c65e8 HANDSHAKE — 13 playable hops, one renderer
You are SYN. You want ACK. Root is the only one who can give it to you.

Three load-bearing ideas, all working:
  - TTL is the health bar and it only goes down. 64 hops, no healing.
  - Bandwidth is resolution. One render target, one shader; at 1200 baud
    and below the 3D scene renders as ASCII glyphs.
  - Every header you drop is a piece of clothing. Seven wireframe shells,
    one per OSI layer, shed on the way down.

Every frequency is the real frequency, synthesised, nothing sampled:
350+440 dial tone, the DTMF matrix, R1 MF pairs at real KP/digit timing,
2600 Hz, ANSam at 2100 reversing phase every 450 ms, Bell 103 FSK.

Thirteen hops, each a different genre over one renderer — FP tutorial,
OSI descent platformer, walking sim, EFnet twin-stick, 2D buffer overflow,
Morris worm RTS, LBL terminal stealth, a whole BBS with a playable LORD,
the five-boss handshake arena, the copper, a playable blue box, the climb,
and an empty room with an ACK in it.

No engine, no build step, one vendored three.js.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 15:34:58 +10:00