📄 iforeader.cc
字号:
vmgiMat.vmgm_pgci_ut = read32(); vmgiMat.ptl_mait = read32(); vmgiMat.vts_atrt = read32(); vmgiMat.txtdt_mgi = read32(); vmgiMat.vmgm_c_adt = read32(); vmgiMat.vmgm_vobu_admap = read32(); read(vmgiMat.zero_6, sizeof(vmgiMat.zero_6)); read(vmgiMat.vmgm_video_attr); vmgiMat.zero_7 = read8(); vmgiMat.nr_of_vmgm_audio_streams = read8(); read(vmgiMat.vmgm_audio_attr); read(vmgiMat.zero_8, sizeof(vmgiMat.zero_8)); read(vmgiMat.zero_9, sizeof(vmgiMat.zero_9)); vmgiMat.nr_of_vmgm_subp_streams = read8(); read(vmgiMat.vmgm_subp_attr); read(vmgiMat.zero_10, sizeof(vmgiMat.zero_10));}//------------------------------------------------------------------------------void IFOReader::read(playback_type_t& playbackType){ read(&playbackType, sizeof(playbackType));}//------------------------------------------------------------------------------void IFOReader::read(title_info_t& titleInfo){ read(titleInfo.pb_ty); titleInfo.nr_of_angles = read8(); titleInfo.nr_of_ptts = read16(); titleInfo.parental_id = read16(); titleInfo.title_set_nr = read8(); titleInfo.vts_ttn = read8(); titleInfo.title_set_sector = read32();}//------------------------------------------------------------------------------void IFOReader::read(tt_srpt_t& potSPT){ potSPT.zero_1 = read16(); potSPT.last_byte = read32(); title_info_t* title; potSPT.nr_of_srpts = readArray(title); potSPT.title = title;}//------------------------------------------------------------------------------void IFOReader::read(ptl_mait_country_t& ptlMgmtUnit){ ptlMgmtUnit.country_code = read16(); ptlMgmtUnit.zero_1 = read16(); ptlMgmtUnit.pf_ptl_mai_start_byte = read16(); ptlMgmtUnit.zero_2 = read16();}//------------------------------------------------------------------------------void IFOReader::read(ptl_mait_t& ptlMgmtTable){ ptlMgmtTable.nr_of_vtss = read16(); ptlMgmtTable.last_byte = read32(); ptlMgmtTable.nr_of_countries = read16(); size_t countriesOffset = sizeof(ptl_mait_country_t) * ptlMgmtTable.nr_of_countries; size_t remainder = ptlMgmtTable.nr_of_countries * (ptlMgmtTable.nr_of_vtss+1) * 16; ptlMgmtTable.countries = (ptl_mait_country_t*)malloc(countriesOffset + remainder); for(size_t i = 0; i<ptlMgmtTable.nr_of_countries; ++i) { read(ptlMgmtTable.countries[i]); } char* table = reinterpret_cast<char*>(ptlMgmtTable.countries); read(table+countriesOffset, remainder);}//------------------------------------------------------------------------------void IFOReader::read(vts_attributes_t& vtsAttributes){ vtsAttributes.last_byte = read32(); vtsAttributes.vts_cat = read32(); read(vtsAttributes.vtsm_vobs_attr); vtsAttributes.zero_1 = read8(); vtsAttributes.nr_of_vtsm_audio_streams = read8(); read(vtsAttributes.vtsm_audio_attr); read(vtsAttributes.zero_2, sizeof(vtsAttributes.zero_2)); read(vtsAttributes.zero_3, sizeof(vtsAttributes.zero_3)); vtsAttributes.zero_4 = read8(); vtsAttributes.nr_of_vtsm_subp_streams = read8(); read(vtsAttributes.zero_5, sizeof(vtsAttributes.zero_5)); read(vtsAttributes.zero_6, sizeof(vtsAttributes.zero_6)); read(vtsAttributes.vtstt_vobs_video_attr); vtsAttributes.zero_7 = read8(); vtsAttributes.nr_of_vtstt_audio_streams = read8(); readFixedArray(sizeof(vtsAttributes.vtstt_audio_attr), vtsAttributes.vtstt_audio_attr); read(vtsAttributes.zero_8, sizeof(vtsAttributes.zero_8)); vtsAttributes.zero_9 = read8(); vtsAttributes.nr_of_vtstt_subp_streams = read8(); readFixedArray(sizeof(vtsAttributes.vtstt_subp_attr), vtsAttributes.vtstt_subp_attr);}//------------------------------------------------------------------------------void IFOReader::read(vts_atrt_t& vtsAttributeTable){ vtsAttributeTable.zero_1 = read16(); vtsAttributeTable.last_byte = read32(); vts_attributes_t* vts; vtsAttributeTable.nr_of_vtss = readArray(vts); vtsAttributeTable.vts = vts;}//------------------------------------------------------------------------------void IFOReader::read(txtdt_t& textData){ textData.last_byte = read32(); readFixedArray(sizeof(textData.offsets), textData.offsets);}//------------------------------------------------------------------------------void IFOReader::read(txtdt_lu_t& textDataUnit){ textDataUnit.lang_code = read16(); textDataUnit.unknown = read16(); textDataUnit.txtdt_start_byte = read32(); txtdt_t* txtdt; readPointer(txtdt); textDataUnit.txtdt = txtdt;}//------------------------------------------------------------------------------void IFOReader::read(txtdt_mgi_t& textDataMGI){ read(textDataMGI.disc_name, sizeof(textDataMGI.disc_name)); textDataMGI.last_byte = read32(); txtdt_lu_t* lu; textDataMGI.nr_of_language_units = readArray(lu); textDataMGI.lu = lu;}//------------------------------------------------------------------------------void IFOReader::read(vtsi_mat_t& vtsiMAT){ read(vtsiMAT.vts_identifier, sizeof(vtsiMAT.vts_identifier)); vtsiMAT.vts_last_sector = read32(); read(vtsiMAT.zero_1, sizeof(vtsiMAT.zero_1)); vtsiMAT.vtsi_last_sector = read32(); vtsiMAT.zero_2 = read8(); vtsiMAT.specification_version = read8(); vtsiMAT.vts_category = read32(); vtsiMAT.zero_3 = read16(); vtsiMAT.zero_4 = read16(); vtsiMAT.zero_5 = read8(); read(vtsiMAT.zero_6, sizeof(vtsiMAT.zero_6)); vtsiMAT.zero_7 = read16(); read(vtsiMAT.zero_8, sizeof(vtsiMAT.zero_8)); vtsiMAT.zero_9 = read64(); read(vtsiMAT.zero_10, sizeof(vtsiMAT.zero_10)); vtsiMAT.vtsi_last_byte = read32(); vtsiMAT.zero_11 = read32(); read(vtsiMAT.zero_12, sizeof(vtsiMAT.zero_12)); vtsiMAT.vtsm_vobs = read32(); vtsiMAT.vtstt_vobs = read32(); vtsiMAT.vts_ptt_srpt = read32(); vtsiMAT.vts_pgcit = read32(); vtsiMAT.vtsm_pgci_ut = read32(); vtsiMAT.vts_tmapt = read32(); vtsiMAT.vtsm_c_adt = read32(); vtsiMAT.vtsm_vobu_admap = read32(); vtsiMAT.vts_c_adt = read32(); vtsiMAT.vts_vobu_admap = read32(); read(vtsiMAT.zero_13, sizeof(vtsiMAT.zero_13)); read(vtsiMAT.vtsm_video_attr); vtsiMAT.zero_14 = read8(); vtsiMAT.nr_of_vtsm_audio_streams = read8(); read(vtsiMAT.vtsm_audio_attr); read(vtsiMAT.zero_15, sizeof(vtsiMAT.zero_15)); read(vtsiMAT.zero_16, sizeof(vtsiMAT.zero_16)); vtsiMAT.nr_of_vtsm_subp_streams = read8(); read(vtsiMAT.vtsm_subp_attr); read(vtsiMAT.zero_17, sizeof(vtsiMAT.zero_17)); read(vtsiMAT.zero_18, sizeof(vtsiMAT.zero_18)); read(vtsiMAT.vts_video_attr); vtsiMAT.zero_19 = read8(); vtsiMAT.nr_of_vts_audio_streams = read8(); readFixedArray(sizeof(vtsiMAT.vts_audio_attr), vtsiMAT.vts_audio_attr); read(vtsiMAT.zero_20, sizeof(vtsiMAT.zero_15)); vtsiMAT.nr_of_vtsm_subp_streams = read8(); readFixedArray(sizeof(vtsiMAT.vts_subp_attr), vtsiMAT.vts_subp_attr);}//------------------------------------------------------------------------------void IFOReader::read(ptt_info_t& pttInfo){ pttInfo.pgcn = read16(); pttInfo.pgn = read16();}//------------------------------------------------------------------------------void IFOReader::read(ttu_t& ttu){ ptt_info_t* ptt; ttu.nr_of_ptts = readArray(ptt); ttu.ptt = ptt;}//------------------------------------------------------------------------------void IFOReader::read(vts_ptt_srpt_t& pttSPT){ pttSPT.zero_1 = read16(); pttSPT.last_byte = read32(); ttu_t* title; pttSPT.nr_of_srpts = readArray(title); pttSPT.title = title;}//------------------------------------------------------------------------------void IFOReader::readCommon(ifo_handle_t* ifoHandle){ readPointer(ifoHandle->pgci_ut); readPointer(ifoHandle->menu_c_adt); readPointer(ifoHandle->menu_vobu_admap);}//------------------------------------------------------------------------------IFOReader::IFOReader(FILE* f, bool versioned) : Reader<IFOReader>(f){ if (versioned) { version = read32(); }}//------------------------------------------------------------------------------void IFOReader::readVMG(ifo_handle_t* ifoHandle){ readCommon(ifoHandle); readPointer(ifoHandle->vmgi_mat); readPointer(ifoHandle->tt_srpt); readPointer(ifoHandle->first_play_pgc); readPointer(ifoHandle->ptl_mait); readPointer(ifoHandle->vts_atrt); readPointer(ifoHandle->txtdt_mgi);}//------------------------------------------------------------------------------void IFOReader::readVTS(ifo_handle_t* ifoHandle){ readCommon(ifoHandle); readPointer(ifoHandle->vtsi_mat); readPointer(ifoHandle->vts_ptt_srpt); readPointer(ifoHandle->vts_pgcit); readPointer(ifoHandle->vts_c_adt); readPointer(ifoHandle->vts_vobu_admap);}//------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -