跳转到内容

DVD-Video 内部/指令集详细信息

来自维基教科书,为开放世界提供开放书籍

有关基本指令集概念的解释,请参阅上一页

(参考资料:指令集摘要详细信息)

在每个显示指令位模式的表格中,顶行显示从 0 到 7 的字节号,以及可选地显示每个字节内的位号(从 7 到 0 编号),用冒号分隔。例如,字节 1 的最高位写成“1:7”。包含多个位的字段用连字符分隔起始和结束(含)位号,例如,字节 2 的最底四位写成“2:3-0”。

顶行下面是一到两行。每行描述一组指令的有效形式。

cccc....填充的字段用于条件格式,而用llll....填充的字段可以从任何 Link 指令的相应字段中复制,也以相同的颜色突出显示。无关紧要的字段用以下方式填充:   .

组 0 NOP

[编辑 | 编辑源代码]
0:7-5 0:4-0 1:7-4 1:3-0 2 3 4 5 6 7
0   0  

无操作。

0:7-5 0:4-0 1:7-4 1:3-0 2 3 4 5 6 7
0   cccc 1   cccccccc cccccccc cccccccc   instrnr

将控制权转移到当前序列中指定的指令号。多个指令的序列仅在 FPC 以及 PGC 的前后部分允许,因此这些是唯一可以使用此指令的地方。序列中的指令从 1 开始编号。

条件格式:1。

0:7-5 0:4-0 1:7-4 1:3-0 2 3 4 5 6 7
0   cccc 2   cccccccc cccccccc cccccccc  

终止当前指令序列。多个指令的序列仅在 FPC 以及 PGC 的前后部分允许,因此这些是唯一可以使用此指令的地方。

条件格式:1。

SetTmpPML

[编辑 | 编辑源代码]
0:7-5 0:4-0 1:7-4 1:3-0 2 3 4 5 6:7-4 6:3-0 7
0   cccc 3   cccccccc cccccccc cccccccc   level instrnr

设置新的临时家长管理级别,这可能要求用户在提高级别时输入密码。成功后将控制权转移到指定的指令。多个指令的序列仅在 FPC 以及 PGC 的前后部分允许,因此这些是唯一可以使用此指令的地方。序列中的指令从 1 开始编号。

条件格式:1。

组 1 NOP

[编辑 | 编辑源代码]
0:7-5 0:4-0 1:7-4 1:3-0 2 3 4 5 6 7
1   0  

无操作。

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5 6:7-2 6:1-0 7:7-5 7:4-0
2   cccc 1   cccccccc cccccccc | cccccccc hl_bn   lnk

如果 hl_bn 不为零(如果 hl_bn 为零,则保持按钮突出显示设置不变),则突出显示按钮号 hl_bn,并将控制权转移到由 lnk 标识的目标

Lnk 名称
0 不转移控制权(如果指定,则只突出显示按钮)
1 LinkTopCell(“链接到单元格顶部”, 重新开始当前单元格的播放)
2 LinkNextCell
3 LinkPrevCell
5 LinkTopPG(“链接到节目顶部”, 重新开始当前节目的播放)
6 LinkNextPG
7 LinkPrevPG
9 LinkTopPGC(“链接到 PGC 顶部”, 重新开始当前 PGC 的播放,可能重新执行预命令)
10 LinkNextPGC
11 LinkPrevPGC
12 LinkGoupPGC(“向上”)
13 LinkTailPGC(停止播放 PGC 并跳转到后命令)
16 RSM(从最后一个 Call 处恢复执行)

请注意,PGC 之间的“下一个”、“上一个”和“向上”关系是由每个 PGC 的 IFO 条目中的字段明确定义的。

条件格式:1。

0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5 6 7
2   cccc 4   cccccccc cccccccc cccccccc pgcn

链接到编号的 PGC。PGC 必须在同一域中。

条件格式:1。

0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5 6:7-2 6:1-0 7
2   cccc 5   cccccccc cccccccc cccccccc hl_bn pttn

链接到编号的章节 (PTT)。只能在标题内使用,用于在同一标题内转移。

条件格式:1。

0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5 6:7-2 6:1-0 7
2   cccc 6   cccccccc cccccccc cccccccc hl_bn 0 pgn

链接到编号的节目。只能在 PGC 内转移。

条件格式:1。

0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5 6:7-2 6:1-0 7
2   cccc 7   cccccccc cccccccc cccccccc hl_bn 0 cn

链接到编号的单元格。只能在 PGC 内转移。

条件格式:1。

0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5 6 7
3   cccc 1   cccccccc cccccccc

停止播放。等同于按下遥控器上的停止按钮。

条件格式:2。

0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5 6 7
3   cccc 2   ttn cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
Y Y N N

跳转到编号的标题的入口 PGC(标题映射中的索引?)。

条件格式:2。

JumpVTS_TT

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5 6 7
3   cccc 3   ttn cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
N N Y Y

跳转到编号的 VTS 标题入口 PGC(当前标题集中的索引?)。只能在同一标题集中转移。

条件格式:2。

JumpVTS_PTT

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5 6 7
3   cccc 5   pttn   ttn cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
N N Y Y

跳转到编号的指定标题 (当前标题集中的索引?) 的 VTS 章节 (PTT)。只能在同一标题集中转移。

条件格式:2。

JumpSS FP

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5:7-6 5:5 5:4-0 6 7
3   cccc 6   0   cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
N Y Y N

跳转到 FPC。

条件格式:2。

JumpSS VMGM 菜单

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5:7-6 5:5 5:4-0 6 7
3   cccc 6   1   菜单 cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
Y N Y N

跳转到 VMG 条目菜单。menu 的唯一有效值为 2,表示标题菜单。

条件格式:2。

JumpSS VTSM

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5:7-6 5:5 5:4-0 6 7
3   cccc 6   ttn vts 2   菜单 cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
Y Y N N

跳转到 VTS 条目菜单。menu 的有效值为

菜单 条目类型
3
4 子画面(字幕)
5 音频
6 角度
7 章节

条件格式:2。

JumpSS VMGM PGC

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5:7-6 5:5 5:4-0 6 7
3   cccc 6 pgcn   3   cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
Y Y Y N

跳转到 VMGM PGC。

条件格式:2。

CallSS FP

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5:7-6 5:5 5:4-0 6 7
3   cccc 8   rsm_cell 0   cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
N N N Y

保存恢复点并转移控制到 FPC。rsm_cell 指定非零时恢复的单元编号(在哪个单元内?当前程序或 PGC?),否则在下一个单元恢复。

条件格式:2。

CallSS VMGM 菜单

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5:7-6 5:5 5:4-0 6 7
3   cccc 8   rsm_cell 1   菜单 cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
N N N Y

保存恢复点并转移控制到 VMG 条目菜单。rsm_cell 指定非零时恢复的单元编号(在哪个单元内?当前程序或 PGC?),否则在下一个单元恢复。menu 的唯一有效值为 2,表示标题菜单。

条件格式:2。

CallSS VTSM

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5:7-6 5:5 5:4-0 6 7
3   cccc 8   rsm_cell 2   菜单 cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
N N N Y

保存恢复点并转移控制到当前标题集中菜单。rsm_cell 指定非零时恢复的单元编号(在哪个单元内?当前程序或 PGC?),否则在下一个单元恢复。menu 的有效值为

菜单 条目类型
3
4 子画面(字幕)
5 音频
6 角度
7 章节

条件格式:2。

CallSS VMGM PGC

[编辑 | 编辑源代码]
0:7-4 0:3-0 1:7-4 1:3-0 2 3 4 5:7-6 5:5 5:4-0 6 7
3   cccc 8 pgcn rsm_cell 3   cccccccc cccccccc
在以下位置有效 FPC VMGM VTSM VTST
N N N Y

保存恢复点并转移控制到 VMGM PGC。rsm_cell 指定非零时恢复的单元编号(在哪个单元内?当前程序或 PGC?),否则在下一个单元恢复。

条件格式:2。

组 2 NOP

[编辑 | 编辑源代码]
0:7-5 0:4 0:3-0 1:7 1:6-0 2 3 4 5 6 7
2   0   0  

无操作。

0:7-5 0:4 0:3-0 1:7-4 1:3-0 2 3:7 3:6-0 4:7 4:6-0 5:7 5:6-0 6 7
2 immed 1 cccc 0   af asrc sf ssrc vf vsrc cccccccc cccccccc
0 llll llllllll llllllll

此指令可以一次性设置所有音频、子画面和视角注册器(分别为 SPRM 1、2 和 3),或设置其中任意组合。

  • 如果 af 为 1,则音频 SPRM 从 asrc 设置。如果 af 为 0,则 asrc 被忽略,SPRM 1 不变。
  • 如果 sf 为 1,则子画面 SPRM 从 ssrc 设置。如果 sf 为 0,则 ssrc 被忽略,SPRM 2 不变。
  • 如果 vf 为 1,则角度 SPRM 从 vsrc 设置。如果 vf 为 0,则 vsrc 被忽略,SPRM 3 不变。

asrcssrcvsrc 的解释由 immed 标志控制。如果它为 1,则所有这些字段都是对应注册器的 7 位新值的字面值。如果 immed 为 0,则每个字段的最低 8 位是包含目标注册器新值的源注册器的编号。

asrcssrc 生成的值不是直接的流编号,而是当前 PGC 中 PGC_AST_CTL 和 PGC_SPST_CTL 表的索引。PGC_SPST_CTL 可以包含每个条目中的四个流编号,选择哪个流编号取决于当前视频播放模式(参见上面 SPRM 14 的描述)。

条件格式:2。

0:7-5 0:4 0:3-0 1:7-4 1:3-0 2 3 4 5 6 7
2 immed 2 cccc 0 src pgcn cccccccc cccccccc
0 llll llllllll llllllll

设定导航计时器:将 pgcn 放入 NV_PGCN(SPRM 10)中,将 src 的值放入 NVTMR(SPRM 9)中,NVTMR 每秒递减一次。当 NVTMR 达到 0 时,如果 pgcn 非零,则跳转到 pgcn

srcpgcn 都(或其中一个)指定为零似乎是清除导航计时器在触发之前最明显的方式。

src 的解释由 immed 标志控制。如果它为 1,则 src 是 16 位字面值。如果 immed 为 0,则 src 的最低 8 位是包含该值的注册器的编号。

条件格式:2。

SetGPRMMD

[编辑 | 编辑源代码]
0:7-5 0:4 0:3-0 1:7-4 1:3-0 2 3 4 5:7 5:6-4 5:3-0 6 7
2 immed 3 cccc 0 src   mode   reg cccccccc cccccccc
0 llll llllllll llllllll

将 GPRM reg 设置为由 src 给定的值;如果 mode 为 1,则启用计数器模式,如果 mode 为 0,则禁用计数器模式。在计数器模式下,GPRM 每秒递增一次,否则,其值保持不变直到再次更改。

src 的解释由 immed 标志控制。如果它为 1,则 src 是 16 位字面值。如果 immed 为 0,则 src 的最低 8 位是包含该值的注册器的编号。

条件格式:2。

0:7-5 0:4 0:3-0 1:7-4 1:3-0 2 3 4 5 6 7
2 immed 4 cccc 0   src cccccccc cccccccc
0 llll llllllll llllllll

将卡拉 OK 混音模式(SPRM 11)设置为 src 的值。

src 的解释由 immed 标志控制。如果它为 1,则 src 是 16 位字面值。如果 immed 为 0,则 src 的最低 8 位是包含该值的注册器的编号。

条件格式:2。

SetHL_BTNN

[编辑 | 编辑源代码]
0:7-5 0:4 0:3-0 1:7-4 1:3-0 2 3 4 5 6 7
2 immed 6 cccc 0 src   cccccccc cccccccc
0 llll llllllll llllllll

将 HL_BTNN(SPRM 8)设置为 src 的值。这将设置当前突出显示的按钮,1-36 或 0 表示没有按钮。请注意,该值必须是按钮编号乘以 1024。

src 的解释由 immed 标志控制。如果它为 1,则 src 是 16 位字面值。如果 immed 为 0,则 src 的最低 8 位是包含该值的注册器的编号。

条件格式:2。

0:7-5 0:4 0:3-0 1:7-4 1:3-0 2 3:7-4 3:3-0 4 5 6 7
3 immed op cccc 0 cccccccc   reg src cccccccc cccccccc
0 llll 0 llllllll llllllll

将 GPRM 设置为根据其现有值和源操作数的值计算出的函数(并且在交换的情况下,还可以更改源操作数)。它是否保持计数器模式不变?op 根据设置操作(以上)确定要执行的操作。

src 的解释由 immed 标志控制。如果它为 1,则 src 是 16 位字面值。如果 immed 为 0,则 src 的最低 8 位是包含该值的注册器的编号。但是,请注意 src 的限制,如设置操作表中所列。

条件格式:3。

0:7-5 0:4 0:3-0 1:7 1:6-4 1:3-0 2 3 4 5 6:7-2 6:1-0 7
4 simmed op cimmed cmp reg ssrc csrc hl_bn   lnk

根据操作 op 将 GPRM reg 设置为它和 ssrc 的函数,然后根据 cmp 将更新后的 regcsrc 的值进行比较,如果条件为真,则执行由 hl_bnlnk 定义的链接操作。这些字段的解释与链接子集指令(以上)相同。

ssrc 的解释由 simmed 标志控制。如果此标志为 1,则 ssrc 是字面上的 16 位值。如果 simmed 为 0,则 ssrc 的低 8 位是包含该值的寄存器的编号。但请注意,ssrc 有设置操作表中列出的限制。

csrc 的解释由 cimmed 标志控制。如果此标志为 1,则 csrc 是字面上的 16 位值。如果 cimmed 为 0,则 csrc 的低 8 位是包含该值的寄存器的编号。

0:7-5 0:4 0:3-0 1:7 1:6-4 1:3-0 2 3 4 5 6:7-2 6:1-0 7
5 0 op cimmed cmp reg srcreg creg1 csrc2 hl_bn   lnk
1 0 simmed creg1 creg2

根据 cmp 对寄存器 creg1 与寄存器 creg2 或操作数 csrc2 进行比较,如果结果为真,则根据 op 使用寄存器 srcreg 的值或立即值 simmed 将 GPRM reg 设置为计算结果,并执行由 hl_bnlnk 定义的链接子集操作。如果条件为假,则不会执行设置或链接操作。

csrc2 的解释由 cimmed 标志控制。如果此标志为 1,则 csrc2 是字面上的 16 位值。如果 cimmed 为 0,则 csrc2 的低 8 位是包含该值的寄存器的编号。

0:7-5 0:4 0:3-0 1:7 1:6-4 1:3-0 2 3 4 5 6:7-2 6:1-0 7
6 0 op cimmed cmp reg srcreg creg1 csrc2 hl_bn   lnk
1 0 simmed creg1 creg2

根据 cmp 对寄存器 creg1 与寄存器 creg2 或操作数 csrc2 进行比较,如果结果为真,则根据 op 使用寄存器 srcreg 的值或立即值 simmed 将 GPRM reg 设置为计算结果。无论比较结果如何,都会执行由 hl_bnlnk 定义的链接子集操作。

csrc2 的解释由 cimmed 标志控制。如果此标志为 1,则 csrc2 是字面上的 16 位值。如果 cimmed 为 0,则 csrc2 的低 8 位是包含该值的寄存器的编号。

华夏公益教科书