public NDS(Stream input) { _stream = input; using (BinaryReaderX br = new BinaryReaderX(input, true)) { //Header header = new RomHeader(br.BaseStream); //Banner banner = new Banner(br.BaseStream, header.bannerOffset); //FAT fat = NDSSupport.ReadFAT(br.BaseStream, header.FAToffset, header.FATsize); //FNT fnt = NDSSupport.ReadFNT(br.BaseStream, header.fileNameTableOffset, header.fileNameTableSize, fat); //System files fnt.folders.Add(NDSSupport.AddSystemFiles(br.BaseStream, fat, fat.Length, fnt.id + 0xF000, header)); //FileData FetchFiles(br.BaseStream, fnt); } }
public static sFolder AddSystemFiles(Stream input, sFAT[] fatTable, int lastFileID, int lastFolderID, RomHeader header) { sFolder system = new sFolder(); system.name = "fw_sys/"; system.id = (ushort)lastFolderID; lastFolderID++; system.files = new List <sFile>(); system.files.AddRange(ReadBasicOverlays(input, header.ARM9overlayOffset, header.ARM9overlaySize, true, fatTable)); system.files.AddRange(ReadBasicOverlays(input, header.ARM7overlayOffset, header.ARM7overlaySize, false, fatTable)); sFile fnt = new sFile(); fnt.name = "fileNameTable.bin"; fnt.offset = header.fileNameTableOffset; fnt.size = header.fileNameTableSize; fnt.id = (ushort)lastFolderID; lastFolderID++; system.files.Add(fnt); sFile fat = new sFile(); fat.name = "fileAccessTable.bin"; fat.offset = header.FAToffset; fat.size = header.FATsize; fat.id = (ushort)lastFolderID; lastFolderID++; system.files.Add(fat); sFile banner = new sFile(); banner.name = "banner.bin"; banner.offset = header.bannerOffset; banner.size = 0x840; banner.id = (ushort)lastFolderID; lastFolderID++; system.files.Add(banner); sFile arm9 = new sFile(); arm9.name = "arm9.bin"; arm9.offset = header.ARM9romOffset; arm9.size = header.ARM9size; arm9.id = (ushort)lastFolderID; lastFolderID++; system.files.Add(arm9); sFile arm7 = new sFile(); arm7.name = "arm7.bin"; arm7.offset = header.ARM7romOffset; arm7.size = header.ARM7size; arm7.id = (ushort)lastFolderID; lastFolderID++; system.files.Add(arm7); if (header.ARM9overlaySize != 0) { sFile y9 = new sFile(); y9.name = "y9.bin"; y9.offset = header.ARM9overlayOffset; y9.size = header.ARM9overlaySize; y9.id = (ushort)lastFolderID; lastFolderID++; system.files.Add(y9); } if (header.ARM7overlaySize != 0) { sFile y7 = new sFile(); y7.name = "y7.bin"; y7.offset = header.ARM7overlayOffset; y7.size = header.ARM7overlaySize; y7.id = (ushort)lastFolderID; lastFolderID++; system.files.Add(y7); } return(system); }