(VnMaker): Add support of ZIP MP3 OGG PNG formats.

This commit is contained in:
Crsky
2025-01-10 02:23:28 +08:00
parent f63834c4bf
commit 47358d09c9
5 changed files with 270 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
using System.ComponentModel.Composition;
namespace GameRes.Formats.VnMaker
{
[Export(typeof(AudioFormat))]
public class AudioOGG : AudioFormat
{
public override string Tag { get { return "OGG/VnMaker Encrypted OGG Audio"; } }
public override string Description { get { return "VnMaker Encrypted OGG Audio"; } }
public override uint Signature { get { return 0; } }
public override bool CanWrite { get { return false; } }
public AudioOGG() : base()
{
Signatures = new uint[] { 0 };
Extensions = new[] { "ogg" };
}
public override SoundInput TryOpen (IBinaryStream file)
{
using (var input = DeobfuscateStream (file, GuessEncryptionKey (file)))
{
if (input.Signature != 0x5367674F)
throw new InvalidFormatException ();
return new OggInput (input.AsStream);
}
}
byte[] GuessEncryptionKey (IBinaryStream file)
{
return new byte[] { 0x0A, 0x2B, 0x36, 0x6F, 0x0B };
}
IBinaryStream DeobfuscateStream (IBinaryStream file, byte[] key)
{
var ogg = new ByteStringEncryptedStream (file.AsStream, key, true);
return new BinaryStream (ogg, file.Name);
}
}
}