示例#1
0
        private static int loadSubFiles(BinaryReader reader, Nds.NdsFat_s FAT, List <Common.FileInfo_s> fileInfoList, ref MainDir_s actualMainDir, ref SubDir_s actualSubDir)
        {
            int type;

            Common.FileInfo_s actualFileInfo = new Common.FileInfo_s();
            if (actualSubDir.Files == null)
            {
                actualSubDir.Files = new List <Common.FileInfo_s>();
            }
            type = actualSubDir.Type;
            actualFileInfo.Name   = new string(Encoding.GetEncoding("shift_jis").GetChars(reader.ReadBytes(type)));
            actualFileInfo.ID     = actualMainDir.FFile_ID;
            actualFileInfo.Offset = FAT.getFileStartAt((int)actualFileInfo.ID);
            actualFileInfo.Size   = FAT.getFileEndAt((int)actualFileInfo.ID) - actualFileInfo.Offset;
            long num5 = reader.BaseStream.Position;

            reader.BaseStream.Seek((long)actualFileInfo.Offset, SeekOrigin.Begin);
            actualFileInfo.FileData = new ClosableMemoryStream();
            Utils.loadStream(reader, actualFileInfo.Size, actualFileInfo.FileData);
            reader.BaseStream.Seek((long)actualFileInfo.Offset, SeekOrigin.Begin);
            FAT.setFileStreamAt((int)actualFileInfo.ID, actualFileInfo.FileData);
            reader.BaseStream.Seek(num5, SeekOrigin.Begin);
            actualMainDir.FFile_ID = (ushort)(actualMainDir.FFile_ID + 1);
            actualSubDir.Files.Add(actualFileInfo);
            fileInfoList.Add(actualFileInfo);
            return(type);
        }
示例#2
0
 public void readOverlaysData(BinaryReader reader, uint offset, int size, Nds.NdsFat_s FAT)
 {
     reader.BaseStream.Seek((long)offset, SeekOrigin.Begin);
     for (int i = 0; i < (size / 0x20); i++)
     {
         Overlay_s actualOverlay = Overlay[i];
         actualOverlay = readOverlayData(reader, FAT, i, actualOverlay);
         Overlay[i]    = actualOverlay;
     }
 }
示例#3
0
        private static int createMainDirList(BinaryReader reader, uint offset, Nds.NdsFat_s FAT, int index, List <Common.FileInfo_s> fileInfoList)
        {
            MainDir_s actualMainDir     = loadActualMainDir(reader);
            long      nextMainDirOffset = reader.BaseStream.Position;

            actualMainDir = loadActualSubDir(reader, offset, FAT, ref index, fileInfoList, actualMainDir);
            MainDir.Add(actualMainDir);
            reader.BaseStream.Position = nextMainDirOffset;
            return(index);
        }
示例#4
0
        private static Overlay_s readOverlayData(BinaryReader reader, Nds.NdsFat_s FAT, int i, Overlay_s actualOverlay)
        {
            actualOverlay.Over     = new ClosableMemoryStream();
            actualOverlay.Ov_Start = FAT.getFileStartAt((int)actualOverlay.fileID);
            actualOverlay.Ov_End   = FAT.getFileEndAt((int)actualOverlay.fileID);

            reader.BaseStream.Seek((long)actualOverlay.Ov_Start, SeekOrigin.Begin);
            Utils.loadStream(reader, actualOverlay.Ov_End - actualOverlay.Ov_Start, actualOverlay.Over);
            FAT.setFileStreamAt(i, actualOverlay.Over);
            return(actualOverlay);
        }
示例#5
0
        private static void loadSubElements(BinaryReader reader, Nds.NdsFat_s FAT, ref int index, List <Common.FileInfo_s> fileInfoList, ref MainDir_s actualMainDir, ref SubDir_s actualSubDir)
        {
            int type;

            if (actualSubDir.Type < 0x80)
            {
                type = loadSubFiles(reader, FAT, fileInfoList, ref actualMainDir, ref actualSubDir);
            }
            if (actualSubDir.Type > 0x80)
            {
                type = loadSubFolders(reader, ref actualSubDir);
            }
            updateTypes(reader, ref index, ref actualSubDir);
        }
示例#6
0
        private static MainDir_s loadActualSubDir(BinaryReader reader, uint offset, Nds.NdsFat_s FAT, ref int index, List <Common.FileInfo_s> fileInfoList, MainDir_s actualMainDir)
        {
            reader.BaseStream.Position = offset + actualMainDir.Start;
            var actualSubDir = actualMainDir.SubDir;

            actualSubDir = initActualSubDir(reader, index, actualMainDir, actualSubDir);

            while (actualSubDir.Type != 0)
            {
                loadSubElements(reader, FAT, ref index, fileInfoList, ref actualMainDir, ref actualSubDir);
            }
            actualMainDir.SubDir = actualSubDir;
            return(actualMainDir);
        }
示例#7
0
        public static Common.Folder_s readFnt(BinaryReader reader, uint size, uint offset, Nds.NdsFat_s FAT)
        {
            loadFntDataBinary(reader, size, offset);
            loadSubDirOff(reader, offset);
            MainDir = new List <MainDir_s>();
            int index = 0;
            List <Common.FileInfo_s> fileInfoList = new List <Common.FileInfo_s>();

            while (reader.BaseStream.Position < (offset + SubDir_Off))
            {
                index = createMainDirList(reader, offset, FAT, index, fileInfoList);
            }
            Common.Folder_s root = makeRoot();
            return(root);
        }