SearchWiki:

Overview

PmWiki

Side Bar

Recent Changes Printable View Page History Edit Page

DVDAuthor.VMLanguage History

Hide minor edits - Show changes to markup

November 05, 2008, at 09:21 PM by peerkoel
Changed lines 116-117 from:

To use the goto command, place a label made of letter l and a number on a line followed by a colon like so:

to:

To use the goto command, place a label made of letter l and an alphanumeric sequence on a line followed by a colon like so:

Changed lines 120-121 from:

You can then jump to this line in a block by using statment

to:

You can then jump to this line in a block by using statement

Changed lines 124-125 from:

This enabled you to implement loops. For example to calculate the tenth power of 2.

to:

This enables you to implement loops. For example to calculate the tenth power of 2.

Changed line 128 from:
 l1:
to:
 lLOOP:
Changed line 132 from:
  goto l1;
to:
  goto lLOOP;
Added lines 134-135:

The break command is used to quickly exit the pre or post command section. All statements after break are not executed.

November 05, 2008, at 09:12 PM by peerkoel
Changed lines 114-133 from:

According to the changelog for dvdauthor-0.6.12, break and goto have been added to the vm language as statements.

to:

According to the changelog for dvdauthor-0.6.12, break and goto have been added to the vm language as statements.

To use the goto command, place a label made of letter l and a number on a line followed by a colon like so:

 l1:

You can then jump to this line in a block by using statment

 goto l1;

This enabled you to implement loops. For example to calculate the tenth power of 2.

 g0 = 0;
 g1 = 1;
 l1:
 if (g0 lt 10) {
  g1 = g1 * 2;
  g0 = g0 + 1;
  goto l1;
 }
August 12, 2005, at 07:39 PM by Alan Canon
Changed lines 1-2 from:

The DVDAuthor Virtual Machine Language is used to provide code to be executed by the DVD player in response to events such as menu button presses by users.

to:

The DVDAuthor Virtual Machine Language is used to provide code to be executed by the DVD player in response to events such as menu button presses by users.

August 12, 2005, at 07:38 PM by Alan Canon
Changed lines 104-105 from:

Targets a title, or a chapter in a title. Numbering starts at 1. All of the titles on the disc are accessible in the VMGM domain, or you can access them by titleset instead.

to:

Targets a title, or a chapter in a title. Numbering starts at 1. All of the titles on the disc are accessible in the VMGM domain, numbered sequentially no matter what titleset they are located in, so that in a DVD with two titlesets, each of which contains one title, the second title may be accessed with "title 2" . Or you can access them by titleset instead.

Added lines 113-114:

According to the changelog for dvdauthor-0.6.12, break and goto have been added to the vm language as statements.

August 12, 2005, at 07:34 PM by Alan Canon
Changed lines 90-112 from:

Jumps to a particular title or menu, or calls a particular menu, or returns to the calling title. You can only execute a call from a title to a menu; all other forms are illegal. The purpose of using call instead of jump (besides the fact that they support a mutually exclusive list of targets) is to allow the

to:

Jumps to a particular title or menu, or calls a particular menu, or returns to the calling title. You can only execute a call from a title to a menu; all other forms are illegal. The purpose of using call instead of jump (besides the fact that they support a mutually exclusive list of targets) is to allow the menu to return to the point in the title where the call originated using resume. You can manually specify the return cell by using the resume keyword, however if you do not specify one and you use the command in a post instruction block, then it will presume cell 1.

The following are possible targets:

 [vmgm | titleset X] menu

 [vmgm | titleset X] menu Y

 [vmgm | titleset X] menu entry Z

Targets either the default menu, a menu number Y, or the menu denoted as the entry for Z. The menu is in either the VMGM or titleset domain. If you wish to target a menu in the current domain then you can omit the domain moniker.

 [vmgm | titleset X] title Y [chapter Z]

Targets a title, or a chapter in a title. Numbering starts at 1. All of the titles on the disc are accessible in the VMGM domain, or you can access them by titleset instead.

 chapter Z

 program Z

 cell Z 

Targets a chapter, program, or cell in the current title or menu (note that menus do not have chapters). You can use this to create looping menus: jump cell 1;

August 12, 2005, at 07:31 PM by Alan Canon
Added lines 61-90:

 g3=s7;

 {
   audio=1;
   subtitle=65;
   jump vmgm menu 3;
 }

Statements

The statements supported are fairly simple at the moment.

 VARIABLE=EXPRESSION;

Sets a variable equal to the result of an equation.

 if (EXPRESSION) BLOCK;

 if (EXPRESSION) BLOCK; else BLOCK;

Calculates the expression; if true, then it executes the block of code.

 jump TARGET;

 call TARGET [resume CELL];

 resume;

Jumps to a particular title or menu, or calls a particular menu, or returns to the calling title. You can only execute a call from a title to a menu; all other forms are illegal. The purpose of using call instead of jump (besides the fact that they support a mutually exclusive list of targets) is to allow the

August 12, 2005, at 07:29 PM by Alan Canon
Changed line 20 from:

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811
s0Menu Description Language Code
to:

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811
s0  Menu Description Language Code
August 12, 2005, at 07:28 PM by Alan Canon
Changed lines 24-27 from:

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811
s4Title Track Number
s5VTS Title Track Number
s6VTS PGC Number
s7PTT Number for One_Sequential_PGC_Title
to:

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811
s4  Title Track Number
s5  VTS Title Track Number
s6  VTS PGC Number
s7  PTT Number for One_Sequential_PGC_Title
Changed lines 29-43 from:

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811
s9Navigation Timer
s10Title PGC Number for Navigation Timer
s11Audio Mixing Mode for Karaoke
s12Country Code for Parental Management
s13Parental Level
s14Player Configurations for Video
s15Player Configurations for Audio
s16Initial Language Code for Audio
s17Initial Language Code Extension for Audio
s18Initial Language Code for Sub-picture
s19regionInitial Language Code Extension for Sub-picture
s21Reserved 21
s22Reserved 22
s23Reserved 23

to:

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811
s9  Navigation Timer
s10  Title PGC Number for Navigation Timer
s11  Audio Mixing Mode for Karaoke
s12  Country Code for Parental Management
s13  Parental Level
s14  Player Configurations for Video
s15  Player Configurations for Audio
s16  Initial Language Code for Audio
s17  Initial Language Code Extension for Audio
s18  Initial Language Code for Sub-picture
s19region Initial Language Code Extension for Sub-picture
s21  Reserved 21
s22  Reserved 22
s23  Reserved 23

August 12, 2005, at 07:27 PM by Alan Canon
Changed lines 40-43 from:

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811
s21Reserved 21
s22Reserved 22
s23Reserved 23

to:

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811
s21Reserved 21
s22Reserved 22
s23Reserved 23

August 12, 2005, at 07:27 PM by Alan Canon
Changed line 18 from:

to:
Changed lines 23-54 from:

    "angle",
       angle (s3, rw)
              Selects the angle (currently untested).

    "s4",  // "Title Track Number",
    "s5",  // "VTS Title Track Number",
    "s6",  // "VTS PGC Number",
    "s7",  // "PTT Number for One_Sequential_PGC_Title",
    "button",
       button (s8, rw)
              Denotes the currently highlighted button.  Note that  the  value
              is  multiplied  by 1024, so the first button is 1024, the second
              is 2048, etc.
    "s9",  // "Navigation Timer",
    "s10", // "Title PGC Number for Navigation Timer",
    "s11", // "Audio Mixing Mode for Karaoke",
    "s12", // "Country Code for Parental Management",
    "s13", // "Parental Level",
    "s14", // "Player Configurations for Video",
    "s15 Player Configurations for Audio",
    "s16", // "Initial Language Code for Audio",
    "s17", // "Initial Language Code Extension for Audio",
    "s18", // "Initial Language Code for Sub-picture",
    "s19", // "Initial Language Code Extension for Sub-picture",
    "region",
    "s21", // "Reserved 21",
    "s22", // "Reserved 22",
    "s23", // "Reserved 23"

EXPRESSIONS

to:

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811
s3angleyesSelects the angle (currently untested).
s4Title Track Number
s5VTS Title Track Number
s6VTS PGC Number
s7PTT Number for One_Sequential_PGC_Title
s8buttonyesDenotes the currently highlighted button. Note that the value is multiplied by 1024, so the first button is 1024, the second is 2048, etc.
s9Navigation Timer
s10Title PGC Number for Navigation Timer
s11Audio Mixing Mode for Karaoke
s12Country Code for Parental Management
s13Parental Level
s14Player Configurations for Video
s15Player Configurations for Audio
s16Initial Language Code for Audio
s17Initial Language Code Extension for Audio
s18Initial Language Code for Sub-picture
s19regionInitial Language Code Extension for Sub-picture
s21Reserved 21
s22Reserved 22
s23Reserved 23

Expressions

Changed lines 48-53 from:

==, !=, >=, >, <=, <, &&, ||, !, eq, ne, ge, gt, le, lt, and, or, xor, not, +, -, *, /, %, &, |, ^

Since the code is encapsulated in XML, the parser will catch any unescaped < characters, thus alphabetic mnemonics have been provided for all comparison operators for consistency.

to:
 ==,  !=, >=, >, <=, <, &&, ||, !, eq, ne, ge, gt, le, lt, and, or, xor, not, +, -, *, /, %, &, |, ^ 

Since the code is encapsulated in XML, the parser will catch any unescaped < characters, thus alphabetic mnemonics have been provided for all comparison operators for consistency.

Changed lines 54-56 from:
  random(EXPRESSION)

Computes a psuedo-random number, between 1 and the supplied number, inclusively.

to:
 random(EXPRESSION)

computes a psuedo-random number, between 1 and the supplied number, inclusively.

Added line 59:

August 12, 2005, at 07:22 PM by Alan Canon
Changed lines 19-40 from:

    "s0",  // "Menu Description Language Code",
    "audio",
       audio (s1, rw)
              Denotes the audio channel, ranging from 0-7.


    "subtitle",
       subtitle (s2, rw)
              The subtitle track, ranging from 0-31.  If you want the subtitle
              to  always  be  displayed,  then  you should add 64 (i.e. choose
              64-95).  Simply selecting the track (0-31) means that  only  the
              forced  subtitles  will be displayed, whereas enabling the track
              (64-95) means that all the subtitles will  be  displayed.   This
              allows  you  to  have forced subtitles only for the parts of the
              movie where the actors are speaking a foreign  (to  the  viewer)
              language,  but  still  have  normal  subtitles  for  the hearing
              impaired.  The hearing impaired viewers would enable  the  track
              (64-95)  while  the  other  viewers  would just select the track
              (0-31) they would be able to share the track.

to:

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811

Warning: Division by zero in /f2/shawnfumo/public/wiki/pmwiki.php on line 811
NamePseudonymWritableDescription
s0Menu Description Language Code
s1audioyesDenotes the audio channel, ranging from 0-7.
s2subtitleyesThe subtitle track, ranging from 0-31. If you want the subtitle to always be displayed, then you should add 64 (i.e. choose 64-95). Simply selecting the track (0-31) means that only the forced subtitles will be displayed, whereas enabling the track (64-95) means that all the subtitles will be displayed. This allows you to have forced subtitles only for the parts of the movie where the actors are speaking a foreign (to the viewer) language, but still have normal subtitles for the hearing impaired. The hearing impaired viewers would enable the track (64-95) while the other viewers would just select the track (0-31) they would be able to share the track.

Changed line 43 from:
    "s15", // "Player Configurations for Audio",
to:
    "s15 Player Configurations for Audio",
August 12, 2005, at 07:18 PM by Alan Canon
Changed lines 12-13 from:

==Variables==

to:

Variables

Added lines 19-22:

    "s0",  // "Menu Description Language Code",
    "audio",
Added lines 26-27:

    "subtitle",
Added lines 36-86:
              language,  but  still  have  normal  subtitles  for  the hearing
              impaired.  The hearing impaired viewers would enable  the  track
              (64-95)  while  the  other  viewers  would just select the track
              (0-31) they would be able to share the track.

    "angle",
       angle (s3, rw)
              Selects the angle (currently untested).

    "s4",  // "Title Track Number",
    "s5",  // "VTS Title Track Number",
    "s6",  // "VTS PGC Number",
    "s7",  // "PTT Number for One_Sequential_PGC_Title",
    "button",
       button (s8, rw)
              Denotes the currently highlighted button.  Note that  the  value
              is  multiplied  by 1024, so the first button is 1024, the second
              is 2048, etc.
    "s9",  // "Navigation Timer",
    "s10", // "Title PGC Number for Navigation Timer",
    "s11", // "Audio Mixing Mode for Karaoke",
    "s12", // "Country Code for Parental Management",
    "s13", // "Parental Level",
    "s14", // "Player Configurations for Video",
    "s15", // "Player Configurations for Audio",
    "s16", // "Initial Language Code for Audio",
    "s17", // "Initial Language Code Extension for Audio",
    "s18", // "Initial Language Code for Sub-picture",
    "s19", // "Initial Language Code Extension for Sub-picture",
    "region",
    "s21", // "Reserved 21",
    "s22", // "Reserved 22",
    "s23", // "Reserved 23"

EXPRESSIONS

Expressions follow typical C syntax except that booleans are not convertible to integers and vice versa. Operators and comparisons are:

==, !=, >=, >, <=, <, &&, ||, !, eq, ne, ge, gt, le, lt, and, or, xor, not, +, -, *, /, %, &, |, ^

Since the code is encapsulated in XML, the parser will catch any unescaped < characters, thus alphabetic mnemonics have been provided for all comparison operators for consistency.

There is also a numerical function:

  random(EXPRESSION)

Computes a psuedo-random number, between 1 and the supplied number, inclusively.

Blocks

Blocks are either a single statement (terminated by a semicolon), or a group of statements wrapped in curly braces. For example:

August 12, 2005, at 07:15 PM by Alan Canon
Added lines 1-29:

The DVDAuthor Virtual Machine Language is used to provide code to be executed by the DVD player in response to events such as menu button presses by users.

The following text takes the manual page for DVD author as a starting point.

The language is quite simple and roughly looks like C.

  • Statements are terminated with a semicolon.
  • Statements can span multiple lines.
  • Multiple statements can appear on one line.
  • Whitespace (space, tab, newlines) are not important, except to separate keywords and identifiers.

==Variables==

The DVD virtual machine processes 16 bit values. It supports up to 16 general purpose registers; however dvdauthor reserves 3 for internal use. Thus registers 0-12 are avaialable for use and are referred to as g0 through g12.

There are also 24 system registers, which can be referred to as s0 through s23. Not all of these can be set. Many of these have pseodonyms.

       audio (s1, rw)
              Denotes the audio channel, ranging from 0-7.

       subtitle (s2, rw)
              The subtitle track, ranging from 0-31.  If you want the subtitle
              to  always  be  displayed,  then  you should add 64 (i.e. choose
              64-95).  Simply selecting the track (0-31) means that  only  the
              forced  subtitles  will be displayed, whereas enabling the track
              (64-95) means that all the subtitles will  be  displayed.   This
              allows  you  to  have forced subtitles only for the parts of the
              movie where the actors are speaking a foreign  (to  the  viewer)
Edit Page - Page History - Printable View - Recent Changes - WikiHelp - SearchWiki
Page last modified on November 05, 2008, at 09:21 PM