mirror of
https://github.com/crskycode/GARbro.git
synced 2024-12-23 19:34:15 +08:00
(PFS): recognize 'pf6' archives.
This commit is contained in:
parent
5097a98cb3
commit
96ebe2bd85
@ -52,13 +52,14 @@ namespace GameRes.Formats.Artemis
|
|||||||
int version = file.View.ReadByte (2) - '0';
|
int version = file.View.ReadByte (2) - '0';
|
||||||
switch (version)
|
switch (version)
|
||||||
{
|
{
|
||||||
case 8: return OpenPf8 (file);
|
case 6:
|
||||||
|
case 8: return OpenPf (file, version);
|
||||||
case 2: return OpenPf2 (file);
|
case 2: return OpenPf2 (file);
|
||||||
default: return null;
|
default: return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ArcFile OpenPf8 (ArcView file)
|
ArcFile OpenPf (ArcView file, int version)
|
||||||
{
|
{
|
||||||
uint index_size = file.View.ReadUInt32 (3);
|
uint index_size = file.View.ReadUInt32 (3);
|
||||||
int count = file.View.ReadInt32 (7);
|
int count = file.View.ReadInt32 (7);
|
||||||
@ -81,9 +82,13 @@ namespace GameRes.Formats.Artemis
|
|||||||
index_offset += 8;
|
index_offset += 8;
|
||||||
dir.Add (entry);
|
dir.Add (entry);
|
||||||
}
|
}
|
||||||
|
if (version != 8 && version != 9 && version != 4 && version != 5)
|
||||||
|
return new ArcFile (file, this, dir);
|
||||||
|
|
||||||
|
// key calculated for archive versions 4, 5, 8 and 9
|
||||||
using (var sha1 = SHA1.Create())
|
using (var sha1 = SHA1.Create())
|
||||||
{
|
{
|
||||||
var key = sha1.ComputeHash (index); // calculated for archive versions 4, 5, 8 and 9
|
var key = sha1.ComputeHash (index);
|
||||||
return new PfsArchive (file, this, dir, key);
|
return new PfsArchive (file, this, dir, key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user