Compare commits
2 Commits
7377bf6a2c
...
31d0075090
| Author | SHA1 | Date | |
|---|---|---|---|
| 31d0075090 | |||
| 6176f6da31 |
Binary file not shown.
Binary file not shown.
@@ -17,6 +17,7 @@
|
||||
#include <sprite.h> /* gfx_w0_map/unmap — доступ к странице индекса */
|
||||
#include "pop_music.h"
|
||||
#include "pop_sfx.h"
|
||||
#include "_pop_sfx.h" /* pop_snd_ok — открыт ли вывод (см. pop_music_busy) */
|
||||
#include "pop_app.h" /* POP_APP_DEMO — в демке музыки нет */
|
||||
#include "_pop_file.h"
|
||||
|
||||
@@ -454,7 +455,15 @@ void pop_music_service(void) __banked
|
||||
|
||||
uint8_t pop_music_busy(void) __banked
|
||||
{
|
||||
return (uint8_t)(pop_mus_left != 0);
|
||||
/* «ЗВУЧИТ», А НЕ «ЕСТЬ КУРСОР». Курсор трека двигает насос CBL, и пока
|
||||
* вывод закрыт (pop_sfx_pause на загрузке уровня, Ctrl+S, показ заставки
|
||||
* после Restart Game) pop_mus_left не убывает НИКОГДА. Вызывающий,
|
||||
* который ждёт конца мелодии, в этом состоянии висит вечно — ровно так
|
||||
* заставка после Restart Game вставала на экране Prince of Persia
|
||||
* (поймано пользователем 2026-09-02). Корень того случая был в другом
|
||||
* (CBL не открывался заново, см. pop_boot_sound), но ждать неиграющую
|
||||
* музыку нельзя в принципе, поэтому признак спрашивает и про вывод. */
|
||||
return (uint8_t)(pop_snd_ok && pop_mus_left != 0);
|
||||
}
|
||||
|
||||
/* ТРЕК В РАБОТЕ — заявка лежит, идёт загрузка или он звучит.
|
||||
|
||||
@@ -1205,14 +1205,23 @@ int pop_boot(void) __banked
|
||||
* полсекунды, и лучше, чтобы она прошла под картинкой. */
|
||||
int pop_boot_sound(void) __banked
|
||||
{
|
||||
if (boot_sound_done) return 0;
|
||||
boot_sound_done = 1;
|
||||
(void)pop_sfx_init_begin(); /* эффектов может и не быть — не фатально */
|
||||
/* Индекс музыкального набора — одна страница EMM. Без него музыки не
|
||||
* будет (pop_music_info вернёт -1 на любой трек), но игра работает:
|
||||
* это необязательный ресурс, как и сами треки. */
|
||||
(void)pop_music_index_load();
|
||||
pop_settings_apply(1); /* CFG -> speed/cheats/CBL */
|
||||
if (!boot_sound_done) {
|
||||
boot_sound_done = 1;
|
||||
(void)pop_sfx_init_begin(); /* эффектов может и не быть — не фатально */
|
||||
/* Индекс музыкального набора — одна страница EMM. Без него музыки не
|
||||
* будет (pop_music_info вернёт -1 на любой трек), но игра работает:
|
||||
* это необязательный ресурс, как и сами треки. */
|
||||
(void)pop_music_index_load();
|
||||
pop_settings_apply(1); /* CFG -> speed/cheats/CBL */
|
||||
}
|
||||
/* ОТКРЫТИЕ CBL — ВНЕ РАЗОВОГО ГАРДА, и это не мелочь. Загрузка нужна
|
||||
* один раз за запуск, а вот вывод к моменту следующего показа заставки
|
||||
* почти наверняка закрыт: pop_title_show начинается с pop_sfx_pause, да
|
||||
* и уровень оставляет CBL закрытым. Пока start стоял под флагом,
|
||||
* Restart Game приводил к заставке БЕЗ музыки (поймано пользователем
|
||||
* 2026-09-02), а заодно подвешивал ожидания «дослушать тему»: с
|
||||
* выключенным насосом pop_mus_left не убывает, и pop_music_busy()
|
||||
* истинен вечно. Идемпотентно и уважает Ctrl+S (pop_snd_want). */
|
||||
(void)pop_sfx_start();
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user