#pragma warning disable CA2211 // Non-constant fields should not be visible
namespace SabreTools.Data.Models.N3DS
{
    public static class Constants
    {
        // ExeFS
        public static readonly byte[] CodeSegmentName = [0x2e, 0x63, 0x6f, 0x64, 0x65, 0x00, 0x00, 0x00]; // .code\0\0\0

        // NCCH
        public const string NCCHMagicNumber = "NCCH";

        // NCSD
        public const string NCSDMagicNumber = "NCSD";

        // RomFS
        public const string RomFSMagicNumber = "IVFC";
        public const uint RomFSSecondMagicNumber = 0x10000;

        // Setup Keys and IVs
        public static byte[] PlainCounter = [0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
        public static byte[] ExefsCounter = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
        public static byte[] RomfsCounter = [0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];

        public const int CXTExtendedDataHeaderLength = 0x800;

        // Z3DS

        public const string Z3DSMagicNumber = "Z3DS";
    }
}
