Skip to content
Luca Wehrstedt edited this page Jan 24, 2011 · 2 revisions

NavigationCommand

Used in...

This object is used by MovieObjects, in the MovieObject File.

Binary format

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

Description of fields

OperandCount

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).

CommandGroup, CommandSubGroup, BranchOption, CompareOption and SetOption

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

ImmediateValueFlag

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.

Destination

The first operand. Its use varies on command-basis.

Source

The second operand. Its use varies on command-basis.