Beispiel #1
0
        public async Task <ReferencedGarc> GetGarc(GarcReference gr, bool useLz = false, bool edited = false)
        {
            var path = this.GetGarcPath(gr, edited);
            var file = await GarcFile.FromFile(path, useLz);

            return(new ReferencedGarc(file, gr));
        }
Beispiel #2
0
        private static async Task AsyncMain()
        {
            string romPath = Path.GetFullPath(Settings.RomPath);

            GameConfig game = new GameConfig(GameVersion.ORAS);
            await game.Initialize(romPath, Language.English);

            for (int gIndex = 0; gIndex <= 298; gIndex++)
            {
                var            gRef = new GarcReference(gIndex, GarcNames.Unknown);
                ReferencedGarc garc;

                try
                {
                    garc = await game.GetGarc(gRef);

                    Debug.WriteLine($"Garc file {gRef.RomFsPath} has {garc.Garc.FileCount} files");
                }
                catch
                {
                    try
                    {
                        garc = await game.GetGarc(gRef, useLz : true);

                        Debug.WriteLine($"Garc file {gRef.RomFsPath} has {garc.Garc.FileCount} files and was compressed");
                    }
                    catch
                    {
                        // ignored
                    }
                }
            }
        }
        private static async Task Main()
        {
            string romPath = Path.GetFullPath(Settings.RomPath);

            GameConfig game = new GameConfig(GameVersion.XY);
            await game.Initialize(romPath, Language.English);

            if (Directory.Exists("Garc"))
            {
                Directory.Delete("Garc", true);
            }

            await Task.Delay(2000);

            Directory.CreateDirectory("Garc");

            await Task.Delay(2000);

            for (int gIndex = 0; gIndex <= 999; gIndex++)
            {
                var            gRef = new GarcReference(gIndex, GarcNames.Unknown);
                ReferencedGarc garc;

                try
                {
                    garc = await game.GetGarc(gRef);

                    WriteLine($"Garc file {gRef.RomFsPath} has {garc.Garc.FileCount} files");

                    await WriteGarc(garc, gRef);
                }
                catch (FileNotFoundException)
                {
                    WriteLine($"Max GARC: {gIndex - 1}");
                    break;
                }
                catch
                {
                    try
                    {
                        garc = await game.GetGarc(gRef, useLz : true);

                        WriteLine($"Garc file {gRef.RomFsPath} has {garc.Garc.FileCount} files and was compressed");

                        await WriteGarc(garc, gRef);
                    }
                    catch
                    {
                        // ignored
                    }
                }
            }
        }
Beispiel #4
0
        private string GetGarcPath(GarcReference garcReference, bool edited = false)
        {
            var path = this.RomFS;

            if (edited && this.IsOverridingOutPath)
            {
                var editedPath = Path.Combine(this.OutputPathOverride, "RomFS");

                if (File.Exists(Path.Combine(editedPath, garcReference.RomFsPath)))
                {
                    path = editedPath;
                }
            }

            return(Path.Combine(path, garcReference.RomFsPath));
        }
        private static async Task WriteGarc(ReferencedGarc garc, GarcReference gRef)
        {
            if (GarcsToSkip.Contains(gRef.RomFsPath))
            {
                return;
            }

            var garcData = await garc.Garc.Write();

            await File.WriteAllBytesAsync($"Garc\\{gRef.RomFsPath.Replace( '\\', '_' )}.bin", garcData);

            for (var file = 0; file < garc.Garc.FileCount; file++)
            {
                var fileData = await garc.GetFile(file);

                await File.WriteAllBytesAsync($"Garc\\{gRef.RomFsPath.Replace( '\\', '_' )}.{file}.bin", fileData);
            }
        }
 public ReferencedGarc(GarcFile garc, GarcReference reference)
 {
     this.Garc      = garc;
     this.Reference = reference;
 }