Катсцены: 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:
@@ -26,7 +26,7 @@
|
||||
#define TITLE_H 200
|
||||
#define TITLE_Y POP_YOFF
|
||||
#define TITLE_PARTS 5
|
||||
#define TITLE_FADE 4
|
||||
#define TITLE_FADE POP_T60(128) /* 64 шага по 2 тика, как fade_*_1 */
|
||||
|
||||
enum {
|
||||
TITLE_MAIN = 0,
|
||||
@@ -106,13 +106,13 @@ static uint8_t title_wait(uint16_t ticks)
|
||||
static void title_load_palette_dimmed(void)
|
||||
{
|
||||
pop_pal_title_load();
|
||||
pop_pal_apply(4);
|
||||
pop_pal_apply(POP_PAL_DIM_BLACK);
|
||||
}
|
||||
|
||||
uint8_t pop_title_show(void) __banked
|
||||
{
|
||||
uint8_t step;
|
||||
uint8_t skipped = 0;
|
||||
uint8_t skipped = 0, music_ok = 0;
|
||||
int prepared;
|
||||
uint8_t cold_start = (uint8_t)(!title_shown &&
|
||||
!pop_settings.show_build_info);
|
||||
@@ -134,18 +134,21 @@ uint8_t pop_title_show(void) __banked
|
||||
pop_screen_present((uint8_t)prepared);
|
||||
title_shown = 1;
|
||||
|
||||
/* Тема заставки. Порядок как на первом экране истории: сначала диск,
|
||||
* потом открытие CBL, потом пуск — иначе первый же блок насос отдал бы
|
||||
* из ещё не дочитанной страницы. */
|
||||
if (pop_music_load(POP_MUS_INTRO) == 0) {
|
||||
(void)pop_sfx_start();
|
||||
pop_music_play();
|
||||
}
|
||||
/* Тему читаем с диска ЗАРАНЕЕ (пока экран ещё тёмный), а пускаем ниже —
|
||||
* после fade_in, ровно как show_title: fade_in_2, затем
|
||||
* play_sound(sound_54). */
|
||||
music_ok = (uint8_t)(pop_music_load(POP_MUS_INTRO) == 0);
|
||||
|
||||
for (step = 0; step < sizeof(title_scene); step++) {
|
||||
if (step && title_draw(title_scene[step], 1) < 0)
|
||||
break;
|
||||
if (step == 0) pop_pal_fade_in(TITLE_FADE);
|
||||
if (step == 0) {
|
||||
pop_pal_fade_in(TITLE_FADE);
|
||||
if (music_ok) {
|
||||
(void)pop_sfx_start();
|
||||
pop_music_play();
|
||||
}
|
||||
}
|
||||
if (title_wait(title_wait_ticks[step])) {
|
||||
skipped = 1;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user