跳轉到內容

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 位是包含該值的暫存器的編號。

華夏公益教科書