From 0d7b4dc4cc8c07069af0433da51e6c0f651d9077 Mon Sep 17 00:00:00 2001 From: Filipe Rodrigues Date: Tue, 25 Oct 2022 19:13:43 +0100 Subject: [PATCH] `ddw3_psexe::Header` now properly formats fields on debugging --- tools/ddw3-mkpsexe/src/main.rs | 1 + tools/ddw3-psexe/src/lib.rs | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/ddw3-mkpsexe/src/main.rs b/tools/ddw3-mkpsexe/src/main.rs index 3e759a8bc..37b288b90 100644 --- a/tools/ddw3-mkpsexe/src/main.rs +++ b/tools/ddw3-mkpsexe/src/main.rs @@ -116,6 +116,7 @@ fn main() -> Result<(), anyhow::Error> { }, }, }; + tracing::trace!(?header); output_file .write_serialize::<_, Result<_, anyhow::Error>>(&header) .context("Unable to write output file header")?; diff --git a/tools/ddw3-psexe/src/lib.rs b/tools/ddw3-psexe/src/lib.rs index 18c93e7cb..cb97fd252 100644 --- a/tools/ddw3-psexe/src/lib.rs +++ b/tools/ddw3-psexe/src/lib.rs @@ -7,10 +7,11 @@ use { byteorder::{ByteOrder, LittleEndian}, ddw3_bytes::Bytes, + std::fmt, }; /// Psx header -#[derive(PartialEq, Eq, Clone, Copy, Debug)] +#[derive(PartialEq, Eq, Clone, Copy)] pub struct Header { /// Start address pub pc0: u32, @@ -28,6 +29,20 @@ pub struct Header { pub license: [u8; Self::LICENSE_SIZE], } +impl fmt::Debug for Header { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let license_end_idx = self.license.iter().position(|&b| b == 0).unwrap_or(self.license.len()); + + f.debug_struct("Header") + .field("pc0", &format_args!("{:#010x}", self.pc0)) + .field("text_base", &format_args!("{:#010x}", self.text_base)) + .field("text_size", &format_args!("{:#010x}", self.text_size)) + .field("sp", &format_args!("{:#010x}", self.sp)) + .field("license", &String::from_utf8(self.license[..license_end_idx].to_vec())) + .finish() + } +} + impl Header { /// License size pub const LICENSE_SIZE: usize = 0x800 - 0x4c;