Edit VM Commands
When you click Edit button to add new VM Commands you will open a VM Editor. The VM Editor has many features that will help you to write a syntactically-correct script. It features syntax highlighting, auto completion and real time script checking. You can't write command that has the wrong syntax.
1 - The Edit window
Here you type the commands. The editor features syntax highlighting and auto completion.
As you type you will notice the command is also being selected in the VM Commands list (4). By pressing the TAB key the selected command in the list will automatically be written at the place you're writing.
For example we start typing:
A LinkPGCN is being selected in the list (4) as we type. By pressing TAB the text will be auto completed:
We can also select other commands, for example LinkPTT, and either press TAB or double click the item in the list (4)
2 - The Control Window
This is a very important window for automatic syntax guiding. As you type, this window will guide you by some hints and if the syntax is OK it will show you the full correct syntax.
The Auto-Guidance will give hints as you type and it will shows how the editor reads your line.
For example we would like to add line if (GPRM1 ==2 ) LinkPGCN 4 on line 3. We start typing
|We type||Control window shows||Details|
|if||Expecting 'if (...'||OK, we need to type parenthesis|
|if (||Expecting: if (GPRMx...||Next must be a GPRM parameter|
|if (GPRM1||Expecting operand: if (GPRMx ==, !=, >=, >, <=, <||and operator|
|if (GPRM1 ==||Expecting: if (GPRMx op 'GPRM/SPRM or constant'||then second parameter is expected|
|if (GPRM1 ==2||Expecting: if (...')'||and close the parenthesis|
|if (GPRM1 ==2 )||if (GPRM0 == 0) Nop||The syntax is ok, but we want to type more|
|if (GPRM1 ==2 ) LinkPGCN||if (GPRM1 == 2) LinkPGCN 0||we are missing parameter which is interpreted as 0|
|if (GPRM1 ==2 ) LinkPGCN 4||if (GPRM1 == 2) LinkPGCN 4||now the syntax is complete|
Line completion button
Whenever we see in control window and a command line we can transfer it to our line in editor. For example we type:
and the control window shows: JumpSS VTSM (vts 0, tt 0, menu 0)
This is how our command is interpreted, but obviously we need more parameters to specify. Instead of typing this to our editor (1) we can simply click the Line completion button near the control window:
The whole line will appear in editor. Now we can change the zeros for numbers we need:
JumpSS VTSM (vts 1, tt 1, menu 3)
This will help you to find a correct link to other objects in the DVD-lab project. Let's say we are editing VM command of a Movie and we would like to link to VMG menu from here. The Quick Link will suggest:
CallSS VMGM (pgc 2, rsm_cell 1) * see note below about PGC numbers
3 - Hex Preview
The hex preview shows how the VM command will be written to the DVD command space. This is good for advanced debugging.
4 - Command List
We already know that selecting a command and pressing TAB or double click will replace the currently edited command in editor. Below the list is a short description about the command and its domain of use.
For example for JumpSS VTSM we see this:
This tells us that we can use this command in First Play, VMG menu or VTS menu. We cannot use this command from movie.
5 - Reverse VM code
Sometimes we get the VM code in byte code hex format, for example from looking at previously compiled ifo file. As you type HEX numbers the Control Window (2) shows the byte code disassembled command.
There is not one exact way for people to write VM commands. VM Editor understands many different ways a line can be written.
For example a line
GPRM1 = 15
can be also written as
You will see by that the syntax is correct but the Control window will always shows only the one syntax that DVD-lab uses. Also when you close and open the edit window no matter what syntax you typed it will be changed to the one used by DVD-lab. Ths is called Syntax Normalization and without this we will not be able to understand each other.
When we close the VM Editor and then open it again all syntax will be normalized.
For example if we type
and then close the editor, our command will be automatically normalized to :
LinkPGN 2 (button 3)
If we type
the line will be normalized to
GPRM1 = 15
As you get familiar with the VM commands and try the Quick Link you will realize that it suggests a PGC number that is always one bigger than it appears in the Connections.
For example we want to link from Menu 2 to Menu 1 (ROOT) and the Quick link will suggest LinkPGCN 2. Why is that? Shouldn't it be LinkPGCN 1 ? No, because:
For VM Command use, add 1 to the PGC number for all menus (VTS and VMG)
The first VTS menu that will shows in connections as ROOT is in DVD-lab PGCN 2.
The first VMG menu that will shows in connections as TITLE is in DVD-lab PGCN 2.
*This doesn't apply if you plan to Compile without Abstraction Layer. Without AL there will be no shadow menu created and therefore the first visible menu in DVD-lab will also become PGC 1 as expected
You have to remember this, otherwise you will be surprised why your commands don't work properly.