< Inside DVD-Video

For explanations of basic instruction set concepts, see the previous page.

(References: instruction set summary and details)

In each table showing the instruction bit patterns, the top row shows the byte numbers from 0 to 7, and optionally also the bit numbers within each byte (numbered from 7 down to 0), separated by a colon. E.g. the top bit of byte 1 is written as “1:7”. A field containing multiple bits is written with a hyphen separating the starting and ending (inclusive) bit numbers, e.g. the bottom four bits of byte 2 are written as “2:3-0”.

Below the top row is one or two rows. Each row describes one set of valid forms of the instruction.

The fields filled in with cccc.... are for the conditional formats, while those filled in with llll.... may be copied from the corresponding fields of any of the Link instructions, also highlighted in the same colour. Don’t-care fields are filled in thus:    .

Group 0 NOP

0:7-50:4-01:7-41:3-0234567
0 0 

No operation.

Goto

0:7-50:4-01:7-41:3-0234567
0 cccc1 cccccccccccccccccccccccc instrnr

Transfers control to the specified instruction number within the current sequence. Sequences of multiple instructions are only allowed in the FPC and pre- and post-sections of PGCs, so those are the only places where this instruction makes sense. Instructions within a sequence are numbered from 1.

Conditional format: 1.

Break

0:7-50:4-01:7-41:3-0234567
0 cccc2 cccccccccccccccccccccccc 

Terminates the current instruction sequence. Sequences of multiple instructions are only allowed in the FPC and pre- and post-sections of PGCs, so those are the only places where this instruction makes sense.

Conditional format: 1.

SetTmpPML

0:7-50:4-01:7-41:3-023456:7-46:3-07
0 cccc3 cccccccccccccccccccccccc levelinstrnr

Sets a new temporary Parental Management Level, which may require the user to enter a password if the level is being raised. Transfers control to the specified instruction on success. Sequences of multiple instructions are only allowed in the FPC and pre- and post-sections of PGCs, so those are the only places where this instruction makes sense. Instructions within a sequence are numbered from 1.

Conditional format: 1.

Group 1 NOP

0:7-50:4-01:7-41:3-0234567
1 0 

No operation.

0:7-40:3-01:7-41:3-023456:7-26:1-07:7-57:4-0
2 cccc1 cccccccccccccccc| cccccccchl_bn lnk

Highlights the button number hl_bn if nonzero (if hl_bn is zero, leaves the button highlight setting unchanged), and transfers control to the target identified by lnk:

LnkName
0no transfer of control (just highlights button, if specified)
1LinkTopCell (“link to top of cell”, i.e. restart playback of current cell)
2LinkNextCell
3LinkPrevCell
5LinkTopPG (“link to top of program”, i.e. restart playback of current program)
6LinkNextPG
7LinkPrevPG
9LinkTopPGC (“link to top of PGC”, i.e. restart playback of current PGC, presumably re-executing the pre-commands)
10LinkNextPGC
11LinkPrevPGC
12LinkGoupPGC (“go up”)
13LinkTailPGC (stop playing PGC and jump to post-commands)
16RSM (resume execution from the last Call)

Note that “next”, “previous” and “up” relationships among PGCs are explicitly defined by fields in the IFO entry for each PGC.

Conditional format: 1.

LinkPGCN

0:7-40:3-01:7-41:3-0234567
2 cccc4 ccccccccccccccccccccccccpgcn

Link to a PGC by number. The PGC must be in the same domain.

Conditional format: 1.

LinkPTTN

0:7-40:3-01:7-41:3-023456:7-26:1-07
2 cccc5 cccccccccccccccccccccccchl_bnpttn

Link to a chapter (PTT) by number. Can only be used within a title, to transfer within the same title.

Conditional format: 1.

LinkPGN

0:7-40:3-01:7-41:3-023456:7-26:1-07
2 cccc6 cccccccccccccccccccccccchl_bn0pgn

Link to a program by number. Can only transfer within a PGC.

Conditional format: 1.

LinkCN

0:7-40:3-01:7-41:3-023456:7-26:1-07
2 cccc7 cccccccccccccccccccccccchl_bn0cn

Link to a cell by number. Can only transfer within a PGC.

Conditional format: 1.

Exit

0:7-40:3-01:7-41:3-0234567
3 cccc1 cccccccccccccccc

Stops playback. Equivalent to hitting the Stop button on the remote.

Conditional format: 2.

JumpTT

0:7-40:3-01:7-41:3-0234567
3 cccc2 ttncccccccccccccccc
Valid within:FPCVMGMVTSMVTST
YYNN

Jump to the entry PGC of a title by number (index within titlemap?).

Conditional format: 2.

JumpVTS_TT

0:7-40:3-01:7-41:3-0234567
3 cccc3 ttncccccccccccccccc
Valid within:FPCVMGMVTSMVTST
NNYY

Jump to a VTS title entry PGC by number (index within current titleset?). Only transfers within the same titleset.

Conditional format: 2.

JumpVTS_PTT

0:7-40:3-01:7-41:3-0234567
3 cccc5 pttn ttncccccccccccccccc
Valid within:FPCVMGMVTSMVTST
NNYY

Jump to a VTS chapter (PTT) of a specified title (index within current titleset?) by number. Only transfers within the same titleset.

Conditional format: 2.

JumpSS FP

0:7-40:3-01:7-41:3-02345:7-65:55:4-067
3 cccc6 0 cccccccccccccccc
Valid within:FPCVMGMVTSMVTST
NYYN

Jump to FPC.

Conditional format: 2.

JumpSS VMGM menu

0:7-40:3-01:7-41:3-02345:7-65:55:4-067
3 cccc6 1 menucccccccccccccccc
Valid within:FPCVMGMVTSMVTST
YNYN

Jump to a VMG entry menu. The only valid value for menu is 2 for the title menu.

Conditional format: 2.

JumpSS VTSM

0:7-40:3-01:7-41:3-02345:7-65:55:4-067
3 cccc6 ttnvts2 menucccccccccccccccc
Valid within:FPCVMGMVTSMVTST
YYNN

Jump to a VTS entry menu. Valid values for menu are:

menuentry type
3root
4subpicture (subtitle)
5audio
6angle
7chapter

Conditional format: 2.

JumpSS VMGM PGC

0:7-40:3-01:7-41:3-02345:7-65:55:4-067
3 cccc6pgcn 3 cccccccccccccccc
Valid within:FPCVMGMVTSMVTST
YYYN

Jump to a VMGM PGC.

Conditional format: 2.

CallSS FP

0:7-40:3-01:7-41:3-02345:7-65:55:4-067
3 cccc8 rsm_cell0 cccccccccccccccc
Valid within:FPCVMGMVTSMVTST
NNNY

Save resume point and transfer control to FPC. rsm_cell specifies the cell number to resume at if nonzero (Within what unit? Current program or PGC?), else resume at the next cell.

Conditional format: 2.

CallSS VMGM menu

0:7-40:3-01:7-41:3-02345:7-65:55:4-067
3 cccc8 rsm_cell1 menucccccccccccccccc
Valid within:FPCVMGMVTSMVTST
NNNY

Save resume point and transfer control to a VMG entry menu. rsm_cell specifies the cell number to resume at if nonzero (Within what unit? Current program or PGC?), else resume at the next cell. The only valid value for menu is 2 for the title menu.

Conditional format: 2.

CallSS VTSM

0:7-40:3-01:7-41:3-02345:7-65:55:4-067
3 cccc8 rsm_cell2 menucccccccccccccccc
Valid within:FPCVMGMVTSMVTST
NNNY

Save resume point and transfer control to a menu within the current titleset. rsm_cell specifies the cell number to resume at if nonzero (Within what unit? Current program or PGC?), else resume at the next cell. Valid values for menu are:

menuentry type
3root
4subpicture (subtitle)
5audio
6angle
7chapter

Conditional format: 2.

CallSS VMGM PGC

0:7-40:3-01:7-41:3-02345:7-65:55:4-067
3 cccc8pgcnrsm_cell3 cccccccccccccccc
Valid within:FPCVMGMVTSMVTST
NNNY

Save resume point and transfer control to a VMGM PGC. rsm_cell specifies the cell number to resume at if nonzero (Within what unit? Current program or PGC?), else resume at the next cell.

Conditional format: 2.

Group 2 NOP

0:7-50:40:3-01:71:6-0234567
2 0 0 

No operation.

SetSTN

0:7-50:40:3-01:7-41:3-023:73:6-04:74:6-05:75:6-067
2immed1cccc0 afasrcsfssrcvfvsrccccccccccccccccc
0llllllllllllllllllll

This instruction can set all of the audio, subpicture and view angle registers (SPRMs 1, 2 and 3 respectively), or any combination thereof, at once.

  • If af is 1, then the audio SPRM is set from asrc. If af is 0, asrc is ignored and SPRM 1 is not changed.
  • If sf is 1, then the subpicture SPRM is set from ssrc. If sf is 0, ssrc is ignored and SPRM 2 is not changed.
  • If vf is 1, then the angle SPRM is set from vsrc. If vf is 0, vsrc is ignored and SPRM 3 is not changed.

The interpretation of asrc, ssrc and vsrc are controlled by the immed flag. If this is 1, then all these fields are the literal new 7-bit value for the corresponding register. If immed is 0, then the bottom 8 bits of each field is the number of the source register containing the new value for the destination register.

The values yielded from asrc and ssrc are not stream numbers directly, but are indexes into the PGC_AST_CTL and PGC_SPST_CTL tables respectively in the current PGC. PGC_SPST_CTL in turn can contain four stream numbers in each entry; the selection of which is made according to the current video playback mode (see the description of SPRM 14 above).

Conditional format: 2.

SetNVTMR

0:7-50:40:3-01:7-41:3-0234567
2immed2cccc0srcpgcncccccccccccccccc
0llllllllllllllllllll

Arms the navigation timer: puts pgcn into NV_PGCN (SPRM 10) and the value of src into NVTMR (SPRM 9), which starts decrementing once a second. When NVTMR reaches 0, a jump is made to pgcn if it is nonzero.

Specifying both (either?) src and pgcn as zero seems like the obvious way to clear the navigation timer before it goes off.

The interpretation of src is controlled by the immed flag. If this is 1, then src is the literal 16-bit value. If immed is 0, then the bottom 8 bits of src are the number of the register containing the value.

Conditional format: 2.

SetGPRMMD

0:7-50:40:3-01:7-41:3-02345:75:6-45:3-067
2immed3cccc0src mode regcccccccccccccccc
0llllllllllllllllllll

Sets GPRM reg to the value given by src; enables counter mode if mode is 1, disables counter mode if mode is 0. In counter mode, the GPRM starts incrementing once per second, otherwise, its value stays constant until changed again.

The interpretation of src is controlled by the immed flag. If this is 1, then src is the literal 16-bit value. If immed is 0, then the bottom 8 bits of src are the number of the register containing the value.

Conditional format: 2.

SetAMXMD

0:7-50:40:3-01:7-41:3-0234567
2immed4cccc0 srccccccccccccccccc
0llllllllllllllllllll

Sets the karaoke mixing mode (SPRM 11) to the value of src.

The interpretation of src is controlled by the immed flag. If this is 1, then src is the literal 16-bit value. If immed is 0, then the bottom 8 bits of src are the number of the register containing the value.

Conditional format: 2.

SetHL_BTNN

0:7-50:40:3-01:7-41:3-0234567
2immed6cccc0src cccccccccccccccc
0llllllllllllllllllll

Sets HL_BTNN (SPRM 8) to the value of src. This sets the current highlighted button, 1-36 or 0 for no button. Note that the value must be the button number multiplied by 1024.

The interpretation of src is controlled by the immed flag. If this is 1, then src is the literal 16-bit value. If immed is 0, then the bottom 8 bits of src are the number of the register containing the value.

Conditional format: 2.

Set

0:7-50:40:3-01:7-41:3-023:7-43:3-04567
3immedopcccc 0cccccccc regsrccccccccccccccccc
0llll0llllllllllllllll

Sets a GPRM to a value computed from a function of its existing value and that of the source operand (and can also change the source operand in the case of a swap). Does it leave counter mode unchanged? op determines the operation to perform according to set-operations (above).

The interpretation of src is controlled by the immed flag. If this is 1, then src is the literal 16-bit value. If immed is 0, then the bottom 8 bits of src are the number of the register containing the value. But note restrictions on src as listed in the set-operation table.

Conditional format: 3.

SetCLnk

0:7-50:40:3-01:71:6-41:3-023456:7-26:1-07
4simmedopcimmedcmpregssrccsrchl_bn lnk

Sets GPRM reg to the function of it and ssrc according to operation op, then compares the updated reg with the value of csrc according to cmp, and performs the Link operation defined by hl_bn and lnk if the condition is true. These fields are interpreted as in the Link Subset instruction (above).

The interpretation of ssrc is controlled by the simmed flag. If this is 1, then ssrc is the literal 16-bit value. If simmed is 0, then the bottom 8 bits of ssrc are the number of the register containing the value. But note restrictions on ssrc as listed in the set-operation table.

The interpretation of csrc is controlled by the cimmed flag. If this is 1, then csrc is the literal 16-bit value. If cimmed is 0, then the bottom 8 bits of csrc are the number of the register containing the value.

CSetCLnk

0:7-50:40:3-01:71:6-41:3-023456:7-26:1-07
50opcimmedcmpregsrcregcreg1csrc2hl_bn lnk
10simmedcreg1creg2

Performs the comparison according to cmp of register creg1 with register creg2 or operand csrc2, and if it is true, set GPRM reg to the computation using it and the value of register srcreg or immediate value simmed according to op, and also perform the Link Subset operation defined by hl_bn and lnk. If the condition is false, neither the set or the link operation is performed.

The interpretation of csrc2 is controlled by the cimmed flag. If this is 1, then csrc2 is the literal 16-bit value. If cimmed is 0, then the bottom 8 bits of csrc2 are the number of the register containing the value.

CSetLnk

0:7-50:40:3-01:71:6-41:3-023456:7-26:1-07
60opcimmedcmpregsrcregcreg1csrc2hl_bn lnk
10simmedcreg1creg2

Performs the comparison according to cmp of register creg1 with register creg2 or operand csrc2, and if it is true, set GPRM reg to the computation using it and the value of register srcreg or immediate value simmed according to op. Regardless of the comparison result, perform the Link Subset operation defined by hl_bn and lnk.

The interpretation of csrc2 is controlled by the cimmed flag. If this is 1, then csrc2 is the literal 16-bit value. If cimmed is 0, then the bottom 8 bits of csrc2 are the number of the register containing the value.

This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.