private void SynthsComboBox_SelectedIndexChanged(object sender, EventArgs e) { Dat10Synth synth = (Dat10Synth)SynthsComboBox.SelectedItem; if (synth == null) { return; } loadingSynth = true; SynthTextBox.Text = Dat10Synth.Disassemble(synth.Bytecode, synth.Constants, synth.Variables, false).Disassembly; SynthTextBox.ClearUndo(); SynthAssemblySyntaxHighlight(SynthTextBox.Range); SynthVariablesTextBox.Clear(); SynthVariablesTextBox.Text = string.Join(Environment.NewLine, synth.Variables.Select(v => $"{RelXml.HashString(v.Name)} {FloatUtil.ToString(v.Value)}")); SynthOutputsTextBox.Clear(); SynthOutputsTextBox.Text = string.Join(" ", synth.OutputsIndices.Take(synth.OutputsCount).Select(bufferIdx => $"B{bufferIdx}")); currentSynth = synth; loadingSynth = false; }
public void LoadRel(RelFile rel) { fileName = rel?.Name; if (string.IsNullOrEmpty(fileName)) { fileName = rel?.RpfFileEntry?.Name; } UpdateFormTitle(); RelPropertyGrid.SelectedObject = rel; CurrentFile = rel; rpfFileEntry = rel?.RpfFileEntry; Xml = RelXml.GetXml(rel); metaFormat = MetaFormat.AudioRel; StringBuilder sb = new StringBuilder(); if (rel != null) { if (rel.NameTable != null) { sb.AppendLine("NameTable - " + rel.NameTable.Length.ToString() + " entries"); foreach (var name in rel.NameTable) { sb.AppendLine(name); } sb.AppendLine(); } if (rel.IndexStrings != null) { sb.AppendLine("IndexStrings - " + rel.IndexStrings.Length.ToString() + " entries"); foreach (var rstr in rel.IndexStrings) { sb.AppendLine(rstr.Name); } sb.AppendLine(); } if (rel.IndexHashes != null) { sb.AppendLine("IndexHashes - " + rel.IndexHashes.Length.ToString() + " entries"); foreach (var rhash in rel.IndexHashes) { uint h = rhash.Name; var jstr = JenkIndex.TryGetString(h); if (!string.IsNullOrEmpty(jstr)) { sb.AppendLine(jstr); } else { sb.AppendLine("0x" + h.ToString("X").PadLeft(8, '0')); } } sb.AppendLine(); } } MainTextBox.Text = sb.ToString(); SynthsComboBox.Items.Clear(); SynthTextBox.Language = Language.Custom; SynthTextBox.Text = ""; SynthTextBox.ClearUndo(); if (rel.RelType == RelDatFileType.Dat10ModularSynth) { foreach (var relData in rel.RelDatasSorted) { if ((Dat10RelType)relData.TypeID == Dat10RelType.Synth) { SynthsComboBox.Items.Add(relData); } } } else { MainTabControl.TabPages.Remove(SynthsTabPage); } }