Звук: подтверждён формат (8 бит моно) и замерен бюджет EMM
Формат оригинала проверен по convert_digi_sound: один байт на кадр (моно), байт беззнаковый с центром 0x80 — ровно формат нашего CBL. Стерео в данных нет, каналы размножаются на выходе. Живой замер памяти из работающей программы: занято 124 страницы из 256 (система с exe 43, наши ассеты 81), свободно 132 = 2,06 МБ. Самый крупный ассет теперь набор Тени — 32 страницы. Эффекты WAV займут 8.
This commit is contained in:
@@ -72,7 +72,11 @@ B имеет смысл только если C окажется неподъё
|
|||||||
|
|
||||||
## 1б. РЕШЕНИЯ (пользователь, 2026-08-20)
|
## 1б. РЕШЕНИЯ (пользователь, 2026-08-20)
|
||||||
|
|
||||||
1. **Эффекты — WAV через CBL.** Как в §1: играются как есть.
|
1. **Эффекты — WAV через CBL, 8 бит, МОНО, единая частота.** Проверено по
|
||||||
|
`convert_digi_sound` (`seg009.c:2358`): один байт на кадр, то есть
|
||||||
|
моно, и байт беззнаковый (`(b | b<<8) - 32768`), центр 0x80 — ровно
|
||||||
|
формат нашего CBL. Стерео в данных нет вовсе: каналы у оригинала
|
||||||
|
размножаются уже на выходе (`digi_audiospec->channels`).
|
||||||
2. **Музыка, первый заход — путь A** (ноты спикера на AY).
|
2. **Музыка, первый заход — путь A** (ноты спикера на AY).
|
||||||
3. **Заставки и титры — потом WAV.** Конфликта с эффектами там нет:
|
3. **Заставки и титры — потом WAV.** Конфликта с эффектами там нет:
|
||||||
одновременно они не звучат.
|
одновременно они не звучат.
|
||||||
@@ -108,6 +112,50 @@ B имеет смысл только если C окажется неподъё
|
|||||||
четырежды в рантайме: 2 750 × 4 = 11 000 ровно. Это код в `fill()` ради
|
четырежды в рантайме: 2 750 × 4 = 11 000 ровно. Это код в `fill()` ради
|
||||||
13 КБ; не стоит того, но если место когда-нибудь прижмёт — вариант есть.)
|
13 КБ; не стоит того, но если место когда-нибудь прижмёт — вариант есть.)
|
||||||
|
|
||||||
|
## 1в. Бюджет памяти EMM (живой замер 2026-08-20)
|
||||||
|
|
||||||
|
Замерено `mem_info` из работающей программы (уровень 1), а не посчитано на
|
||||||
|
бумаге: инструментовка ставилась временно и откатана.
|
||||||
|
|
||||||
|
| | страниц | КБ |
|
||||||
|
|---|---:|---:|
|
||||||
|
| всего в машине | 256 | 4 096 |
|
||||||
|
| система (DSS) + сам exe: база + 8 банков кода | **43** | 688 |
|
||||||
|
| наши ассеты | **81** | 1 296 |
|
||||||
|
| **занято** | **124** | 1 984 |
|
||||||
|
| **свободно** | **132** | **2 112 (2,06 МБ)** |
|
||||||
|
|
||||||
|
Разбивка 81 страницы ассетов (сходится точно):
|
||||||
|
|
||||||
|
| набор | страниц |
|
||||||
|
|---|---:|
|
||||||
|
| **Тень** (`sk*` 28 + `sf*` 4) | **32** |
|
||||||
|
| Кид (`kid0..27`) | 28 |
|
||||||
|
| фон тайлсета (env 10 + wall 1 + fore 1) | 12 |
|
||||||
|
| страж | 5 |
|
||||||
|
| зелья (chtab_1), меч, `kid_data.bin`, страница уровня | по 1 |
|
||||||
|
|
||||||
|
Самый крупный потребитель теперь — **набор Тени, 32 страницы**, больше
|
||||||
|
самого Кида. Если место когда-нибудь прижмёт, там есть очевидный резерв
|
||||||
|
(кадры смерти и позы, в которых Тень не бывает), но при 132 свободных
|
||||||
|
страницах трогать незачем.
|
||||||
|
|
||||||
|
### Что из этого следует для звука
|
||||||
|
|
||||||
|
| статья | страниц | останется свободно |
|
||||||
|
|---|---:|---:|
|
||||||
|
| эффекты WAV, все 31, 10 937,5 Гц | **8** | 124 |
|
||||||
|
| музыка ПО ХОДУ игры в WAV (путь C, 12 треков) | 50 | 74 |
|
||||||
|
| заставки и титры в WAV (10 треков, 248 с) | 167 | **не влезает** |
|
||||||
|
|
||||||
|
То есть эффекты — капля, игровая музыка в WAV тоже поместится, а
|
||||||
|
заставочную придётся стримить с диска в любом случае (что и планировалось:
|
||||||
|
во время заставок игра ничего не рисует).
|
||||||
|
|
||||||
|
Оговорка: 132 свободных страницы — это на уровне 1. На уровне 9 добавятся
|
||||||
|
зеркальные наборы (`pop_vflip_load_all`: 28 Кид + 5 страж + меч = 34
|
||||||
|
страницы), останется ~98. Проверять запас надо ИМЕННО ТАМ.
|
||||||
|
|
||||||
## 2. Что лежит в ассетах (замерено, а не по памяти)
|
## 2. Что лежит в ассетах (замерено, а не по памяти)
|
||||||
|
|
||||||
Звук в PoP адресуется как ресурс `10000 + N`, N = 0..56 — 57 звуков
|
Звук в PoP адресуется как ресурс `10000 + N`, N = 0..56 — 57 звуков
|
||||||
|
|||||||
Reference in New Issue
Block a user