- /********************/
- start_ptt:
- part_of_title { // PTT
- num : 16;
- UNKNOWN : 16;
- len : 32;
- for (i=0; i<num; i++) {
- part_offset : 32;
- }
- part_offset[i]:
- len : 32;
- while (s < len) {
- program_chain : 16;
- program : 16;
- }
- }
- /********************/
- _program_chain {
- UNKNOWN : 16;
- num_cells : 8;
- num_cell_addr : 8;
- chain_time_hour : 8; // BCD
- chain_time_min : 8; // BCD
- chain_time_sec : 8; // BCD
- frames : 1; // ? 30f/s : 25f/s non drop frame
- chain_time_milisec : 7; // BCD
- UNKNOWN : 32;
- //AUDIO
- for (s=0; s<8; s++) {
- avail : 1;
- audio_stream_num : 7;
- UKNOWN : 8;
- }
- //SUBPICTURE
- for (s=0; s<32; s++) {
- avail : 1;
- subpicture_stream_id_43 : 7;
- subpicture_stream_id_wide : 8;
- subpicture_stream_id_letter : 8;
- subpicture_stream_id_pan : 8;
- }
- UNKNOWN : 8*8;
- //COLOR
- for (s=0; s<16; s++) {
- UNKNOWN : 8;
- y : 8;
- cr : 8;
- cb : 8;
- }
- start_cmd_tbl : 16;
- start_program_map : 16;
- start_cell_play_info : 16;
- start_cell_position : 16;
- num_pre_cmd : 16;
- num_post_cmd : 16;
- ? num_cell_cmd : 16;
- ? len_cmd_tbl : 16;
- len_cmd_tbl : 32;
- start_cmd_tbl:
- //PRE COMMANDS
- for (s=0; s<num_pre_cmd; s++) {
- command : 64;
- //POST COMMANDS
- for (s=0; s<num_post_cmd; s++) {
- command : 64;
- }
- start_program_map:
- for (s=0; s<num_cells; s++) {
- cell_num : 8;
- }
- start_cell_play_info:
- //CELL LINKS
- for (s=0; s<num_cells; s++) {
- UNKNOWN : 16;
- ! still_time : 8; // in sec
- ! cell_cmd : 8;
- ! len_time_hour : 8; // BCD
- ! len_time_min : 8; // BCD
- ! len_time_sec : 8; // BCD
- ! frames : 1; // ? 30f/s : 25f/s non drop frame
- ! len_time_milisec : 7; // BCD
- 1st_vobu_start : 32;
- ! 1st_ilvu_end : 32; // ???
- last_vobu_start : 32;
- last_vobu_end : 32;
- }
- start_cell_position:
- for (s=0; s<num_cells; s++) {
- vob_id : 16;
- cell_id : 16;
- }
- }
- /********************/
- start_title_pgci:
- program_chain_information {
- num : 16;
- UNKNOWN : 16;
- len : 32;
- for (i=0; i<len; i++) {
- id : 16;
- UNKNOWN : 16;
- start : 32;
- }
- for (i=0; i<num; i++) {
- start[i]:
- _program_chain ()
- }
- }
- /********************/
- _language_unit {
- num : 16;
- UNKNOWN : 16;
- len : 32;
- for (i=0; i<num; i++) {
- UNKNOWN : 16; // menuID, ...?
- UNKNOWN : 16; // parental rate?
- start : 32;
- }
- for (i=0; i<num; i++) {
- start[i]:
- _program_chain ()
- }
- }
- /********************/
- start_menu_pgci:
- menu_language_unit { // MLU
- num : 16;
- UNKNOWN : 16;
- len : 32;
- for (i=0; i<num; i++) {
- language : 16; // ISO char
- UNKNOWN : 16;
- start : 32;
- }
- for (i=0; i<num; i++) {
- start[i]:
- _language_unit ()
- }
- }
- /********************/
- start_tmt:
- tmt { //Time Map Table
- num : 16;
- UNKNOWN : 16;
- len : 32;
- time_unit : 8; // in seconds
- UNKNOWN : 24;
- for (i=0; i<num; i) {
- start : 32;
- }
- while (i<len) {
- start_of_unit : 1;
- time : 31;
- }
- }
- /********************/
- vobu_addr_map {
- len : 32;
- while (i<len) {
- vobu_addr : 32;
- }
- }