d86adc54c4
Добавлены треки 54 (тема титров), 50/53/52 (три реплики сцены с принцессой и Джафаром) — заставка звучит целиком, как в оригинале. pop_music: два слота EMM. Реплики идут встык, паузы под загрузку нет, поэтому следующая читается в НЕ играющий слот, а play подменяет резидентную таблицу страниц. Своей копии таблицы слот не держит — её хранит блок EMM. Плюс постраничная загрузка (load_begin/load_step): страница стоит 33 мс, четверть логического кадра сцены, и подкачка посреди анимации не видна. Тайминги: все длительности сцен — в тиках оригинала (60 Гц), перевод в кадры луча делает POP_T60. Пока сцены были немыми, разбег в 20 % был незаметен; с музыкой реплика кончалась раньше картинки. Переведены титры, история, хвост после PV и пейсинг самой PV-сцены. Паузы, которые оригинал отмеряет концом сэмпла, теперь равны реальной длине наших записей: конец m50 на тике 846, вход Джафара 1046, уход 2073, конец сцены 2500 (было 1959). Fade перед PV сдвинут так, чтобы полная темнота наступала в тот же момент трека, что у SDLPoP: их fade длиннее нашего на 123 тика, наш полосовой переход длиннее на 16. Финальная сцена: убраны песочные часы — end_sequence_anim не трогает hourglass_state, а reset_cutscene его обнулил. Уровень пройден, время больше не идёт. Проверено в MAME: цепочка 54 -> 55 -> 50 -> 53 -> 52 отыгрывается целиком, интро доходит до демо-режима. Host-тесты: 15 наборов. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
84 lines
2.7 KiB
C
84 lines
2.7 KiB
C
/*
|
|
* pop_music_tbl.h — каталог музыкальных треков, СГЕНЕРИРОВАН.
|
|
* Источник: applications/PoP/PoP1_DOS_music/flac (записи DOS-версии).
|
|
* Генератор: toolchain/pop_pack_music.py. Руками не править.
|
|
*
|
|
* Нумерация id — оригинала (SDLPoP data/music/names.txt). pages —
|
|
* сколько кусков m<id>_<nn>.bin лежит на диске, blocks — длина трека
|
|
* в порциях насоса по 128 байт (в байтах не влезло бы в uint16).
|
|
*/
|
|
#ifndef POP_MUSIC_TBL_H
|
|
#define POP_MUSIC_TBL_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define POP_MUS_COUNT 56
|
|
#define POP_MUS_BLOCK 128
|
|
#define POP_MUS_MAX_PAGES 20
|
|
|
|
typedef struct {
|
|
uint8_t pages; /* 0 — трека нет */
|
|
uint16_t blocks; /* длина в порциях по 128 байт */
|
|
} pop_mus_ent_t;
|
|
|
|
static const pop_mus_ent_t pop_mus_tbl[POP_MUS_COUNT] = {
|
|
{ 0, 0 }, /* 0 */
|
|
{ 0, 0 }, /* 1 */
|
|
{ 0, 0 }, /* 2 */
|
|
{ 0, 0 }, /* 3 */
|
|
{ 0, 0 }, /* 4 */
|
|
{ 0, 0 }, /* 5 */
|
|
{ 0, 0 }, /* 6 */
|
|
{ 0, 0 }, /* 7 */
|
|
{ 0, 0 }, /* 8 */
|
|
{ 0, 0 }, /* 9 */
|
|
{ 0, 0 }, /* 10 */
|
|
{ 0, 0 }, /* 11 */
|
|
{ 0, 0 }, /* 12 */
|
|
{ 0, 0 }, /* 13 */
|
|
{ 0, 0 }, /* 14 */
|
|
{ 0, 0 }, /* 15 */
|
|
{ 0, 0 }, /* 16 */
|
|
{ 0, 0 }, /* 17 */
|
|
{ 0, 0 }, /* 18 */
|
|
{ 0, 0 }, /* 19 */
|
|
{ 0, 0 }, /* 20 */
|
|
{ 0, 0 }, /* 21 */
|
|
{ 0, 0 }, /* 22 */
|
|
{ 0, 0 }, /* 23 */
|
|
{ 0, 0 }, /* 24 */
|
|
{ 0, 0 }, /* 25 */
|
|
{ 0, 0 }, /* 26 */
|
|
{ 0, 0 }, /* 27 */
|
|
{ 0, 0 }, /* 28 */
|
|
{ 0, 0 }, /* 29 */
|
|
{ 0, 0 }, /* 30 */
|
|
{ 0, 0 }, /* 31 */
|
|
{ 0, 0 }, /* 32 */
|
|
{ 0, 0 }, /* 33 */
|
|
{ 0, 0 }, /* 34 */
|
|
{ 0, 0 }, /* 35 */
|
|
{ 0, 0 }, /* 36 */
|
|
{ 0, 0 }, /* 37 */
|
|
{ 0, 0 }, /* 38 */
|
|
{ 0, 0 }, /* 39 */
|
|
{ 0, 0 }, /* 40 */
|
|
{ 0, 0 }, /* 41 */
|
|
{ 0, 0 }, /* 42 */
|
|
{ 0, 0 }, /* 43 */
|
|
{ 0, 0 }, /* 44 */
|
|
{ 0, 0 }, /* 45 */
|
|
{ 0, 0 }, /* 46 */
|
|
{ 0, 0 }, /* 47 */
|
|
{ 0, 0 }, /* 48 */
|
|
{ 0, 0 }, /* 49 */
|
|
{ 10, 1184 }, /* 50 story_2_princess */
|
|
{ 0, 0 }, /* 51 */
|
|
{ 20, 2443 }, /* 52 story_4_Jaffar_leaves */
|
|
{ 11, 1403 }, /* 53 story_3_Jaffar_enters */
|
|
{ 17, 2064 }, /* 54 intro_theme */
|
|
{ 11, 1350 }, /* 55 story_1_absence */
|
|
};
|
|
|
|
#endif /* POP_MUSIC_TBL_H */
|