mirror of
https://github.com/crskycode/GARbro.git
synced 2024-11-27 07:34:00 +08:00
(IflOpener.OpenEntry): decompress *.snc scripts.
This commit is contained in:
parent
b32ac64569
commit
e39dd18ff9
@ -32,7 +32,7 @@ using GameRes.Utility;
|
|||||||
namespace GameRes.Formats.Silky
|
namespace GameRes.Formats.Silky
|
||||||
{
|
{
|
||||||
[Export(typeof(ArchiveFormat))]
|
[Export(typeof(ArchiveFormat))]
|
||||||
public class IfsOpener : ArchiveFormat
|
public class IflOpener : ArchiveFormat
|
||||||
{
|
{
|
||||||
public override string Tag { get { return "IFL"; } }
|
public override string Tag { get { return "IFL"; } }
|
||||||
public override string Description { get { return "Silky's engine resource archive"; } }
|
public override string Description { get { return "Silky's engine resource archive"; } }
|
||||||
@ -64,6 +64,21 @@ namespace GameRes.Formats.Silky
|
|||||||
}
|
}
|
||||||
return new ArcFile (file, this, dir);
|
return new ArcFile (file, this, dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override Stream OpenEntry (ArcFile arc, Entry entry)
|
||||||
|
{
|
||||||
|
if (entry.Size <= 8
|
||||||
|
|| !entry.Name.EndsWith (".snc", StringComparison.InvariantCultureIgnoreCase)
|
||||||
|
|| !arc.File.View.AsciiEqual (entry.Offset, "CMP_"))
|
||||||
|
return arc.File.CreateStream (entry.Offset, entry.Size);
|
||||||
|
int unpacked_size = arc.File.View.ReadInt32 (entry.Offset+4);
|
||||||
|
using (var input = arc.File.CreateStream (entry.Offset+8, entry.Size-8))
|
||||||
|
using (var lzss = new LzssReader (input, (int)(entry.Size - 8), unpacked_size))
|
||||||
|
{
|
||||||
|
lzss.FrameFill = 0x20;
|
||||||
|
lzss.Unpack();
|
||||||
|
return new MemoryStream (lzss.Data);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user