Exemple #1
0
        public unsafe NintendoExtendedHeader GetExtendedHeader()
        {
            PackagedContentMetaReader *reader = this.m_Reader;
            ContentMetaAccessorBase\u003Cnn\u003A\u003Ancm\u003A\u003APackagedContentMetaHeader\u002Cnn\u003A\u003Ancm\u003A\u003APackagedContentInfo\u003E *packagedContentInfoPtr = (ContentMetaAccessorBase\u003Cnn\u003A\u003Ancm\u003A\u003APackagedContentMetaHeader\u002Cnn\u003A\u003Ancm\u003A\u003APackagedContentInfo\u003E *)reader;

            if (*(byte *)packagedContentInfoPtr == (byte)0)
            {
                \u003CModule\u003E.abort();
            }
            switch (*(byte *)(*(int *)((IntPtr)packagedContentInfoPtr + 4) + 12))
            {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                GC.KeepAlive((object)this);
                return((NintendoExtendedHeader)null);

            case 128:
                ApplicationMetaExtendedHeader *   metaExtendedHeaderPtr1    = (ApplicationMetaExtendedHeader *)(*(int *)((IntPtr)reader + 4) + 32);
                NintendoApplicationExtendedHeader applicationExtendedHeader = new NintendoApplicationExtendedHeader((ulong)*(long *)metaExtendedHeaderPtr1, (uint)*(int *)((IntPtr)metaExtendedHeaderPtr1 + 8));
                GC.KeepAlive((object)this);
                return((NintendoExtendedHeader)applicationExtendedHeader);

            case 129:
                PatchMetaExtendedHeader *   metaExtendedHeaderPtr2 = (PatchMetaExtendedHeader *)(*(int *)((IntPtr)reader + 4) + 32);
                NintendoPatchExtendedHeader patchExtendedHeader    = new NintendoPatchExtendedHeader((ulong)*(long *)metaExtendedHeaderPtr2, (uint)*(int *)((IntPtr)metaExtendedHeaderPtr2 + 8));
                GC.KeepAlive((object)this);
                return((NintendoExtendedHeader)patchExtendedHeader);

            case 130:
                AddOnContentMetaExtendedHeader *   metaExtendedHeaderPtr3 = (AddOnContentMetaExtendedHeader *)(*(int *)((IntPtr)reader + 4) + 32);
                NintendoAddOnContentExtendedHeader contentExtendedHeader  = new NintendoAddOnContentExtendedHeader((ulong)*(long *)metaExtendedHeaderPtr3, (uint)*(int *)((IntPtr)metaExtendedHeaderPtr3 + 8), (string)null);
                GC.KeepAlive((object)this);
                return((NintendoExtendedHeader)contentExtendedHeader);

            default:
                throw new ArgumentException(string.Format("Unknown content meta type."));
            }
        }
        public static unsafe NintendoContentMeta CreateApplicationMeta(ulong id, uint version, byte attributes, uint requiredDownloadSystemVersion, NintendoApplicationExtendedHeader appExHeader, List <NintendoContentInfo> contentInfoList, List <NintendoContentMetaInfo> contentMetaInfoList, byte[] digest)
        {
            NintendoContentMeta           nintendoContentMeta = new NintendoContentMeta((ContentMetaType)128, id, version, attributes, requiredDownloadSystemVersion, contentInfoList, contentMetaInfoList, digest);
            ApplicationMetaExtendedHeader metaExtendedHeader;

            // ISSUE: initblk instruction
            __memset(ref metaExtendedHeader, 0, 16);