Files
Sprinter-SDCC/applications/SprPoP/assets/orig
snark13 589894c50d SprPoP: автономность — внешние данные качаются, а не хранятся
В репозитории нет ни байта чужих данных, но есть знание, откуда их взять:
tools/fetch_orig.py качает SDLPoP (ресурсы + исходники-эталон) и записи
саундтрека, причём адрес архива музыки читает из самого SDLPoP
(ReadMe.amigaos4, секция «AUDIO IS SLOW/AWFULL»); запасной адрес вшит
константой.  Цели: make fetch / fetch-sdlpop / fetch-music / fetch-check /
fetch-list.

Версия SDLPoP пишется в .fetch.json вместе с манифестом sha256 всего
дерева.  По нему следующий fetch отличает НАШИ отладочные врезки
(POP_TRACE — покадровая трасса Кида, дампы палитры и спрайтов) от
нетронутых файлов и не сносит их молча: без --force каталог не трогается
вовсе, с --force старая копия уезжает в бэкап .cache/.

MSDOS/ не качается и НЕ НУЖЕН: уровни и оцифровка берутся из SDLPoP.

У SprPoP теперь свой .gitignore, написанный так, чтобы стать корневым при
выделении в отдельный репозиторий (пути от корня приложения, ничего про
applications/).  Из корневого .gitignore тулчейна SprPoP-секция убрана,
чтобы две копии не разъезжались.  Заодно закрылась дыра: шаблон
applications/*/*/*.exe не покрывал артефакты в корне SprPoP.

assets/orig/README.md выведен из-под игнора — без него в чистом клоне не
написано, откуда брать данные, а это и есть смысл затеи.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011MsUsEFAQfsjjQpJ7RtKVY
2026-08-31 16:14:12 +03:00
..

assets/orig — оригинальные данные

Здесь лежат исходные данные Prince of Persia, из которых make resources делает ресурсы Sprinter-версии. В репозиторий этот каталог не идёт — материал копирайтный (см. .gitignore). Вместо данных в репозитории лежит знание, откуда они берутся: tools/fetch_orig.py и таблица источников внутри него.

Как заполнить

make fetch          # SDLPoP + записи саундтрека (всё, что качается)
make fetch-check    # что уже на месте
make fetch-list     # таблица источников с адресами

Тонкости:

make fetch-sdlpop                    только SDLPoP
make fetch-music                     только музыка (43 МБ)
make FETCH_ARGS=--force fetch        перекачать заново
make FETCH_ARGS="--ref v1.23" fetch-sdlpop   конкретный тег SDLPoP

Скачанные архивы кэшируются в assets/orig/.cache/ — повторный make fetch сеть не трогает. Версия SDLPoP записывается в assets/orig/SDLPoP/.fetch.json (ветка/тег, sha, дата), и следующий make fetch по ней понимает, последняя у нас версия или нет.

Собрать игру без assets/orig/ можно: упакованные ресурсы лежат в ../packed/, а генерируемые заголовки — в ../../gen/. assets/orig нужен только чтобы ресурсы перегенерировать.

Исключение — LEVELS: файлы res20xx.bin ложатся на диск игры как есть, без конвертации, поэтому assets/packed/LEVELS/ тоже вне репозитория и заполняется из orig командой make resources-levels.

Что и откуда

Каталог Что это Где взять
SDLPoP/data/ Распакованные ресурсы DOS-версии: PNG-спрайты (VDUNGEON, VPALACE, KID, GUARD, SKEL, VIZIER, SHADOW, TITLE, PV, PRINCE), палитры, LEVELS/res20xx.bin, оцифровка DIGISND*.DAT make fetch-sdlpophttps://github.com/NagyD/SDLPoP (GPLv3)
SDLPoP/src/ Исходники SDLPoP. Нужны не только упаковщикам (menu.c и seg009.c содержат встроенные шрифты, из seg005/seg006 берутся таблицы кадров и seqtbl), но и как эталон механики: расхождение в поведении всегда сверяется с ними тем же make fetch-sdlpop
PoP1_DOS_music/ Записи музыки DOS-версии в четырёх наборах: flac/ (по умолчанию), mp3/, ogg/, ogg_MT-32/ (исполнение Roland MT-32). Имена треков во всех наборах одинаковые; какой брать — задаёт MUSIC_FMT make fetch-music. Адрес архива скрипт читает из самого SDLPoP (ReadMe.amigaos4, секция «AUDIO IS SLOW/AWFULL»), запасной — popot.org
MSDOS/ Необязательно. Оригинальная поставка PoP 1.0 для MS-DOS. Используется только digisnd*.dat со звуком, и только если попросить: make SND_SRC=msdos Не качается — дистрибутив игры, положить руками

MSDOS: зачем он и почему без него живётся

По умолчанию всё берётся из SDLPoP — и уровни, и оцифровка звука. Так сборка работает на чистой машине сразу после make fetch.

MSDOS/ даёт ровно одно: более полный набор оцифрованных эффектов. Из 31 звука 28 совпадают побайтно, а три — нет, и все три лучше в дистрибутиве: spiked (48, насаживание на пики) в наборе SDLPoP длиной 7 сэмплов, то есть его нет; sword_vs_sword (10) короче; sword_moving (11) — другая запись. Разбор — docs/sound_plan.md. Включается это явно:

make SND_SRC=msdos resources-sound     # перепаковать звук из дистрибутива
make SND_SRC=msdos                     # и собрать с ним

Источник входит в имя stamp'а, поэтому переключение SND_SRC само делает звук устаревшим — -B не нужен.

Кто что читает

Упаковщик Читает
pop_pack_bg.py, render_room.py SDLPoP/data/{VDUNGEON,VPALACE,LEVELS}
pop_pack_kid.py SDLPoP/data/KID
pop_pack_guard.py SDLPoP/data/{GUARD,SKEL,VIZIER,PRINCE}
pop_pack_shadow.py SDLPoP/data/{KID,SHADOW}
pop_pack_title.py, pop_pack_intro.py SDLPoP/data/{TITLE,PV,PRINCE,KID}
pop_extract_font.py SDLPoP/src/{menu.c,seg009.c}
pop_extract_kid_data.py SDLPoP/src/ (таблицы кадров и seqtbl)
pop_pack_sound.py SDLPoP/data/DIGISND*.DAT (--source sdlpop, умолчание) либо MSDOS/digisnd*.dat (--source msdos)
pop_pack_music.py PoP1_DOS_music/<набор>/ (--format flac|mp3|ogg|mt32)

Точная раскладка путей — в tools/paths.py; менять её нужно там, а не в отдельных упаковщиках. Адреса внешних источников — в tools/fetch_orig.py.