# 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-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`.