implemented CPZ6 archives.

This commit is contained in:
morkt
2016-08-29 05:48:56 +04:00
parent 14f88049fc
commit f990fbb55e
3 changed files with 97 additions and 45 deletions

View File

@@ -27,7 +27,7 @@ using GameRes.Utility;
namespace GameRes.Formats.Cmvs
{
public enum Md5Variant { A, B }
public enum Md5Variant { A, B, Chrono }
public abstract class MD5 : Cryptography.MD5Base
{
@@ -38,10 +38,13 @@ namespace GameRes.Formats.Cmvs
static public MD5 Create (Md5Variant variant)
{
if (Md5Variant.A == variant)
return new Md5VariantA();
else
return new Md5VariantB();
switch (variant)
{
case Md5Variant.A: return new Md5VariantA();
case Md5Variant.B: return new Md5VariantB();
case Md5Variant.Chrono: return new Md5Chrono();
default: throw new System.ArgumentException ("Unknown MD5 variant", "variant");
}
}
protected abstract void InitState ();
@@ -79,6 +82,17 @@ namespace GameRes.Formats.Cmvs
}
}
public class Md5Chrono : Md5VariantA
{
protected override void SetResult (uint[] data)
{
data[0] = m_state[2] ^ 0x45A76C2F;
data[1] = m_state[1] - 0x5BA17FCB;
data[2] = m_state[0] ^ 0x79ABE8AD;
data[3] = m_state[3] - 0x1C08561B;
}
}
public class Md5VariantB : MD5
{
protected override void InitState ()