From cb3600034dc99882a6084b97ae1577275e506dc7 Mon Sep 17 00:00:00 2001 From: Jaby Date: Wed, 16 Nov 2022 02:44:39 +0100 Subject: [PATCH] Restructure code to write license --- src/Tools/psxcdgen_ex/src/encoder/psx.rs | 64 ++++++++++++++++-------- 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/src/Tools/psxcdgen_ex/src/encoder/psx.rs b/src/Tools/psxcdgen_ex/src/encoder/psx.rs index 29550d26..d8e0a625 100644 --- a/src/Tools/psxcdgen_ex/src/encoder/psx.rs +++ b/src/Tools/psxcdgen_ex/src/encoder/psx.rs @@ -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, root_dir: SharedPtr, vol_sector_count: usize, sec_writer: &mut dyn SectorWriter) -> Result<(), Error> {