Restructure code to write license

This commit is contained in:
jaby 2022-11-16 02:44:39 +01:00
parent a632b84970
commit 0b5e67582d
1 changed files with 44 additions and 20 deletions

View File

@ -88,6 +88,47 @@ pub fn encode_psx_image(cd_desc: CDDesc, sec_writer: &mut dyn SectorWriter) -> R
}
fn process_system_area(system_area: &SystemArea, sec_writer: &mut dyn SectorWriter) -> Result<(), Error> {
fn write_license_file(sec_writer: &mut dyn SectorWriter) -> Result<(), Error> {
fn write_data_zeros(sec_writer: &mut dyn SectorWriter) -> Result<(), Error> {
for _ in 0..4 {
sec_writer.write_cd_xa_data(builder::create_xa_data_zero())?;
}
Ok(())
}
fn write_license_string(sec_writer: &mut dyn SectorWriter) -> Result<(), Error> {
sec_writer.write_cd_xa_data(builder::create_xa_data_zero())?;
Ok(())
}
fn write_license_logo(sec_writer: &mut dyn SectorWriter) -> Result<(), Error> {
for _ in 0..4 {
sec_writer.write_cd_xa_data(builder::create_xa_data_zero())?;
}
Ok(())
}
fn write_audio_zeros(sec_writer: &mut dyn SectorWriter) -> Result<(), Error> {
for _ in 0..4 {
let sector = {
let mut sector = builder::create_xa_audio_zero();
sector.sub_header.sub_mode.clear_audio();
sector
};
sec_writer.write_cd_xa_audio(sector)?;
}
Ok(())
}
write_data_zeros(sec_writer)?;
write_license_string(sec_writer)?;
write_license_logo(sec_writer)?;
write_audio_zeros(sec_writer)
}
let system_area_lba = system_area.track_rel_lba;
if system_area_lba != 0 {
return Err(Error::from_text(format!("System Area required to start at sector 0 of Track - found LBA: {}", system_area_lba)));
@ -98,30 +139,13 @@ fn process_system_area(system_area: &SystemArea, sec_writer: &mut dyn SectorWrit
for _ in 0..SYSTEM_AREA_SECTOR_COUNT {
sec_writer.write_cd_xa_data(builder::create_xa_data_zero())?;
}
Ok(())
}
else {
for _ in 0..4 {
sec_writer.write_cd_xa_data(builder::create_xa_data_zero())?;
}
// Read from CD License file
for _ in 0..8 {
sec_writer.write_cd_xa_data(builder::create_xa_data_zero())?;
}
for _ in 0..4 {
let sector = {
let mut sector = builder::create_xa_audio_zero();
sector.sub_header.sub_mode.clear_audio();
sector
};
sec_writer.write_cd_xa_audio(sector)?;
}
write_license_file(sec_writer)
}
Ok(())
}
fn process_pvd(pvd: &PrimaryVolumeDescriptor, path_table: SharedPtr<PathTable>, root_dir: SharedPtr<Directory>, vol_sector_count: usize, sec_writer: &mut dyn SectorWriter) -> Result<(), Error> {