diff --git a/ctru-rs/examples/mii-selector.rs b/ctru-rs/examples/mii-selector.rs index 1b89532..975fda0 100644 --- a/ctru-rs/examples/mii-selector.rs +++ b/ctru-rs/examples/mii-selector.rs @@ -18,7 +18,6 @@ fn main() { println!("Is Mii selected?: {:?}", result.is_mii_selected); println!("Mii type: {:?}", result.mii_type); - println!("Mii checksum: {:?}", result.checksum); println!("Name: {:?}", result.mii_data.name); println!("Author: {:?}", result.mii_data.author_name); println!( diff --git a/ctru-rs/src/applets/mii_selector.rs b/ctru-rs/src/applets/mii_selector.rs index 3bbcedc..fef106b 100644 --- a/ctru-rs/src/applets/mii_selector.rs +++ b/ctru-rs/src/applets/mii_selector.rs @@ -52,12 +52,12 @@ pub struct MiiSelector { } /// Return value from a MiiSelector's launch +#[non_exhaustive] #[derive(Clone, Debug)] pub struct MiiSelectorReturn { pub mii_data: MiiData, pub is_mii_selected: bool, pub mii_type: MiiType, - pub checksum: u16, } /// Error type for the Mii selector @@ -148,16 +148,15 @@ impl MiiSelector { unsafe { ctru_sys::miiSelectorLaunch(self.config.as_mut(), return_val.as_mut()) } if unsafe { ctru_sys::miiSelectorChecksumIsValid(return_val.as_mut()) } { - Ok(return_val.into()) + Ok((*return_val).into()) } else { Err(MiiLaunchError::InvalidChecksum) } } } -impl From> for MiiSelectorReturn { - fn from(ret: Box) -> Self { - let checksum = ret.checksum; +impl From for MiiSelectorReturn { + fn from(ret: ctru_sys::MiiSelectorReturn) -> Self { let raw_mii_data = ret.mii; let no_mii_selected = ret.no_mii_selected; let guest_mii_index_clone = ret.guest_mii_index; @@ -178,7 +177,6 @@ impl From> for MiiSelectorReturn { } else { MiiType::User }, - checksum, } } } diff --git a/ctru-rs/src/mii.rs b/ctru-rs/src/mii.rs index 85ac191..e4ebcb4 100644 --- a/ctru-rs/src/mii.rs +++ b/ctru-rs/src/mii.rs @@ -40,10 +40,11 @@ pub struct SelectorPosition { /// Represents the kind of origin console #[derive(Copy, Clone, Debug, Eq, PartialEq)] pub enum OriginConsole { - ConsoleWii, - ConsoleDSi, - Console3DS, - ConsoleWiiUSwitch, + Wii, + DSi, + /// Both New 3DS and Old 3DS + N3DS, + WiiUSwitch, } /// Represents the identity of the origin console @@ -291,17 +292,17 @@ impl From for MiiData { }; let position = SelectorPosition { - page_index: partial_u8_bits_to_u8(&raw_position[0..3]), - slot_index: partial_u8_bits_to_u8(&raw_position[4..7]), + page_index: partial_u8_bits_to_u8(&raw_position[0..=3]), + slot_index: partial_u8_bits_to_u8(&raw_position[4..=7]), }; let device = ConsoleIdentity { origin_console: { match (raw_device[6], raw_device[5], raw_device[4]) { - (false, false, true) => OriginConsole::ConsoleWii, - (false, true, false) => OriginConsole::ConsoleDSi, - (false, true, true) => OriginConsole::Console3DS, - _ => OriginConsole::ConsoleWiiUSwitch, + (false, false, true) => OriginConsole::Wii, + (false, true, false) => OriginConsole::DSi, + (false, true, true) => OriginConsole::N3DS, + _ => OriginConsole::WiiUSwitch, } }, }; @@ -313,85 +314,85 @@ impl From for MiiData { false => MiiSex::Male, } }, - birthday_month: partial_u8_bits_to_u8(&raw_details[1..4]), - birthday_day: partial_u8_bits_to_u8(&raw_details[5..9]), - shirt_color: partial_u8_bits_to_u8(&raw_details[10..13]), + birthday_month: partial_u8_bits_to_u8(&raw_details[1..=4]), + birthday_day: partial_u8_bits_to_u8(&raw_details[5..=9]), + shirt_color: partial_u8_bits_to_u8(&raw_details[10..=13]), is_favorite: raw_details[14], }; let face_details = FaceDetails { style: FaceStyle { - is_sharing_enabled: !raw_face_style[1], - shape: partial_u8_bits_to_u8(&raw_face_style[1..4]), - skin_color: partial_u8_bits_to_u8(&raw_face_style[5..7]), + is_sharing_enabled: !raw_face_style[0], + shape: partial_u8_bits_to_u8(&raw_face_style[1..=4]), + skin_color: partial_u8_bits_to_u8(&raw_face_style[5..=7]), }, - wrinkles: partial_u8_bits_to_u8(&raw_face_details[0..3]), - makeup: partial_u8_bits_to_u8(&raw_face_details[4..7]), + wrinkles: partial_u8_bits_to_u8(&raw_face_details[0..=3]), + makeup: partial_u8_bits_to_u8(&raw_face_details[4..=7]), }; let hair_details = HairDetails { style: raw_mii_data[0x32], - color: partial_u8_bits_to_u8(&raw_hair_details[0..2]), + color: partial_u8_bits_to_u8(&raw_hair_details[0..=2]), is_flipped: raw_hair_details[3], }; let eye_details = EyeDetails { - style: partial_u8_bits_to_u8(&raw_eye_details[0..5]), - color: partial_u8_bits_to_u8(&raw_eye_details[6..8]), - scale: partial_u8_bits_to_u8(&raw_eye_details[9..12]), - y_scale: partial_u8_bits_to_u8(&raw_eye_details[13..15]), - rotation: partial_u8_bits_to_u8(&raw_eye_details[16..20]), - x_spacing: partial_u8_bits_to_u8(&raw_eye_details[21..24]), - y_position: partial_u8_bits_to_u8(&raw_eye_details[25..29]), + style: partial_u8_bits_to_u8(&raw_eye_details[0..=5]), + color: partial_u8_bits_to_u8(&raw_eye_details[6..=8]), + scale: partial_u8_bits_to_u8(&raw_eye_details[9..=12]), + y_scale: partial_u8_bits_to_u8(&raw_eye_details[13..=15]), + rotation: partial_u8_bits_to_u8(&raw_eye_details[16..=20]), + x_spacing: partial_u8_bits_to_u8(&raw_eye_details[21..=24]), + y_position: partial_u8_bits_to_u8(&raw_eye_details[25..=29]), }; let eyebrow_details = EyebrowDetails { - style: partial_u8_bits_to_u8(&raw_eyebrow_details[0..4]), - color: partial_u8_bits_to_u8(&raw_eyebrow_details[5..7]), - scale: partial_u8_bits_to_u8(&raw_eyebrow_details[8..11]), - y_scale: partial_u8_bits_to_u8(&raw_eyebrow_details[12..14]), - rotation: partial_u8_bits_to_u8(&raw_eyebrow_details[16..19]), - x_spacing: partial_u8_bits_to_u8(&raw_eyebrow_details[21..24]), - y_position: partial_u8_bits_to_u8(&raw_eyebrow_details[25..29]), + style: partial_u8_bits_to_u8(&raw_eyebrow_details[0..=4]), + color: partial_u8_bits_to_u8(&raw_eyebrow_details[5..=7]), + scale: partial_u8_bits_to_u8(&raw_eyebrow_details[8..=11]), + y_scale: partial_u8_bits_to_u8(&raw_eyebrow_details[12..=14]), + rotation: partial_u8_bits_to_u8(&raw_eyebrow_details[16..=19]), + x_spacing: partial_u8_bits_to_u8(&raw_eyebrow_details[21..=24]), + y_position: partial_u8_bits_to_u8(&raw_eyebrow_details[25..=29]), }; let nose_details = NoseDetails { - style: partial_u8_bits_to_u8(&raw_nose_details[0..4]), - scale: partial_u8_bits_to_u8(&raw_nose_details[5..8]), - y_position: partial_u8_bits_to_u8(&raw_nose_details[9..13]), + style: partial_u8_bits_to_u8(&raw_nose_details[0..=4]), + scale: partial_u8_bits_to_u8(&raw_nose_details[5..=8]), + y_position: partial_u8_bits_to_u8(&raw_nose_details[9..=13]), }; let mouth_details = MouthDetails { - style: partial_u8_bits_to_u8(&raw_mouth_details[0..5]), - color: partial_u8_bits_to_u8(&raw_mouth_details[6..8]), - scale: partial_u8_bits_to_u8(&raw_mouth_details[9..12]), - y_scale: partial_u8_bits_to_u8(&raw_mouth_details[13..15]), + style: partial_u8_bits_to_u8(&raw_mouth_details[0..=5]), + color: partial_u8_bits_to_u8(&raw_mouth_details[6..=8]), + scale: partial_u8_bits_to_u8(&raw_mouth_details[9..=12]), + y_scale: partial_u8_bits_to_u8(&raw_mouth_details[13..=15]), }; let mustache_details = MustacheDetails { - mouth_y_position: partial_u8_bits_to_u8(&raw_mustache_details[0..4]), - mustache_style: partial_u8_bits_to_u8(&raw_mustache_details[5..7]), + mouth_y_position: partial_u8_bits_to_u8(&raw_mustache_details[0..=4]), + mustache_style: partial_u8_bits_to_u8(&raw_mustache_details[5..=7]), }; let beard_details = BeardDetails { - style: partial_u8_bits_to_u8(&raw_beard_details[0..2]), - color: partial_u8_bits_to_u8(&raw_beard_details[3..5]), - scale: partial_u8_bits_to_u8(&raw_beard_details[6..9]), - y_position: partial_u8_bits_to_u8(&raw_beard_details[10..14]), + style: partial_u8_bits_to_u8(&raw_beard_details[0..=2]), + color: partial_u8_bits_to_u8(&raw_beard_details[3..=5]), + scale: partial_u8_bits_to_u8(&raw_beard_details[6..=9]), + y_position: partial_u8_bits_to_u8(&raw_beard_details[10..=14]), }; let glass_details = GlassDetails { - style: partial_u8_bits_to_u8(&raw_glass_details[0..3]), - color: partial_u8_bits_to_u8(&raw_glass_details[4..6]), - scale: partial_u8_bits_to_u8(&raw_glass_details[7..10]), - y_position: partial_u8_bits_to_u8(&raw_glass_details[11..15]), + style: partial_u8_bits_to_u8(&raw_glass_details[0..=3]), + color: partial_u8_bits_to_u8(&raw_glass_details[4..=6]), + scale: partial_u8_bits_to_u8(&raw_glass_details[7..=10]), + y_position: partial_u8_bits_to_u8(&raw_glass_details[11..=15]), }; let mole_details = MoleDetails { is_enabled: raw_mole_details[0], - scale: partial_u8_bits_to_u8(&raw_mole_details[1..4]), - x_position: partial_u8_bits_to_u8(&raw_mole_details[5..9]), - y_position: partial_u8_bits_to_u8(&raw_mole_details[10..14]), + scale: partial_u8_bits_to_u8(&raw_mole_details[1..=4]), + x_position: partial_u8_bits_to_u8(&raw_mole_details[5..=9]), + y_position: partial_u8_bits_to_u8(&raw_mole_details[10..=14]), }; MiiData {