private void ReadEntry(uint pointer) { this._vcms.Seek((long)((ulong)pointer), SeekOrigin.Begin); this._voiceEntry.FileHash = this._pkgFile.Filehash; this._voiceEntry.EntryHash = Helpers.ReadUInt(this._vcms); this._vcms.Seek(0x14L, SeekOrigin.Current); this._voiceEntry.AudioCollectionFileHash = Helpers.ReadUInt(this._vcms); this._vcms.Seek(0xc, SeekOrigin.Current); this._voiceEntry.TextRefFileHash = Helpers.ReadUInt(this._vcms); this._voiceEntry.TextHash = Helpers.ReadUInt(this._vcms); this._voiceEntry.Length = Helpers.ReadFloat(this._vcms); this._vcms.Seek(4, SeekOrigin.Current); this._voiceEntry.AudioCollectionFileHash2 = Helpers.ReadUInt(this._vcms); this._vcms.Seek(0xc, SeekOrigin.Current); this._voiceEntry.TextRefFileHash2 = Helpers.ReadUInt(this._vcms); this._voiceEntry.TextHash2 = Helpers.ReadUInt(this._vcms); this._voiceEntry.Length2 = Helpers.ReadFloat(this._vcms); this._vcms.Seek(4, SeekOrigin.Current); Helpers.InvertUint32(Helpers.ReadUInt(this._vcms)); this._voiceEntry.NarratorHash = Helpers.ReadUInt(this._vcms); if (this._voiceEntry.TextRefFileHash != 0xFFFFFFFFU && this._voiceEntry.TextHash != 0xC59D1C81U) { this._voiceEntry.Text = this.GetText(this._voiceEntry.TextRefFileHash, this._voiceEntry.TextHash); this._voiceEntry.Text2 = this.GetText(this._voiceEntry.TextRefFileHash2, this._voiceEntry.TextHash2); this._voiceEntry.Narrator = this.GetNarrator(this._voiceEntry.NarratorHash); this.VoiceEntries.Add(this._voiceEntry); VoiceEntryLtd item = default(VoiceEntryLtd); item.EntryHash = this._voiceEntry.EntryHash; item.AudioCollectionFileHash = this._voiceEntry.AudioCollectionFileHash; item.Length = this._voiceEntry.Length; item.Text = this._voiceEntry.Text; item.Narrator = this._voiceEntry.Narrator; this.VoiceEntriesLtd.Add(item); } }
private void TreeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Node.Tag != null) { VoiceEntryLtd voiceEntryLtd = (VoiceEntryLtd)e.Node.Tag; string logText = voiceEntryLtd.Narrator + ": " + voiceEntryLtd.Text; float length = voiceEntryLtd.Length; uint entryHash = voiceEntryLtd.EntryHash; string text = null; this.UpdtEventLogger("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------"); this.UpdtEventLogger(logText); this.UpdtEventLogger("Entryhash: " + entryHash.ToString("D10")); if (voiceEntryLtd.AudioCollectionFileHash != 0xFFFFFFFFU) { text = string.Concat(new string[] { Form1.StdOutputDir, "/", entryHash.ToString(""), "_", Calculation.Hash2File(voiceEntryLtd.AudioCollectionFileHash).Filename.Replace(".bin", ".ogg") }); this.UpdtEventLogger(string.Concat(new string[] { "Audio: ", Path.GetFileName(text), " (", length.ToString("N2"), " s)" })); } this.DisposeWave(); if (voiceEntryLtd.AudioCollectionFileHash != 0xFFFFFFFFU) { PkgFile pkgFile = new PkgFile(voiceEntryLtd.AudioCollectionFileHash); MemoryStream memoryStream = new MemoryStream(new PkgExtract().ToBuffer(pkgFile)); memoryStream.Seek(0x28L, SeekOrigin.Begin); uint num = (uint)memoryStream.Position + Helpers.ReadUInt(memoryStream) + 0x10U; memoryStream.Seek((long)((ulong)num), SeekOrigin.Begin); uint filehashIn = Helpers.ReadUInt(memoryStream); memoryStream.Close(); PkgFile pkgFile2 = new PkgFile(filehashIn); MemoryStream memoryStream2 = new MemoryStream(new PkgExtract().ToBuffer(pkgFile2)); if (Helpers.ReadUInt(memoryStream2) != 0x46464952U) { this.UpdtEventLogger("No Audiofile for selected Transcript."); return; } memoryStream2.Seek(0L, SeekOrigin.Begin); MemoryStream memoryStream3 = Ww2Ogg.ww2ogg(memoryStream2, new MemoryStream(Resources.CodeBook)); memoryStream2.Close(); MemoryStream memoryStream4 = new MemoryStream(memoryStream3.ToArray()); MemoryStream revorbedStream = new MemoryStream(); GinsorAudioTool2Plus.Revorb.revorb(memoryStream4, revorbedStream); revorbedStream.Seek(0, SeekOrigin.Begin); this._waveStream = new VorbisWaveReader(revorbedStream); this._wavePlayer = new DirectSoundOut(); this._wavePlayer.Init(this._waveStream); this._wavePlayer.Play(); if (this.cb_saveAudio.Checked) { Helpers.FileExistsDelete(text); Helpers.DirNotExistCreate(Path.GetDirectoryName(text)); File.WriteAllBytes(text, revorbedStream.ToArray()); } } else { this.UpdtEventLogger("No Audiofile for selected Transcript."); } } }