/********************/

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;
	}
}

