Катсцены: fade длиной как в оригинале, музыка дослушивается до уровня
ДЛИТЕЛЬНОСТЬ. fade_in_1/fade_out_1 у оригинала — 64 шага палитры по два тика, то есть 128 тиков = 2,13 с каждый; сцена перед уровнем 2 идёт с ними около семи секунд. Наши четыре кадра укладывались в восемь сотых секунды, и сцена выходила втрое короче. INTRO_FADE и TITLE_FADE теперь POP_T60(128). Ступеней яркости стало восемь вместо четырёх (7/8, 3/4, 5/8, 1/2, 3/8, 1/4, 1/8, 0 — каждая парой сдвигов, умножения на Z80 не нужно): растянуть четыре ступени на две секунды значило бы получить четыре скачка яркости. МУЗЫКА. Прошлый коммит отдавал трек доигрывать уже в игре — так делает оригинал. На слух вышло хуже: музыка спотыкается, потому что загрузка уровня не даёт насосу долить блок вовремя (у DOS-версии такой проблемы нет). Дослушиваем под чёрным экраном, до отрисовки уровня — тем более что следующий load_intro у оригинала всё равно начинается с ожидания тишины (seg001:681). Пропуск сцены обрывает и музыку. Заодно: WAIT перед PV пересчитан (584 вместо 707 — наш fade больше не короче), а тема титров пускается ПОСЛЕ fade_in, как в show_title. Host-тесты: 15 наборов. Проверено в MAME: плавное появление титров. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -34,9 +34,14 @@ void pop_text_right_mapped(pop_text_font_t font, int right, int baseline,
|
||||
const char *s);
|
||||
|
||||
/* Снимок обеих (идентичных по контракту) палитр хранится в свободном хвосте
|
||||
* FONT.ATL. dim_step: 0 — исходная, 1 — ~75%, 2 — 50%, 3 — 25%, 4 — чёрная.
|
||||
* FONT.ATL. dim_step: 0 — исходная, POP_PAL_DIM_BLACK — чёрная; между ними
|
||||
* восемь равных ступеней (7/8, 3/4, 5/8, 1/2, 3/8, 1/4, 1/8). Восемь, а не
|
||||
* четыре, потому что fade оригинала длится 2,13 с: на четырёх ступенях это
|
||||
* четыре заметных скачка яркости.
|
||||
* keep_ui сохраняет диапазон 0x37..0x3F ярким для текста/рамки меню. */
|
||||
void pop_ui_palette_snapshot(void) __banked;
|
||||
#define POP_PAL_DIM_BLACK 8
|
||||
|
||||
void pop_ui_palette_dim(uint8_t dim_step, uint8_t keep_ui) __banked;
|
||||
void pop_ui_palette_restore(void) __banked;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user