Звук: разобраны все наборы MS-DOS версии, включая mt32snd
Эффекты все 31 есть в WAV (digisnd, 8 бит PCM) — просьба «не спикер, а wav» для них уже выполнена исходным планом. mt32snd оказался НЕ музыкой, а теми же эффектами в MIDI для Roland MT-32. У музыки WAV нет ни в одном наборе: только ноты спикера (7 КБ) или MIDI (27 КБ). Посчитал третий путь — рендер MIDI в WAV на хосте: игровые треки 74,7 с = 803 КБ = 50 EMM-страниц (влезает), заставки 248 с = 167 страниц (только стрим с диска). Только спикером во всей игре остаётся один звук — blink (4 ноты).
This commit is contained in:
@@ -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 звуков
|
||||
|
||||
Reference in New Issue
Block a user