From 22cdc67c3a9c56aa938b49dfecb62210f22ee721 Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Thu, 20 Aug 2026 12:25:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B2=D1=83=D0=BA:=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D1=80=D0=B6=D0=B4=D1=91=D0=BD=20=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D0=B0=D1=82=20(8=20=D0=B1=D0=B8=D1=82=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=BD=D0=BE)=20=D0=B8=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B1=D1=8E=D0=B4=D0=B6=D0=B5=D1=82=20EMM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Формат оригинала проверен по convert_digi_sound: один байт на кадр (моно), байт беззнаковый с центром 0x80 — ровно формат нашего CBL. Стерео в данных нет, каналы размножаются на выходе. Живой замер памяти из работающей программы: занято 124 страницы из 256 (система с exe 43, наши ассеты 81), свободно 132 = 2,06 МБ. Самый крупный ассет теперь набор Тени — 32 страницы. Эффекты WAV займут 8. --- applications/PoP/docs/sound_plan.md | 50 ++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/applications/PoP/docs/sound_plan.md b/applications/PoP/docs/sound_plan.md index 8b84ee9..f3d0b3c 100644 --- a/applications/PoP/docs/sound_plan.md +++ b/applications/PoP/docs/sound_plan.md @@ -72,7 +72,11 @@ B имеет смысл только если C окажется неподъё ## 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). 3. **Заставки и титры — потом WAV.** Конфликта с эффектами там нет: одновременно они не звучат. @@ -108,6 +112,50 @@ B имеет смысл только если C окажется неподъё четырежды в рантайме: 2 750 × 4 = 11 000 ровно. Это код в `fill()` ради 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. Что лежит в ассетах (замерено, а не по памяти) Звук в PoP адресуется как ресурс `10000 + N`, N = 0..56 — 57 звуков