This file is raw output from pdftotext and may not be ideal for distribution. If you are a maintainer for Hackipedia, please sit down when you have time and clean this text version up. Source PDF: /mnt/fw-js/docs/Disk formats/DVD Video/DVD VM command formats.pdf Like all conversions the text below should be fully readable as UTF-8 unicode text. --------------------------------------------------------------- DVD-Video/DVD-Audio Virtual Machine Command Encoding Release 1.0.5 Apr 09 2004 1.0.5 (Apr 09 2004): Turn off header/footer -> even larger fonts! Fit field format list onto fewer pages. 1.0.4 (Apr 08 2004): Use smaller margins & larger font sizes for legibility -> more pages. Capitalization fiddling. 1.0.3 (Apr 06 2004): Formatting improvements: Cmd_Formats now 2 pages. Minor changes to explanations of command formats 0, 2, 3. 1.0.2 (Apr 01 2004): Formatting improvements using OpenOffice 680 M32. 1.0.1 (Mar 25 2004): Initial release. White Unspecified Grey Unused bit Green Field definition Yellow Format defined by field value Red Value forced by other field value In general, all fields must be set to a valid value – for enumerations (“options”), see the tables later in this document. Some fields, such as compare_option and link_option are optional in many commands (set to zero when unused) – except where noted. In some formats with multiple options fields, it is illegal to use both options at the same time – see the command-specific notes. First word 31 24 23 16 15 8 7 0 cmd_type i_comp compare_ =0 option goto_option cp1[] Nop/GoTo/Break/SetTmpPML If compare_option!=0, then goto_option must be != 0 Fields i_flag_comp, cp1, c2 are only used if compare_option != 0. jump_flag =0 i_comp compare_ =1 option link_option cp1[] compare_ =1 =1 option jump_option jump_params[jump_option] bits 31..16 If (condition) { jump/link } jump_flag differentiates between jumps and links, each having different command formats Fields i_flag_comp, cp1, c2, cp2 are only used if compare_option != 0. Field link_option/jump_option always used compare_ i_set i_set =2 setsys_option option =0 link_option !=0 setsys_params[i_set,setsys_option] bits 31..16 =2 setsys_option !=0 0 setsys_params[i_set,setsys_option] bits 31..16 If (condition) { set_system; link } Either compare_option or link_option may be set – not both (It is valid to have neither set). If compare_option==0, condition is always true. If compare_option!=0, link is always ignored. Fields cp1, cp2 are only used if compare_option != 0. Field link_params only used if link_options != 0. Field setsys_option always used. i_comp i_comp compare_ i_set =3 set_option option =0 link_option !=0 parm_n =3 i_set set_option !=0 =0 cp1[] parm_n If (condition) { set; link } Either compare_option or link_option may be set – not both (It is valid to have neither set). If compare_option==0, condition is always true. If compare_option!=0, link is always ignored. Fields cp1, c2 are only used if compare_option != 0. Field link_params only used if link_options != 0. Field set_option always used. i_comp compare_ i_set =4 set_option option parm_n set_params_m[i_set] set; if (condition) { link } compare_option must be != 0 parm_flag i_set =0 i_comp compare_ =5 or 6 set_option option parm_n parm_m cp1[] compare_ =1 =5 or 6 set_option option parm_n i_val 5: if (condition) { set; link } 6: if (condition) { set }; link compare_option must be != 0 (Line this & next sheet up touching the previous two pages) Second word 31 24 23 16 15 8 7 0 c2[i_comp] goto_params[goto_option] c2[i_comp] link_params[link_option] jump_params[jump_option] bits 15..0 cp1[] cp2[] setsys_params[i_set,setsys_option] bits 15..0 link_params[link_option] setsys_params[i_set,setsys_option] bits 15..0 cp1[] cp2[] set_params_m[i_set] link_params[link_option] set_params_m[i_set] c2[i_comp] c2[i_comp] link_params[LINKSINS] c2[i_comp] link_params[LINKSINS] cp1[] cp2[] link_params[LINKSINS] cp1[] set_params_m_non_i 7 0 7 0 parm_flag gprmn parm_m cp2[] set_params_m_i 7 0 15 8 7 0 i_val prm_flag prmn c2[i_comp==0] set_params_m[i_set=0] 15 8 7 0 15 8 7 0 prm_flag prmn set_params_m_non_i c2[i_comp==1] set_params_m[i_set=1] 15 8 7 0 15 8 7 0 ival set_params_m_i goto_params[goto_option=NOP] goto_params[goto_option=BREAK] 15 8 7 0 15 8 7 0 goto_params[goto_option=GOTO] goto_params[goto_option=SETTMPPML] 15 8 7 0 15 8 7 0 pc ptl_lvl pc link_params[link_option==LINKSINS] link_params[link_option==LINKPTTN] 15 8 7 0 15 8 7 0 hl_btnn linkins hl_btnn pttn hl_btnn is not used for linkins==RSM link_params[link_option==LINKTKN] link_params[link_option==LINKTKNGP] 15 8 7 0 15 8 7 0 hl_btnn tkn hl_btnn gprmn link_params[link_option==LINKDLISTN] link_params[link_option==LINKDLISTNGP] 15 8 7 0 15 8 7 0 hl_btnn dlistn hl_btnn gprmn link_params[link_option==LINKPGCN] link_params[link_option==LINKPGCNGP] 15 8 7 0 15 8 7 0 pgcn gprmn link_params[link_option==LINKPGN] link_params[link_option==LINKPGNGP] 15 8 7 0 15 8 7 0 hl_btnn pgn hl_btnn gprmn link_params[link_option==LINKCN] link_params[link_option==LINKCNGP] 15 8 7 0 15 8 7 0 hl_btnn cn hl_btnn gprmn jump_params[jump_option=EXIT] 31 24 23 16 15 8 7 0 jump_params[jump_option=JUMPTT] 31 24 23 16 15 8 7 0 ttn jump_params[jump_option=JUMPVTS_TT] 31 24 23 16 15 8 7 0 vts_ttn jump_params[jump_option=JUMPVTS_PTT] 31 24 23 16 15 8 7 0 pttn vts_ttn jump_params[jump_option=JUMPSS] 31 24 23 16 15 8 7 0 domain domain == FP_PGC or VMGM_ROOT: No parameters jump_params[jump_option=JUMPSS,domain=VTSM] 31 24 23 16 15 8 7 0 vts_ttn vtsn (0 -> current VTS) VTSM menu jump_params[jump_option=JUMPSS,domain=VMGM] 31 24 23 16 15 8 7 0 pgcn VMGM jump_params[jump_option=CALLSS] 31 24 23 16 15 8 7 0 pgcn rsm_cn domain menu pgcn field only valid for (domain==VMGM). menu field only valid for (domain==VTSM) jump_params[jump_option=JUMPTTGR] 31 24 23 16 15 8 7 0 att_grn jump_params[jump_option=JUMPTK] 31 24 23 16 15 8 7 0 att_grn tkn jump_params[jump_option=AMGM_RSM] 31 24 23 16 15 8 7 0 setsys_params[i_set=0,setsys_option=SETSTN] 31 24 23 16 15 8 7 0 set_spstn set_astn set_agln astn_gprmn spstn_gprmn agln_gprmn setsys_params[i_set=1,setsys_option=SETSTN] 31 24 23 16 15 8 7 0 sp_disp_flag set_spstn set_astn set_agln astn spstn agln For DVD-Audio discs, only 2 audio streams may exist, so only the LSB of astn is valid. setsys_params[i_set=0,setsys_option=SETNVTMR] 31 24 23 16 15 8 7 0 gprmn tt_pgcn setsys_params[i_set=1,setsys_option=SETNVTMR] 31 24 23 16 15 8 7 0 nv_tmr tt_pgcn setsys_params[i_set=0,setsys_option=SETGPRMMD] 31 24 23 16 15 8 7 0 mode gprmn gprm_num setsys_params[i_set=1,setsys_option=SETGPRMMD] 31 24 23 16 15 8 7 0 mode gprm_val gprm_num setsys_params[i_set=0,setsys_option=SETAMXMD] 31 24 23 16 15 8 7 0 gprmn setsys_params[i_set=1,setsys_option=SETAMXMD] 31 24 23 16 15 8 7 0 ach4_mix_ach0 ach3_mix_ach0 ach2_mix_ach0 ach4_mix_ach1 ach3_mix_ach1 ach2_mix_ach1 setsys_params[i_set=0,setsys_option=SETHL_BTNN] 31 24 23 16 15 8 7 0 gprmn setsys_params[i_set=1,setsys_option=SETHL_BTNN] 31 24 23 16 15 8 7 0 hl_btnn link_option linkins jump_option domain setsys_option 1: LinkSIns 0: NoLink 1: Exit 0: FP 1: SetStn 2: LinkTkN 1: LinkTopC 2: JumpTT 1: VMGM_ROOT 2: SetNvTmr 3: LinkDListN 2: LinkNextC 3: JumpVTS_TT 2: VTSM 3: SetGprmMd 4: LinkPGCN 3: LinkPrevC 5: JumpVTS_PTT 3: VMGM 4: SetAMxMd 5: LinkPTTN 5: LinkTopPG 6: JumpSS 6: SetHL_BTNN 6: LinkPGN 6: LinkNextPG 8: CallSS set_option 7: LinkCN 7: LinkPrevPG 9: JumpTT_GR 1: Mov compare_option 10: LinkTknGP 9: LinkTopPGC 10: JumpTK 2: Swp 1: BC 11: LinkDListNGP 10: LinkNextPGC 11: AMGM_Rsm 3: Add 2: EQ 12: LinkPGCNGP 11: LinkPrevPGC 4: Sub 3: NE 14: LinkPGNGP 12: LinkGoUpPGC goto_option 5: Mul 4: GE 15: LinkCNGP 13: LinkTailPGC 0: Nop 6: Div 5: GT 16: Rsm 1: GoTo 7: Mod 6: LE menu 18: LinkNextDList 2: Break 8: Rnd 7: LT 2: TITLE 19: LinkPrevDList 2: SetTmpPML 9: And 3: ROOT 10: Or 4: SUB_PICTURE 11: Xor 5: AUDIO 6: ANGLE 7: PTT