diff --git a/ArcFormats/Maika/ArcMIK01.cs b/ArcFormats/Maika/ArcMIK01.cs index 7fa8abe2..6d0bb02a 100644 --- a/ArcFormats/Maika/ArcMIK01.cs +++ b/ArcFormats/Maika/ArcMIK01.cs @@ -39,6 +39,11 @@ namespace GameRes.Formats.Maika public override bool IsHierarchic { get { return false; } } public override bool CanWrite { get { return false; } } + public MikOpener () + { + Signatures = new uint[] { 0x304B494D, 0x30475355 }; // 'MIK01', 'USG01' + } + public override ArcFile TryOpen (ArcView file) { if (!file.View.AsciiEqual (4, "1\x1A\0")) @@ -61,7 +66,7 @@ namespace GameRes.Formats.Maika offset += entry.Size; index_offset += 0x10; } - return new ArcFile (file, this, dir); + return GetArchive (file, dir); } } } diff --git a/ArcFormats/Maika/ArcMK2.cs b/ArcFormats/Maika/ArcMK2.cs index 5752941a..3fc390f2 100644 --- a/ArcFormats/Maika/ArcMK2.cs +++ b/ArcFormats/Maika/ArcMK2.cs @@ -33,7 +33,7 @@ using GameRes.Utility; namespace GameRes.Formats.Maika { [Serializable] - internal class ScrambleScheme + public class ScrambleScheme { public uint ScrambledSize; public Tuple[] ScrambleMap; @@ -75,7 +75,6 @@ namespace GameRes.Formats.Maika if (!IsSaneCount (count)) return null; - string arc_id = file.View.ReadString (0, 5); uint base_offset = file.View.ReadUInt16 (8); uint index_offset = file.View.ReadUInt32 (0xE); if (index_offset >= file.MaxOffset) @@ -114,8 +113,14 @@ namespace GameRes.Formats.Maika break; current_offset += 6; } + return GetArchive (file, dir); + } + + internal ArcFile GetArchive (ArcView file, List dir) + { if (0 == dir.Count) return null; + string arc_id = file.View.ReadString (0, 5); ScrambleScheme scheme; if (!KnownSchemes.TryGetValue (arc_id, out scheme)) scheme = DefaultScheme; @@ -172,14 +177,17 @@ namespace GameRes.Formats.Maika } }; + static readonly ScrambleScheme ArScheme = new ScrambleScheme { + ScrambledSize = 15, + ScrambleMap = new Tuple[] { + new Tuple (7, 13), + new Tuple (9, 14) + } + }; + Dictionary KnownSchemes = new Dictionary { - { "AR2.0", new ScrambleScheme { - ScrambledSize = 15, - ScrambleMap = new Tuple[] { - new Tuple (7, 13), - new Tuple (9, 14) - } - } } + { "AR2.0", ArScheme }, + { "USG01", ArScheme }, }; }