public static void TestYazSimple(IExperimentFace face, List <string> filePath) { StringBuilder sb = new StringBuilder(); ORom rom = new ORom(filePath[0], ORom.Build.N0); RomFile rfile = rom.Files.GetFile(ORom.FileList.code); var dmarec_code = rfile.Record; BinaryReader compressed = new BinaryReader((MemoryStream)rom.Files.GetPhysicalFile(dmarec_code.VRom)); BinaryReader decompressed = new BinaryReader(rfile); byte[] decompressedbuffer = decompressed.ReadBytes(rfile.Record.VRom.Size); //var buffer = new MemoryStream(0x20_0000); var buffer = new byte[0]; Stopwatch stopwatch = Stopwatch.StartNew(); //int compressedSize = Yaz.Encode(decompressedbuffer, rfile.Record.VirtualAddress.Size, buffer); int compressedSize = Yaz.Encode(decompressedbuffer, rfile.Record.VRom.Size, out buffer); Yaz.GetEncodingData(buffer, compressedSize, out int metaSize); stopwatch.Stop(); sb.AppendLine($"Compression time: {stopwatch.Elapsed.Seconds}.{stopwatch.Elapsed.Milliseconds:D3}"); sb.AppendLine($"Compressed Size: {compressedSize:X6}, Meta Size {metaSize:X6}"); decompressed.Seek(0); //buffer.Position = 0; //compare compressed output if (compressedSize != dmarec_code.Rom.Size) { sb.AppendLine($"Compression size mismatch: Original {dmarec_code.Rom.Size:X6} || New {compressedSize:X6}"); } int mismatchMax = 8; for (int i = 0; i < dmarec_code.Rom.Size; i++) { byte a = compressed.ReadByte(); //byte b = (byte)buffer.ReadByte(); byte b = buffer[i]; if (a == b) { continue; } mismatchMax--; sb.AppendLine($"COMPRESS MISMATCH {i:X6}: {a:X2} {b:X2}"); if (mismatchMax <= 0) { break; } } compressed.Seek(0); //buffer.Position = 0; byte[] dbuffer = Yaz.Decode(new MemoryStream(buffer), compressedSize); decompressed.BaseStream.Position = 0; for (int i = 0; i < dbuffer.Length; i++) { if (dbuffer[i] != decompressed.ReadByte()) { sb.AppendLine($"File Size: {dbuffer.Length:X}, Compressed: {compressedSize:X}, Failed Match: {i:X}"); break; } } sb.AppendLine("Test Complete"); face.OutputText(sb.ToString()); }