/** * @file nro.h * @brief NRO headers. * @copyright libnx Authors */ #pragma once #include "thirdparty/libnx/types.h" #define NROHEADER_MAGIC 0x304f524e #define NROASSETHEADER_MAGIC 0x54455341 #define NROASSETHEADER_VERSION 0 /// Entry for each segment in the codebin. typedef struct { u32 file_off; u32 size; } NroSegment; /// Offset 0x0 in the NRO. typedef struct { u32 unused; u32 mod_offset; u8 padding[8]; } NroStart; /// This follows NroStart, the actual nro-header. typedef struct { u32 magic; u32 unk1; u32 size; u32 unk2; NroSegment segments[3]; u32 bss_size; u32 unk3; u8 build_id[0x20]; u8 padding[0x20]; } NroHeader; /// Custom asset section. typedef struct { u64 offset; u64 size; } NroAssetSection; /// Custom asset header. typedef struct { u32 magic; u32 version; NroAssetSection icon; NroAssetSection nacp; NroAssetSection romfs; } NroAssetHeader;