public static Decompress ( Stream instream, Stream outstream ) : long | ||
instream | Stream | |
outstream | Stream | |
return | long |
private void openButton_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Binary files (*.bin)|*.bin|All files (*.*)|*.*"; if (openFileDialog.ShowDialog() != DialogResult.OK) return; long length = (new FileInfo(openFileDialog.FileName)).Length; if (length > saveLength_EUR) { MessageBox.Show("Invalid save file", "Error"); return; } // Open a decompressed save file, for testing purpose if (length == saveLength_EUR) { Header = null; SaveData = File.ReadAllBytes(openFileDialog.FileName); enableButtons(); return; } Header = new byte[headerLength_EUR]; byte[] compressed = new byte[length - headerLength_EUR]; using (FileStream fs = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read)) { using (BinaryReader br = new BinaryReader(fs)) { br.BaseStream.Seek(headerLength_EUR, SeekOrigin.Begin); byte isLZ11 = br.ReadByte(); if (isLZ11 != 0x11) { MessageBox.Show("Invalid save file", "Error"); return; } br.BaseStream.Seek(0x00, SeekOrigin.Begin); br.Read(Header, 0x0, headerLength_EUR); br.Read(compressed, 0x0, (int)length - headerLength_EUR); } } // Decompress byte[] decompressed = null; LZ11 lz11 = new LZ11(); using (MemoryStream inStream = new MemoryStream(compressed)) { using (MemoryStream outStream = new MemoryStream()) { lz11.Decompress(inStream, compressed.Length, outStream); if (outStream != null) decompressed = outStream.ToArray(); else { MessageBox.Show("Invalid save file", "Error"); return; } } } // Check file validity and save loading if (decompressed.Length != saveLength_EUR) { labelRegion.Text = "USA"; MessageBox.Show("Invalid save file", "Error"); return; } SaveData = decompressed; labelRegion.Text = "EUR"; enableButtons(); }
public void openButton_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Binary files (*.bin)|*.bin|All files (*.*)|*.*"; if (openFileDialog.ShowDialog() != DialogResult.OK) return; // Open a decompressed save file, for testing purpose if (new FileInfo(openFileDialog.FileName).Length == 0x51FB8) { Header = null; SaveData = File.ReadAllBytes(openFileDialog.FileName); enableButtons(); return; } byte[] rawSave = File.ReadAllBytes(openFileDialog.FileName); if (rawSave[0x58] != 0x11) { MessageBox.Show("Invalid save file", "Error"); return; } byte[] compressed = new byte[rawSave.Length - 0x58]; Array.Copy(rawSave, 0x58, compressed, 0, rawSave.Length - 0x58); // Decompress byte[] decompressed = null; LZ11 lz11 = new LZ11(); using (MemoryStream inStream = new MemoryStream(compressed)) { using (MemoryStream outStream = new MemoryStream()) { lz11.Decompress(inStream, compressed.Length, outStream); if (outStream != null) decompressed = outStream.ToArray(); else { MessageBox.Show("Invalid save file", "Decompress Error"); return; } } //only for testing /* using (FileStream fs = new FileStream("dec2.bin", FileMode.Create, FileAccess.Write)) { using (BinaryWriter bw = new BinaryWriter(fs)) { bw.Write(decompressed); } } */ } // Check file validity and save loading if (decompressed.Length != saveLength_EUR) { MessageBox.Show("Invalid save file", "Error"); return; } // Check decompressed save file size /* string filesize = Convert.ToString(decompressed.Length); MessageBox.Show(filesize, "bytesize"); */ Header = new byte[0x58]; Array.Copy(rawSave, 0, Header, 0, 0x58); SaveData = decompressed; enableButtons(); }