diff --git a/applications/PoP/docs/sound_plan.md b/applications/PoP/docs/sound_plan.md index 914d157..1112e12 100644 --- a/applications/PoP/docs/sound_plan.md +++ b/applications/PoP/docs/sound_plan.md @@ -3,7 +3,8 @@ Дата: 2026-08-20. Статус: **разбор, кода нет.** Задача пользователя: добавить звук. Приоритет — эффекты; музыку, если -найдётся способ. Ниже — что реально лежит в ассетах, что умеет железо, и +найдётся способ. Эффекты — **обязательно WAV, а не PC-спикер** +(уточнение 2026-08-20; см. §1а — оказалось, что они и так все в WAV). Ниже — что реально лежит в ассетах, что умеет железо, и почему получившийся план вышел проще, чем ожидалось. ## 1. Главный вывод @@ -20,6 +21,55 @@ §5), значит музыка на AY и эффекты через CBL звучат ОДНОВРЕМЕННО, и смешивать их программно не надо. +## 1а. Уточнение после разбора ВСЕХ наборов MS-DOS версии (2026-08-20) + +Пользователь попросил, чтобы эффекты были не PC-спикером, а WAV, и заодно +посмотреть `mt32snd[1-2].dat`. Разобрал все восемь `.dat` из `MSDOS/`. +Ответ короткий: **эффекты И ТАК все до одного есть в WAV, а вот у музыки +WAV нет ни в одном наборе.** + +| набор | формат | какие звуки | сколько | +|---|---|---|---| +| `digisnd1..3` | **WAV**, 8 бит PCM | эффекты 0..23, 44..49, 51 | **31** | +| `mt32snd1..2` | MIDI для Roland MT-32 | ТЕ ЖЕ эффекты 0..23, 44..51 | 31 | +| `midisnd1..2` | MIDI (AdLib/GM) | **музыка** 24..43, 50, 52..56 | 22 | +| `ibm_snd1..2` | ноты PC-спикера | **всё подряд, 0..56** | 57 | + +Здесь пряталась ловушка: `mt32snd` по имени похож на «музыку получше», а +на деле это набор ЭФФЕКТОВ для владельцев MT-32 — те же id, что у +`digisnd`. Музыки в нём нет вовсе. + +Частоты WAV: 28 звуков на 11 000 Гц, по одному на 8 200, 14 000 и 2 750. +Итого 112 922 сэмпла = **11,4 с, ~110 КБ ≈ 6,7 EMM-страниц**. + +Только PC-спикером, без альтернатив, остаются четыре id: 31, 34, 42 +(пустые) и **38 `blink`** — четыре ноты. То есть на весь звук игры +спикер нужен ровно для одного писка. + +### Музыка: WAV нет, есть три пути + +| путь | данные | что получится | цена | +|---|---|---|---| +| **A. Ноты PC-спикера на AY** | 7 КБ | один квадратный голос — ровно то, что слышали на IBM PC 1989 | секвенсор на полсотни строк | +| **B. MIDI -> AY, три голоса** | 27 КБ исходника | богаче: бас + мелодия + арпеджио | разбор MIDI + раскладка по каналам | +| **C. MIDI -> WAV на хосте, стрим через CBL** | см. ниже | настоящее звучание, любое | нужен синтезатор на хосте + место | + +Про объём для пути C (замерено по длительностям треков): + +| группа | треков | длительность | WAV 11 кГц | +|---|---:|---:|---| +| звучат ПО ХОДУ игры (гимн уровня, смерть, зелья, перо, победа) | 12 | 74,7 с | **803 КБ = 50 EMM-страниц** | +| заставки и титры | 10 | 248,1 с | 2 665 КБ = 167 страниц | + +Игровая половина в EMM **влезает** (при ~215 свободных страницах), а +заставочная — нет, её пришлось бы стримить с диска. Но заставки идут +тогда, когда игра ничего не рисует, так что стрим там как раз уместен. + +**Предложение:** начинать с A (7 КБ, работает сразу, ноль рисков), а C +держать как отдельную фазу — она ортогональна: проигрыватель WAV для +музыки это тот же `cbl_push`, что и для эффектов, только длиннее буфер. +B имеет смысл только если C окажется неподъёмным по месту. + ## 2. Что лежит в ассетах (замерено, а не по памяти) Звук в PoP адресуется как ресурс `10000 + N`, N = 0..56 — 57 звуков