Every score on the disk, not a named one

The makefile compiled splash.score by name, so intro.score sat beside it
turning into nothing - which is exactly the failure the mirror three
lines above exists to prevent, and its comment says so: a list in a
makefile goes stale the moment somebody adds a file, and what they forgot
is invisible until they go looking for it on the machine.

Found by the user going looking for it on the machine.

Every .score in Programs/Tunes is compiled and put on the disk now, and
every patch in Programs/Sounds is converted first so a score can name any
of them. The source is mirrored to /Source/Tunes with everything else
that was written; the tune goes to the root, where a program looking for
one expects it - which is worth writing down, because the two being in
different places is the thing that sent somebody hunting.

two.score moved to Tests. It is a fixture, it names patches that only
exist in the test build, and it was in the music tree only because that
is where scores were when it was written - which the game disk build
found immediately by failing to compile it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
This commit is contained in:
Anachronaut
2026-09-06 11:15:47 -04:00
co-authored by Claude Opus 5
parent dfc9d9ef7f
commit f351ee8844
16 changed files with 125 additions and 49 deletions
+18 -4
View File
@@ -639,11 +639,25 @@ $(COSMOS_DISK): $(APPS) $(NATIVE_ASM) $(COSMOS) $(STAGE2) \
@# written and a .sbx is what it loads. The patches come from SoundPatch, which stays the
@# only thing that knows what a soundThing patch means; TuneC embeds the bytes and knows
@# nothing about them.
@# EVERY SCORE, NOT A NAMED ONE. A list here goes stale the moment somebody writes a
@# second piece of music, and what they forgot is invisible until they go looking for
@# it on the machine - which is the same argument the mirror above is made of, and the
@# same way it went wrong the first time: splash.score was named and intro.score sat
@# beside it compiling into nothing.
@#
@# The patches every score can name are converted first. They come from SoundPatch,
@# which stays the only thing that knows what a soundThing patch means.
@mkdir -p $(PROG_BUILD)/tunes
$(PATCH_RUN) --blob $(PROG_DIR)/Sounds/Oboe.json Oboe $(PROG_BUILD)/tunes/oboe.patch
$(TUNE_RUN) -I $(PROG_BUILD)/tunes $(PROG_DIR)/Tunes/splash.score \
$(PROG_BUILD)/tunes/splash.tune
$(DISKTOOL) put $@ $(PROG_BUILD)/tunes/splash.tune splash.tune
@for json in $(PROG_DIR)/Sounds/*.json; do \
$(PATCH_RUN) --blob $$json `basename $$json .json` \
$(PROG_BUILD)/tunes/`basename $$json .json | tr 'A-Z' 'a-z'`.patch \
>/dev/null || exit 1; done
@for score in $(PROG_DIR)/Tunes/*.score; do \
name=`basename $$score .score`; \
$(TUNE_RUN) -I $(PROG_BUILD)/tunes $$score $(PROG_BUILD)/tunes/$$name.tune \
>/dev/null || exit 1; \
$(DISKTOOL) put $@ $(PROG_BUILD)/tunes/$$name.tune $$name.tune >/dev/null \
|| exit 1; done
@# ---- What you assemble: all of it ----
@#
@# MIRRORED RATHER THAN LISTED. A list in a makefile goes stale the moment somebody