private static BdatTable[] GetBdatMembers(string bdatDir, string pattern) { string[] filenames = Directory.GetFiles(bdatDir, pattern, SearchOption.AllDirectories); byte[][] files = new byte[filenames.Length][]; var tables = new BdatTable[filenames.Length][]; for (int i = 0; i < filenames.Length; i++) { files[i] = File.ReadAllBytes(filenames[i]); tables[i] = new BdatFile(files[i], filenames[i]).Tables; } BdatTable[] flat = tables.SelectMany(x => x).ToArray(); return(flat); }
static void Main(string[] args) { var options = new Options(); Parser.Default.ParseArguments <Options>(args).WithParsed(opts => options = opts); var FS = new SwitchFS(options.SwitchFs); var romfs = FS.GetRomfs(Convert.ToUInt64(options.Title, 16)); var xc2fs = new ArchiveFileSystem(romfs); if (options.Output != null) { xc2fs.ExtractFiles(options.Output); } var common = xc2fs.Files.FirstOrDefault(x => x.FullPath.Contains("common.bdat")); var a = new BdatFile(xc2fs.OpenFile(common), Path.GetFileName(common.FullPath)); }