-
Notifications
You must be signed in to change notification settings - Fork 8
NavigationCommand
This object is used by MovieObjects, in the MovieObject File.
Size | Description |
3 | OperandCount |
2 | CommandGroup |
3 | CommandSubGroup |
1 | ImmediateValueFlag for operand Destination |
1 | ImmediateValueFlag for operand Source |
2 | reserved |
4 | BranchOption |
4 | reserved |
4 | CompareOption |
3 | reserved |
5 | SetOption |
32 | Destination |
32 | Source |
This field specify how many operands have to be evaluated. It can have three values: 0 (no operand evaluated), 1 (only Destination is evaluated) or 2 (both Destination and Source are evaluated).
These five fields identify the command that has to be performed. Here are the possible values they can assume and the commands that corresponds to them:
CommandGroup | CommandSubGroup | BranchOption | CompareOption | SetOption | Command |
00 | 000 | 0000 | ---- | ----- | Branch_Nop |
00 | 000 | 0001 | ---- | ----- | Branch_GoTo |
00 | 000 | 0010 | ---- | ----- | Branch_Break |
00 | 001 | 0000 | ---- | ----- | Branch_JumpObject |
00 | 001 | 0001 | ---- | ----- | Branch_JumpTitle |
00 | 001 | 0010 | ---- | ----- | Branch_CallObject |
00 | 001 | 0011 | ---- | ----- | Branch_CallTitle |
00 | 001 | 0100 | ---- | ----- | Branch_Resume |
00 | 010 | 0000 | ---- | ----- | Branch_PlayList |
00 | 010 | 0001 | ---- | ----- | Branch_PlayItem |
00 | 010 | 0010 | ---- | ----- | Branch_PlayMark |
00 | 010 | 0011 | ---- | ----- | Branch_Terminate |
00 | 010 | 0100 | ---- | ----- | Branch_LinkItem |
00 | 010 | 0101 | ---- | ----- | Branch_LinkMark |
01 | --- | ---- | 0001 | ----- | Compare_BC |
01 | --- | ---- | 0010 | ----- | Compare_EQ |
01 | --- | ---- | 0011 | ----- | Compare_NE |
01 | --- | ---- | 0100 | ----- | Compare_GE |
01 | --- | ---- | 0101 | ----- | Compare_GT |
01 | --- | ---- | 0110 | ----- | Compare_LE |
01 | --- | ---- | 0111 | ----- | Compare_LT |
11 | 000 | ---- | ---- | 00001 | Set_Move |
11 | 000 | ---- | ---- | 00010 | Set_Swap |
11 | 000 | ---- | ---- | 00011 | Set_Add |
11 | 000 | ---- | ---- | 00100 | Set_Sub |
11 | 000 | ---- | ---- | 00101 | Set_Mul |
11 | 000 | ---- | ---- | 00110 | Set_Div |
11 | 000 | ---- | ---- | 00111 | Set_Mod |
11 | 000 | ---- | ---- | 01000 | Set_Rnd |
11 | 000 | ---- | ---- | 01001 | Set_And |
11 | 000 | ---- | ---- | 01010 | Set_Or |
11 | 000 | ---- | ---- | 01011 | Set_Xor |
11 | 000 | ---- | ---- | 01100 | Set_Bitset |
11 | 000 | ---- | ---- | 01101 | Set_Bitclr |
11 | 000 | ---- | ---- | 01110 | Set_ShiftLeft |
11 | 000 | ---- | ---- | 01111 | Set_ShiftRight |
11 | 001 | ---- | ---- | 00001 | Set_SetStream |
11 | 001 | ---- | ---- | 00010 | Set_SetNVTimer |
11 | 001 | ---- | ---- | 00011 | Set_ButtonPage |
11 | 001 | ---- | ---- | 00100 | Set_EnableButton |
11 | 001 | ---- | ---- | 00101 | Set_DisableButton |
11 | 001 | ---- | ---- | 00110 | Set_SetSecondaryStream |
11 | 001 | ---- | ---- | 00111 | Set_PopupOff |
11 | 001 | ---- | ---- | 01000 | Set_StillOn |
11 | 001 | ---- | ---- | 01001 | Set_StillOff |
The immediate value of an operand is its 32-bit value as it is. The elaborated value of an operand is the value that is passed to the command.
Normally the evaluated value of an operand is the value of the register having as index its immediate value. But, if the corresponding ImmediateValueFlag is active, the evaluated value is the immediate value itself.
So, one can resume it as: if its ImmediateValueFlag is active, the operand is passed as a value, otherwise it's passed as a pointer.
The first operand. Its use varies on command-basis.
The second operand. Its use varies on command-basis.
This content is available under the Creative Commons Attribution-ShareAlike License.