Теперь соединяем каждую из невидимых



Теперь соединяем каждую из невидимых кнопок со своей же собственной PGC. Таким образом, при попадании на любую из невидимых кнопок, плеер автоматически перейдет к Pre PGC текущего меню. Теперь напишем последовательность команд, которая будет выполнять нужные нам действия, на Pre PGC первого меню эпизодов.
1:Mov GPRM0, 9216
2:if ( GPRM0 == SPRM8 ) SetSTN audio=1
3:if ( GPRM0 == SPRM8 ) LinkPGN PTTMenu1-t-scn-pg, button=1
4:Mov GPRM0, 11264
5:if ( GPRM0 == SPRM8 ) SetSTN audio=2
6:if ( GPRM0 == SPRM8 ) LinkPGN PTTMenu1-t-scn-pg, button=2
7:Mov GPRM0, 8192
8:if ( GPRM0 == SPRM8 ) SetSTN audio=3
9:if ( GPRM0 == SPRM8 ) LinkPGN PTTMenu1-t-scn-pg, button=3
10:Mov GPRM0, 10240
11:if ( GPRM0 == SPRM8 ) SetSTN audio=4
12:if ( GPRM0 == SPRM8 ) LinkPGN PTTMenu1-t-scn-pg, button=4
13:SetSTN audio=1
14:SetHL_BTNN HL_BTNN=1
Рассмотрим подробно набор команд только для одной кнопки (9 невидимой и первой видимой), поскольку наборы команд для каждой кнопки по сути одинаковы.
Mov GPRM0, 9216 - по этой команде (Set GPRM) мы записываем в регистр GPRM0 номер кнопки. Почему 9216? Потому, что DVD плеер в регистр SPRM8, в котором хранится номер последней выбранной кнопки, записывает номер кнопки, умноженный на 1024, т.е. 8-ая кнопка будет запомнена с кодом 9216, а 11 кнопка, например, с кодом 11264.
if ( GPRM0 == SPRM8 ) SetSTN audio=1 - по этой команде (Set Angle/Audio/Sub-picture)мы устанавливаем для воспроизведения первую звуковую дорожку в том и только в том случае, если зритель выбрал переход к кнопке "Часть 1" (первой) и тем самым сработала 8-ая невидимая кнопка.
if ( GPRM0 == SPRM8 ) LinkPGN PTTMenu1-t-scn-pg, button=1 - по этой команде (Jump to Program), опять же в том и только в том случае, если зритель выбрал переход к кнопке "Часть 1" (первой) и тем самым сработала 8-ая невидимая кнопка, мы переходим к нашему же меню эпизодов.
Последние команды (13 и 14) предназначены для тех случаев, когда мы попадаем в данное меню эпизодов извне, из другого меню эпизодов по кнопкам "Вперед" или "Назад" или же из главного (root) меню. Если же меню будет просто крутиться в цикле, то будет одна и та же кнопка и музыка к ней соответственно, но для этого не забудьте "замкнуть" воспроизведение меню через команду cell. Что еще необходимо - на Pre основного фильма следует обязательно "повесить" команду установки первой звуковой дорожки. Дело в том, что если хотя бы в одном Title есть несколько дорожек, то DVD плеер будет считать, что у каждого Title в этом VTS тоже по 4 дорожки. Поэтому, если вы ушли в фильм из меню при включенной 4-ой звуковой дорожке, то звука фильма вы не услышите - так четвертая и несуществующая (для фильма) дорожка и останется включенной.
При смене кнопки и звуковой дорожки кнопки нашего тестового проекта на мгновение исчезнут, но надо понимать, что это происходит только из-за того, что в нашем проекте кнопки являются единственными картинками в меню, т.е. меню состоит фактически из subpicture. В реальных меню такого эффекта не будет.
Готовый проект вы можете переписать отсюда.
Пример, рассмотренный выше легок в том смысле, что вы создаете физически один клип или одно still show меню и только меняете звуковые дорожки. Минусы у такого способа таковы:
1. Для зрителя на индикаторе DVD плеера будет та же картина, что и при просмотре обычного видео, поскольку меню эпизодов размещается не в домене Language. Строго говоря, следует через UOP запретить возможность перемотки клипов такого меню, остановки, переключения звуковой дорожки и т.п.
2. PGC в Title с меню надо перемещать к началу DVD диска, ближе к Root menu, как показано на рисунке:

Содержание раздела