Write more PVD values
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use super::{*, Sector, SectorWriter, {CDDesc, Error}};
|
||||
use super::super::types::{layout::Layout, *};
|
||||
use builder::SubModeBuilder;
|
||||
use cdtypes::types::{helper::sector_count_mode2_form1, pvd as cd_pvd};
|
||||
use cdtypes::types::{cdstring::{AString, DString}, date::Date, helper::sector_count_mode2_form1, pvd as cd_pvd};
|
||||
|
||||
const SYSTEM_AREA_SECTOR_COUNT:usize = 16;
|
||||
const PVD_SECTOR_COUNT:usize = 2;
|
||||
@@ -93,15 +93,36 @@ fn process_system_area(system_area: &SystemArea, sec_writer: &mut dyn SectorWrit
|
||||
}
|
||||
|
||||
fn process_pvd(pvd: &PrimaryVolumeDescriptor, path_table: SharedPtr<PathTable>, sec_writer: &mut dyn SectorWriter) -> Result<(), Error> {
|
||||
const PLAYSATATION_STR:&'static str = "PLAYSTATION";
|
||||
let path_table = path_table.borrow();
|
||||
|
||||
if pvd.track_rel_lba != 16 {
|
||||
return Err(Error::from_text(format!("PVD required to start at sector 16 of Track - found LBA: {}", pvd.track_rel_lba)));
|
||||
}
|
||||
|
||||
let mut cd_pvd = cd_pvd::PrimaryVolumeDescriptor::psx_default();
|
||||
let mut cd_pvd = cd_pvd::PrimaryVolumeDescriptor::new();
|
||||
let now = Date::now();
|
||||
|
||||
//Config pvd here
|
||||
cd_pvd.system_id = AString::from_str(PLAYSATATION_STR)?;
|
||||
cd_pvd.volume_id = DString::from_str("PSX")?;
|
||||
&cd_pvd.vol_space_size;
|
||||
|
||||
&cd_pvd.path_table_size;
|
||||
&cd_pvd.path_table_1;
|
||||
&cd_pvd.path_table_2;
|
||||
&cd_pvd.path_table_3;
|
||||
&cd_pvd.path_table_4;
|
||||
|
||||
&cd_pvd.root_dir_record;
|
||||
|
||||
&cd_pvd.publisher_id; //< Company name
|
||||
&cd_pvd.data_preparer;
|
||||
cd_pvd.app_id = AString::from_str(PLAYSATATION_STR)?;
|
||||
|
||||
cd_pvd.vol_create_time = now;
|
||||
|
||||
cd_pvd.cd_xa_id = ['C' as u8, 'D' as u8, '-' as u8, 'X' as u8, 'A' as u8, '0' as u8, '0' as u8, '1' as u8];
|
||||
|
||||
sec_writer.write(Sector::CDXAData(builder::create_xa_data_for(SubModeBuilder::new_mode1().set_eor().create(), &cd_pvd)))?;
|
||||
sec_writer.write(Sector::CDXAData(builder::create_xa_data_for(SubModeBuilder::new_mode1().set_eor().set_eof().create(), &cd_pvd::VolumeDescriptorTerminator::new())))?;
|
||||
|
Reference in New Issue
Block a user