pub struct CicBootSecrets {
pub ipl2_seed: u8,
pub ipl3_seed: u8,
pub ipl2_checksum: [u8; 6],
}Expand description
The boot secrets a CIC hands the PIF at power-on.
From n64brew_wiki/markdown/PIF-NUS.md §checksum table: the two 8-bit seeds
and the 6-byte IPL2 checksum. On the real-PIF path the PIF writes the seeds
into PIF RAM (IPL2 reads them to run its own checksum) and keeps the checksum
to compare against the value IPL2 computes — a mismatch NMI-halts the CPU.
These are documented constants, not the SM5 firmware; the seed bytes
cross-check the per-CIC seed values the HLE boot path already injects.
Fields§
§ipl2_seed: u8The 8-bit IPL2 seed (used by IPL2’s checksum over the cart’s IPL3).
ipl3_seed: u8The 8-bit IPL3 seed (used by IPL3’s checksum over the first MiB).
ipl2_checksum: [u8; 6]The 6-byte IPL2 checksum the PIF expects the CPU to reproduce.
Trait Implementations§
Source§impl Clone for CicBootSecrets
impl Clone for CicBootSecrets
Source§fn clone(&self) -> CicBootSecrets
fn clone(&self) -> CicBootSecrets
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CicBootSecrets
impl Debug for CicBootSecrets
Source§impl<'de> Deserialize<'de> for CicBootSecrets
impl<'de> Deserialize<'de> for CicBootSecrets
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for CicBootSecrets
impl PartialEq for CicBootSecrets
Source§impl Serialize for CicBootSecrets
impl Serialize for CicBootSecrets
impl Copy for CicBootSecrets
impl Eq for CicBootSecrets
impl StructuralPartialEq for CicBootSecrets
Auto Trait Implementations§
impl Freeze for CicBootSecrets
impl RefUnwindSafe for CicBootSecrets
impl Send for CicBootSecrets
impl Sync for CicBootSecrets
impl Unpin for CicBootSecrets
impl UnsafeUnpin for CicBootSecrets
impl UnwindSafe for CicBootSecrets
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more