diff --git a/ArcFormats/Cri/ImageSPC.cs b/ArcFormats/Cri/ImageSPC.cs index 36c74963..bd5da105 100644 --- a/ArcFormats/Cri/ImageSPC.cs +++ b/ArcFormats/Cri/ImageSPC.cs @@ -47,6 +47,7 @@ namespace GameRes.Formats.Cri uint unpacked_size = stream.Signature; if (unpacked_size <= 0x20 || unpacked_size > 0x5000000) // ~83MB return null; + stream.Position = 4; using (var lzss = new LzssStream (stream.AsStream, LzssMode.Decompress, true)) using (var input = new SeekableStream (lzss)) using (var xtx = new BinaryStream (input, stream.Name)) diff --git a/ArcFormats/Ikura/ImageDRG.cs b/ArcFormats/Ikura/ImageDRG.cs index b33a8868..9a99292f 100644 --- a/ArcFormats/Ikura/ImageDRG.cs +++ b/ArcFormats/Ikura/ImageDRG.cs @@ -69,6 +69,7 @@ namespace GameRes.Formats.Ikura case 0x48474948: bpp = 16; break; default: return null; } + stream.Position = 4; uint width = stream.ReadUInt16(); uint height = stream.ReadUInt16(); return new ImageMetaData { diff --git a/ArcFormats/ImageEGN.cs b/ArcFormats/ImageEGN.cs index 9079493d..84d2acc0 100644 --- a/ArcFormats/ImageEGN.cs +++ b/ArcFormats/ImageEGN.cs @@ -51,7 +51,7 @@ namespace GameRes.Formats.Unknown public override ImageMetaData ReadMetaData (IBinaryStream stream) { - int signature = (int)~stream.Signature; + int signature = ~stream.ReadInt32(); int mode = (signature & 0x70) >> 4; // v6 if (0 != (mode & 4)) return null; diff --git a/ArcFormats/Ivory/ImageMOE.cs b/ArcFormats/Ivory/ImageMOE.cs index e403563b..e432224e 100644 --- a/ArcFormats/Ivory/ImageMOE.cs +++ b/ArcFormats/Ivory/ImageMOE.cs @@ -44,6 +44,7 @@ namespace GameRes.Formats.Ivory uint height = wh >> 16; if (0 == width || width > 800 || 0 == height || height > 600) return null; + stream.Position = 4; if (!IsValidInput (stream.AsStream, width, height)) return null; return new ImageMetaData { Width = width, Height = height, BPP = 24 };