Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

DVD-lab PRO

.pdf
Скачиваний:
45
Добавлен:
24.05.2014
Размер:
5.72 Mб
Скачать

Команды на DVD диске могут быть во многих местах, но в большинстве случаев Вы будете искать команды PRE и POST. Команда PRE - перед объектом (Кино, Меню), ПОСТ - только после того, как объект отработал.

DVD lab Pro введет команды PRE/POST по умолчанию, чтобы создать все связи, и Вы можете добавить ваши собственные команды перед ними. Это имеет преимущество, так если Вы не хотите, чтобы команды DVD-lab Pro были выполнены, просто помещаете команду Break .

Структура любого объекта похожа на эту это:

PRE

 

Object

 

POST

 

 

 

 

 

Your Custom Commands

 

MOVIE

 

Your Custom Commands

 

MENU

 

 

 

 

 

 

 

SLIDESHOW

 

 

DVD-lab added commands

 

 

DVD-lab added commands

 

etc.

 

 

 

 

 

 

 

 

 

 

Окно VM Command, которое появляется, когда Вы выбираете "Edit VM Commands", отражает эту ситуацию

Обратите внимание: о меню. Меню всегда выполняют команду PRE, когда Вы идете в меню, но если Вы выходите из меню с кнопкой, команда POST меню не выполнена, вместо этого выполнится Button VM Command (одна строка) назначенная на кнопку. Команда POST меню выполнится только если длительность меню окончилась (или при отсутствии цикла для motion или audio меню).

Chapter Commands

Кино может иметь команду VM на каждой главе. Их также называют cell commands(командами ячейки). Когда Вы находитесь в окне Movie, правый щелчок на

указателе главы и в выпавшем меню выберите Chapter VM Command...

Команда главы может быть только одностроковой.

Техническое примечание: Если глава имеет VM команду, возможно возникновение короткой паузы в этом месте при воспроизведении.

DVD Domains

Объекты и команды на DVD могут быть в нескольких различных местах названных доменами. Мы имеем:

First-play (FP)

Video Manager (VMG)

Video Title Set (VTS)

Video Title Set Menu (VTSM)

Если Вы хотите знать больше о структуре, см. приложение.

Variables (registers, GPRM, SPRM)

Как и любой язык, команды VM имеют несколько регистров (или переменные) которые могут использоваться для чтения или сохранения временных значений.

Есть 16 регистраторов GPRM (General Parameter), которые могут свободно использоваться программистом DVD и 24 регистра SPRM (System Parameters), которые используются для обращения к информации плеера (например регион). Вы не можете записывать в регистры SPRM.

Есть 16 регистров GPRM0 - GPRM15, но как описано выше, DVD-lab Pro заносит в них собственный код VM для выполнения тех команд, которые Вы создаете визуально при проектировании диска. В DVD-lab Pro мы попытались использовать минимальное количество регистров для наших внутренних целей. Это GPRM11...

GPRM15 включительно. Запись в эти регистры производится при использовании DVD-lab Pro-abstraction layer. Не изменяйте их!

Мы постарались использовать как можно меньше регистров, так что Вы можете использовать остальные для ваших собственных потребностей.

DVD-lab Pro reserved GPRM registers

GPRM11

Используется, чтобы связать Movie со определенным меню VTS и для подсвечивания кнопки в Menu

 

 

GPRM12

Используется для временного хранения данных

 

Используется для идентифицикации текущего play-lists*

GPRM13

 

Используется как счетчик в списках Counter и Random

GPRM14

 

Используется для объекта Return to last menu

GPRM15

 

 

* GPRM13 также используется как одноразовый флажок, чтобы удостовериться, что плеер стартует с subtitles OFF.

Вы можете свободно использовать регистры GPRM0... GPRM10 для ваших собственнх VM команд.

PGC Numbers

Мы также упомянем об этом на следующих страницах, но важно помнить:

Для Команд VM добавляется 1 к номеру PGC для всех меню (VTS and VMG)

Первое меню VTS, которое показано в Connections как ROOT, находится в PGCN 2.

Всегда есть скрытое меню для каждого VTS (PGCN 1), которое имеет специальное назначение*. Чтобы посмотреть его VM команды, правый щелчок в окне Project и выбрать VTS Root VM...

Первое меню VMG, которое показано в Connections как TITLE, находится в PGCN 2

Всегда есть скрытое меню (PGCN 1) перед другими видимыми меню VMG, которое имеет специальное назначение*. Чтобы посмотреть его VM команды, правый щелчок в окне Connections на Title Button и выбрать Edit VM Commands...

Вы можете в окне Connection, отобразить истинный номер PGC, выбрав Show PGC. Вы можете использовать этот номер непосредственно в командах VM как номер PGC

* Это не применяется, если Вы планируете Компилировать без Abstraction Layer. Без AL не будет никакого скрытого меню, и поэтому первое видимое меню в DVD-lab Pro также станет PGC 1 как и ожидается

Advanced Authoring - VM Editor

Редактирование VM Commands

Когда Вы нажимаете кнопку Edit, чтобы добавить новую VM Command будет открыт редактор VM Command - VM Editor. VM Editor имеет некоторые особенности, которые помогут Вам записывать синтаксически правильный сценарий. Это проявляется как: подсветка команды, авто завершение и проверка сценария в реальном времени. Вы не сможете записать команду, которая имеет неправильный синтаксис.

1 - Окно редактирования

Здесь Вы набираете команды. Редактор подсвечивает синтаксис и автозавершение команды .

Автозавершение:

Поскольку Вы набираете команду, обратите внимание, что команда также выбирается в списке VM Command (4). Нажимая клавишу TAB выбранная команда в списке будет автоматически написана в том месте, где вы пишите команду.

Например мы начинаем набирать:

Link

LinkPGCN выбирается в списке (4), так как мы набрали Link. Нажмите TAB текст будет автоматически закончен:

LinkPGCN

Мы можем также выбрать другие команды, например LinkPTT, и или нажать TAB, или сделать двойной щелчок на элементе в списке (4)

2 - Окно контроля

Это - очень важное окно для автоматического контроля синтаксиса команды. По мере того как Вы набираете команду, это окно будет показывать Вам подсказки и если синтаксис в порядке, оно покажет Вам полный синтаксис команды.

Auto-guidance

Авторуководство дает подсказки, когда Вы набираете команду, и он будет показан, по мере того как редактор читает вашу строку.

Например мы хотели бы добавить строку if (GPRM1 ==2 ) LinkPGCN 4 на строке 3. Мы начинаем набирать:

Мы набираем

 

Что показывает Control window

 

Детали

if

 

Expecting 'if (...'

 

OK, мы должны напечатать скобку "("

if (

Expecting: if (GPRMx...

Следующим должен быть параметр GPRM

if (GPRM1

Expecting operand: if (GPRMx ==, !=, >=, >, <=, <

и оператор

if (GPRM1 ==

Expecting: if (GPRMx op 'GPRM/SPRM or constant'

затем ожидается второй параметр

if (GPRM1 ==2

Expecting: if (...')'

и закрывающая скобка ")"

if (GPRM1 ==2 )

if (GPRM0 == 0) Nop

Синтаксис в порядке, но мы хотим напечатать еще

if (GPRM1 ==2 ) LinkPGCN

if (GPRM1 == 2) LinkPGCN 0

мы пропускаем параметр, который интерпретируется как 0

if (GPRM1 ==2 ) LinkPGCN 4

if (GPRM1 == 2) LinkPGCN 4

теперь синтаксис команды введен

Кнопка завершения строки

 

 

Всякий раз, когда мы видим в окне управления, и командную строку, мы можем передать ее к нашей строке в редакторе. Например мы напечатали:

JumpSS VTSM

и окно управления показывает: JumpSS VTSM (vts 0, tt 0, menu 0)

Так интерпретируется наша команда , но очевидно мы нуждаемся в большем количестве параметров. Вместо того, чтобы печатать это в нашем редакторе (1) мы можем просто нажать кнопку завершения строки около окна управления:

Появится целая строка в редакторе. Теперь мы можем заменить нули на необходимые числа:

JumpSS VTSM (vts 1, tt 1, menu 3)

Quick Link (Быстрая Связь)

Это поможет Вам найти верную связь к другим объектам в проекте DVD-lab Pro. Скажем, мы редактируем VM command кино, и мы хотели бы связаться отсюда с меню VMG. Quick Link предложит:

CallSS VMGM (pgc 2, rsm_cell 1) * см. ниже примечание о номерах PGC

3 - Hex Preview

Hex Preview показывает, как команда VM будет записана на DVD. Это удобно для расширенной отладки.

4 - Список команд

Мы уже знаем, что выбирая команды и нажимая TAB или делая двойной щелчок мы производим подстановку в редактируемую в настоящее время команду в редакторе. Ниже списка - короткое описание команды и домене ее использования.

Например для JumpSS VTSM мы видим это:

Это говорит нам, что мы можем использовать эту команду в First Play, VMG menu или VTS menu. Мы не можем использовать эту команду из кино.

5 - Reverse VM code

Иногда мы имеем код VM в шестнадцатеричном формате, например при просмотре предварительно откомпилированного ifo файла. Поскольку Вы напечатали ШЕСТНАДЦАТЕРИЧНЫЕ ЧИСЛА, Окно контроля (2) показывает соответствие коду дезассемблированную команду.

Free syntax (Свободный синтаксис)

Нет единого пути, чтобы записать VM command. VM Editor понимает много различных способов, которыми строка может быть написана.

Например строка

GPRM1 = 15

может быть также написана как:

MOV(GPRM1,15)

MOV(GPRM1 15)

MOV GPRM1 15

GPRM1 mov 15

mov GPRM1 0x0F

....

Вы будете видеть, которая показывает что синтаксис команды правильный, но окно Control будет всегда показывать только один синтаксис, тот который использует DVD-lab PRO. Также, когда Вы

закрываете и открываете окно редактирования независимо от того, какой синтаксис Вы набирали до этого, будет изменен на тот, что использует DVD-lab PRO. Это называется Нормализацией Синтаксиса (Syntax Normalization), и без этого мы не способны понять друг друга.

Syntax normalization

Когда мы закроем VM Editor и затем снова его откроем весь синтаксис будет нормализован (приведен к тому что использует DVD Lab PRO)

Например мы набрали

LinkPGN (2,3)

и закрыли редактор, наша строка будет автоматически приведена в вид:

LinkPGN 2 (button 3)

Если мы наберем

MOV(GPRM1,0x0F)

строка будет автоматически приведена в вид:

GPRM1 = 15

PGC Numbers

Поскольку Вы знакомитесь с VM command и когда попробуете Quick Link, Вы поймете, что означает номер PGC, который означает больше чем, то что видно в Connections.

Например мы хотим сделать связь из Menu 2 в Menu 1 (ROOT), и Quick Link предложит LinkPGCN 2 и это правильная команда, хотя по идее должно быть LinkPGCN 1. Почему так? Потому что:

При использовании VM Command, добавьте 1 к номеру PGC для всех меню (VTS и VMG)

Первое VTS меню, которое будет показано в connections как ROOT, в DVD-lab PRO - PGCN 2.

Всегда есть скрытое меню для каждого VTS (PGCN 1), которое имеет специальную цель*. Чтобы увидеть его VM command, правый щелчок в окне Project и из меню выбираем VTS Root VM...

Первое VMG меню, которое будет показано в connections как TITLE, в DVD-lab PRO - PGCN 2

Есть всегда скрытое меню (PGCN 1) перед другими видимыми меню VMG, которое также имеет специальную цель*. Чтобы увидеть его VM command, правый щелчок в окне Connections на Title Button и из меню выбираем Edit VM Commands

Вы можете указать, чтобы в окне Connection отображался истинный номер PGC вместо порядка элемента, нажав на кнопку Show PGC Number. Номер PGC появляется в верхнем левом углу объекта (отображается красным цветом).

Вы можете тогда использовать этот номер непосредственно в VM Commands как номер PGC

*Это не применяется, если Вы планируете компилировать без Abstraction Layer. Без AL не будет создано скрытого меню, и поэтому первое видимое меню в DVD Lab PRO также станет PGC 1, как ожидается

Вы должны помнить об этом, иначе Вы будете удивлены, почему ваши команды не работают должным образом.

Advanced Authoring - Visual Block Editor (Визуальный Редактор Блоков)

Редактирование VM Command, используя Visual Block Editor

В зависимости от ваших параметров настройки, кнопка Edit в Customize VM commands, запустит Visual block Editor

или Script Editor.

Вы можете переключаться между этими редакторами непосредственно в Customize VM commands. По умолчанию выбран Block editor, но Вы можете изменить настройки по умолчанию в свойствах проекта - позиции Advanced:

Вы можете переключаться между этими редакторами, даже если уже у Вас запущен VM Script или VM blocks. Программное обеспечение сообщит Вам это

Blocks to Script, блоки будут приведены к коду VM Command

Script to Blocks, расширить сценарий до блоков, или создать отдельный Script Block.

Visual Block Editor

Редактор VM Block - специальная помощь при написании VM command. Это преодолевает старую проблему программирования со статическим кодом сценария, где например имея Goto 15 или Link PGC 10 мы не увидим результата сразу и возможно, что Goto может перейти на неправильную строку, или команда Link может указать объект не тот, что мы хотели.

VM Block упростит запись команд VM, создавая динамический код. Команды Goto привяжутся к блоку и сохранят взаимосвязь, даже если мы переупорядочиваем, добавляем, или удаляем блоки. Команды Link укажут на названный объект подобно Меню 2 или Кино 10, и мы не должны волноваться, что это изменится, если мы переупорядочиваем наши объекты. Также мы не должны помнить, какая команда необходима, чтобы выполнить такую связь, это может

быть JumpSS, LinkPGC, CallSS и т.д, блочный редактор будет заботиться о корректности использования команд.

Block Editor - уникальный инструмент в DVD-lab PRO, который является визуальным и очень функциональным.

Существует пять основных блоков:

Operator

Link

Script

if-Goto

if-Link

Вы добавляете блок, нажимая на кнопки сверху с этими основными названиями. Окно свойств откроется с вариантами, как установить блок. Например Operator откроет свойства:

Script Block откроет известный VM Script Editor

Редактирование блоков

Если Вы хотите отредактировать блоки, просто дважды щелкают на них.

Перестроение блоков

Вы можете просто перетащить любой блок и поместить его выше или ниже.

Registers Alias (Псевдоним Регистров)

Регистры GPRM могут иметь псевдоним в Block editor. Так например вместо GPRM0 = 4 мы можем использовать Counter = 100, если мы изменяем псевдоним GPRM0 на Counter. Просто дважды щелкните на зеленой области псевдонима регистра и напечатайте новое имя.

Он является динамическим, как только мы изменяем имя, все регистры в VM Block отразят изменения:

Светка и разворачивание блоков

Блоки могут быть свернуты до одного блока Script, или блок Script распаковаться в обычные блоки (если это возможно)

Например мы можем упростить большую блок-схему выше к одному Script Block:

Затем мы можем сделать двойной щелчок и редактировать его в VM Script editor.

Или наоборот мы можем выбрать Script Block и развернуть его назад до диаграммы. Конечно некоторые VM block не могут быть расширены вне VM Script и останутся как Script Block.

Сохранение графического изображения

Вы можете сохранить блоки в изображение и затем использовать его, например в сети, в документации или на форумах для объяснения. Просто нажмите кнопку Save to Image.

Небольшие примечания

Когда Вы пишете Script Block и используете команду Goto в нем, Вы должны корректно указать переход только локально, и не заботиться, где этот блок сценария фактически - между другими блоками.

Например в нашем Script Block мы записываем в строке 4 перейти на строку 6. Не имеет значения, если этот Script Block будет выше или ниже других блоков.

Фактически строка с Goto будет откорректирована соответственно, на конечной стадии в отношении полной позиции. Конечно команд ifgoto, как мы использовали выше, может быть фактически расширена до блока If-Goto так что нет действительно никакой потребности записывать goto в Script Block.

Advanced Authoring - GPRM Operators

Мы уже показали некоторые примеры операторов, которые могут использоваться с регистраторами GPRM. Наиболее показателен

GPRM1 = 15

Это - один из многих операторов, и просто называется оператором Assign. На предыдущей странице Вы, возможно, также читали о нормализации Синтаксиса, и то, что VM редактор в DVD Lab Pro весьма открыт к различным синтаксисам, однако он всегда будет заменять команду в ее родной синтаксис

Оператор

Assign

Назначить

Swap

Перестановка

Addition

Добавление

Subtraction

Вычитание

Multiply

Умножение

Divide

Деление

Remainder

Остаток

Random

Случайный

AND

И

OR

ИЛИ

XOR

Пример оператора

GPRM1 = 15 GPRM1 = GPRM2 GPRM1 = SPRM1

GPRM1 <-> GPRM2

GPRM1 += 15 GPRM1 += GPRM2

GPRM1 -= 15 GPRM1 -= GPRM2

GPRM1 *= 15 GPRM1 *= GPRM2

GPRM1 /= 15 GPRM1 /= GPRM2

GPRM1 %= 15 GPRM1 %= GPRM2

GPRM1 rnd 15 GPRM1 rnd GPRM2

GPRM1 &= 15 GPRM1 &= GPRM2

GPRM1 |= 15 GPRM1 |= GPRM2

GPRM1 ^= 15 GPRM1 ^= GPRM2

Альтернативный синтаксис

mov GPRM1, 15 GPRM1 mov 15 MOV(GPRM1, 15)

swp GPRM1, GPRM2 GPRM1 swp GPRM2 SWP(GPRM1,15)

add GPRM1, 15 GPRM1 add 15 ADD(GPRM1,15)

sub GPRM1, 15 GPRM1 sub 15 SUB(GPRM1,15)

mul GPRM1, 15 GPRM1 mul 15 MUL(GPRM1,15)

div GPRM1, 15 GPRM1 div 15 DIV(GPRM1,15)

mod GPRM1, 15 GPRM1 mod 15 MOD(GPRM1,15)

rnd GPRM1, 15 RND(GPRM1,15)

and GPRM1, 15

GPRM1 and 15

AND(GPRM1,15)

or GPRM1, 15 GPRM1 or 15 OR(GPRM1,15)

xor GPRM1, 15 GPRM1 xor 15 XOR(GPRM1,15)

Пояснение

Назначить значение или взять значение из другого регистра

Взаимозаменить значения двух регистров

GPRM1 = GPRM1 + 15

GPRM1 = GPRM1 - 15

GPRM1 = GPRM1 * 15

GPRM1 = GPRM1 / 15

GPRM1 = GPRM1 % 15

Остаток или модуль после деления

Случайное значение между 0-15

Логическое И

Логическое ИЛИ

Логическая неэквивалентность

Из приведенной таблицы ясно, что левой стороной оператора может только быть регистр GPRM. Правой стороной оператора может быть другой регистр GPRM, SPRM регистр или константа.

If Condition

Для проверки состояния регистров GPRM есть команда if (.....).....

Пример предварительной проверки:

if (GPRM1 ==2 ) LinkPGCN 4

Кроме == используется большое количество других операторов:

Оператор

Пример оператора

Пояснение