From e4580ea7e926bd1cdaab2b7c83e84d2cfdd3863e Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Thu, 18 Jun 2020 15:29:59 -0700 Subject: [PATCH] Fix nest dumping, improve ahtb dumping --- .../Gen8/FlatNest/EncounterNest8Archive.cs | 4 ++-- .../Gen8/FlatWild/EncounterTableUtil.cs | 10 ++++++---- pkNX.WinForms/Dumping/GameDumperSWSH.cs | 19 +++++++++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/pkNX.Structures/Encounter/Gen8/FlatNest/EncounterNest8Archive.cs b/pkNX.Structures/Encounter/Gen8/FlatNest/EncounterNest8Archive.cs index 13169d76..8c29e9eb 100644 --- a/pkNX.Structures/Encounter/Gen8/FlatNest/EncounterNest8Archive.cs +++ b/pkNX.Structures/Encounter/Gen8/FlatNest/EncounterNest8Archive.cs @@ -53,14 +53,14 @@ IEnumerable Summary(EncounterNest8 e) int max = e.MaxRank; int curMin = -1; - for (int i = min; i < max; i++) + for (int i = min; i >= 0 && i <= max; i++) { if (e.Probabilities[i] != 0) { if (curMin == -1) curMin = i; - if (i == max - 1) + if (i == max) yield return $" new EncounterStatic8N(Nest{index:00},{curMin},{i},{flawless}) {{ Species = {e.Species:000}, Ability = {ability}{gender}{altform}{giga} }},{comment}"; } else if (curMin != -1) diff --git a/pkNX.Structures/Encounter/Gen8/FlatWild/EncounterTableUtil.cs b/pkNX.Structures/Encounter/Gen8/FlatWild/EncounterTableUtil.cs index eba56d7b..5e3bdda6 100644 --- a/pkNX.Structures/Encounter/Gen8/FlatWild/EncounterTableUtil.cs +++ b/pkNX.Structures/Encounter/Gen8/FlatWild/EncounterTableUtil.cs @@ -9,14 +9,16 @@ public static class EncounterTable8Util { public static byte[][] GetBytes(IReadOnlyDictionary zone_loc, EncounterArchive8 t) { - var result = new byte[t.EncounterTables.Length][]; - for (int i = 0; i < result.Length; i++) + var result = new List(); + for (int i = 0; i < t.EncounterTables.Length; i++) { var zone = t.EncounterTables[i]; - result[i] = GetZoneBytes(zone, zone_loc); + var entry = GetZoneBytes(zone, zone_loc); + if (entry.Length != 0) + result.Add(entry); } - return result; + return result.ToArray(); } private static byte[] GetZoneBytes(EncounterTable8 zone, IReadOnlyDictionary zoneLoc) diff --git a/pkNX.WinForms/Dumping/GameDumperSWSH.cs b/pkNX.WinForms/Dumping/GameDumperSWSH.cs index b58f74db..da661eca 100644 --- a/pkNX.WinForms/Dumping/GameDumperSWSH.cs +++ b/pkNX.WinForms/Dumping/GameDumperSWSH.cs @@ -114,6 +114,25 @@ public void DumpAHTB() } } + var paks = Directory.EnumerateFiles(ROM.PathRomFS, "*", SearchOption.AllDirectories) + .Where(z => Path.GetExtension(z) == ".gfpak"); + foreach (var f in paks) + { + var pak = new GFPack(f); + foreach (var bytes in pak.DecompressedFiles) + { + if (AHTB.IsAHTB(bytes)) + { + var tbl = new AHTB(bytes); + var summaries = tbl.Summary; + foreach (var t in tbl.ShortSummary) + result.Add(t); + list.Add(Path.GetFileName(f)); + list.AddRange(summaries); + } + } + } + var outname = GetPath("ahtb.txt"); var outname2 = GetPath("ahtblist.txt"); File.WriteAllLines(outname, result);