Звук: разобраны все наборы 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. Статус: **разбор, кода нет.**
|
Дата: 2026-08-20. Статус: **разбор, кода нет.**
|
||||||
|
|
||||||
Задача пользователя: добавить звук. Приоритет — эффекты; музыку, если
|
Задача пользователя: добавить звук. Приоритет — эффекты; музыку, если
|
||||||
найдётся способ. Ниже — что реально лежит в ассетах, что умеет железо, и
|
найдётся способ. Эффекты — **обязательно WAV, а не PC-спикер**
|
||||||
|
(уточнение 2026-08-20; см. §1а — оказалось, что они и так все в WAV). Ниже — что реально лежит в ассетах, что умеет железо, и
|
||||||
почему получившийся план вышел проще, чем ожидалось.
|
почему получившийся план вышел проще, чем ожидалось.
|
||||||
|
|
||||||
## 1. Главный вывод
|
## 1. Главный вывод
|
||||||
@@ -20,6 +21,55 @@
|
|||||||
§5), значит музыка на AY и эффекты через CBL звучат ОДНОВРЕМЕННО, и
|
§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. Что лежит в ассетах (замерено, а не по памяти)
|
## 2. Что лежит в ассетах (замерено, а не по памяти)
|
||||||
|
|
||||||
Звук в PoP адресуется как ресурс `10000 + N`, N = 0..56 — 57 звуков
|
Звук в PoP адресуется как ресурс `10000 + N`, N = 0..56 — 57 звуков
|
||||||
|
|||||||
Reference in New Issue
Block a user