private void FamiTone2MusicExport(string filename, bool famiStudio) { var kernel = famiStudio ? FamiToneKernel.FamiStudio : FamiToneKernel.FamiTone2; var engineName = famiStudio ? "famistudio" : "famitone2"; var formatString = ParseOption($"{engineName}-asm-format", "nesasm"); var format = AssemblyFormat.NESASM; switch (formatString) { case "ca65": format = AssemblyFormat.CA65; break; case "asm6": format = AssemblyFormat.ASM6; break; } var extension = format == AssemblyFormat.CA65 ? ".s" : ".asm"; var seperate = HasOption($"{engineName}-asm-seperate-files"); var generateInclude = HasOption($"{engineName}-generate-list"); if (!seperate && !ValidateExtension(filename, extension)) { return; } var exportSongIds = GetExportSongIds(); if (exportSongIds != null) { if (seperate) { var songNamePattern = ParseOption($"{engineName}-asm-seperate-song-pattern", "{project}_{song}"); var dpcmNamePattern = ParseOption($"{engineName}-asm-seperate-dmc-pattern", "{project}"); foreach (var songId in exportSongIds) { var song = project.GetSong(songId); var formattedSongName = songNamePattern.Replace("{project}", project.Name).Replace("{song}", song.Name); var formattedDpcmName = dpcmNamePattern.Replace("{project}", project.Name).Replace("{song}", song.Name); var songFilename = Path.Combine(filename, Utils.MakeNiceAsmName(formattedSongName) + extension); var dpcmFilename = Path.Combine(filename, Utils.MakeNiceAsmName(formattedDpcmName) + ".dmc"); var includeFilename = generateInclude ? Path.ChangeExtension(songFilename, null) + "_songlist.inc" : null; Log.LogMessage(LogSeverity.Info, $"Exporting song '{song.Name}' as separate assembly files."); FamitoneMusicFile f = new FamitoneMusicFile(kernel, true); f.Save(project, new int[] { songId }, format, true, songFilename, dpcmFilename, includeFilename, MachineType.Dual); } } else { var includeFilename = generateInclude ? Path.ChangeExtension(filename, null) + "_songlist.inc" : null; Log.LogMessage(LogSeverity.Info, $"Exporting all songs to a single assembly file."); FamitoneMusicFile f = new FamitoneMusicFile(kernel, true); f.Save(project, exportSongIds, format, false, filename, Path.ChangeExtension(filename, ".dmc"), includeFilename, MachineType.Dual); } } }
private void FamiTone2MusicExport(string filename) { var formatString = ParseOption("famitone2-format", "nesasm"); var format = AssemblyFormat.NESASM; switch (formatString) { case "ca65": format = AssemblyFormat.CA65; break; case "asm6": format = AssemblyFormat.ASM6; break; } var extension = format == AssemblyFormat.CA65 ? ".s" : ".asm"; var seperate = HasOption("famitone2-seperate-files"); if (!seperate && !ValidateExtension(filename, extension)) { return; } var kernelString = ParseOption("famitone2-variant", "famitone2"); var kernel = FamitoneMusicFile.FamiToneKernel.FamiTone2; switch (formatString) { case "famitone2fs": kernel = FamitoneMusicFile.FamiToneKernel.FamiTone2FS; break; case "famistudio": kernel = FamitoneMusicFile.FamiToneKernel.FamiStudio; break; } var exportSongIds = GetExportSongIds(); if (exportSongIds != null) { if (seperate) { var songNamePattern = ParseOption("famitone2-seperate-song-pattern", "{project}_{song}"); var dpcmNamePattern = ParseOption("famitone2-seperate-dmc-pattern", "{project}"); foreach (var songId in exportSongIds) { var song = project.GetSong(songId); var formattedSongName = songNamePattern.Replace("{project}", project.Name).Replace("{song}", song.Name); var formattedDpcmName = dpcmNamePattern.Replace("{project}", project.Name).Replace("{song}", song.Name); var songFilename = Path.Combine(filename, Utils.MakeNiceAsmName(formattedSongName) + extension); var dpcmFilename = Path.Combine(filename, Utils.MakeNiceAsmName(formattedDpcmName) + ".dmc"); FamitoneMusicFile f = new FamitoneMusicFile(kernel); f.Save(project, new int[] { songId }, format, true, songFilename, dpcmFilename, MachineType.Dual); } } else { FamitoneMusicFile f = new FamitoneMusicFile(kernel); f.Save(project, exportSongIds, format, false, filename, Path.ChangeExtension(filename, ".dmc"), MachineType.Dual); } } }
private void ExportFamiTone2Music(bool famiStudio) { if (!canExportToSoundEngine) { return; } var props = dialog.GetPropertyPage(famiStudio ? (int)ExportFormat.FamiStudioMusic : (int)ExportFormat.FamiTone2Music); var separate = props.GetPropertyValue <bool>(1); var songIds = GetSongIds(props.GetPropertyValue <bool[]>(5)); var kernel = famiStudio ? FamiToneKernel.FamiStudio : FamiToneKernel.FamiTone2; var exportFormat = AssemblyFormat.GetValueForName(props.GetPropertyValue <string>(0)); var ext = exportFormat == AssemblyFormat.CA65 ? "s" : "asm"; var songNamePattern = props.GetPropertyValue <string>(2); var dpcmNamePattern = props.GetPropertyValue <string>(3); var generateInclude = props.GetPropertyValue <bool>(4); if (separate) { var folder = lastExportFilename != null ? lastExportFilename : PlatformUtils.ShowBrowseFolderDialog("Select the export folder", ref Settings.LastExportFolder); if (folder != null) { foreach (var songId in songIds) { var song = project.GetSong(songId); var formattedSongName = songNamePattern.Replace("{project}", project.Name).Replace("{song}", song.Name); var formattedDpcmName = dpcmNamePattern.Replace("{project}", project.Name).Replace("{song}", song.Name); var songFilename = Path.Combine(folder, Utils.MakeNiceAsmName(formattedSongName) + "." + ext); var dpcmFilename = Path.Combine(folder, Utils.MakeNiceAsmName(formattedDpcmName) + ".dmc"); var includeFilename = generateInclude ? Path.ChangeExtension(songFilename, null) + "_songlist.inc" : null; Log.LogMessage(LogSeverity.Info, $"Exporting song '{song.Name}' as separate assembly files."); FamitoneMusicFile f = new FamitoneMusicFile(kernel, true); f.Save(project, new int[] { songId }, exportFormat, true, songFilename, dpcmFilename, includeFilename, MachineType.Dual); } lastExportFilename = folder; } } else { var engineName = famiStudio ? "FamiStudio" : "FamiTone2"; var filename = lastExportFilename != null ? lastExportFilename : PlatformUtils.ShowSaveFileDialog($"Export {engineName} Assembly Code", $"{engineName} Assembly File (*.{ext})|*.{ext}", ref Settings.LastExportFolder); if (filename != null) { var includeFilename = generateInclude ? Path.ChangeExtension(filename, null) + "_songlist.inc" : null; Log.LogMessage(LogSeverity.Info, $"Exporting all songs to a single assembly file."); FamitoneMusicFile f = new FamitoneMusicFile(kernel, true); f.Save(project, songIds, exportFormat, false, filename, Path.ChangeExtension(filename, ".dmc"), includeFilename, MachineType.Dual); lastExportFilename = filename; } } }
private void ExportFamiTone2() { var props = formatProps[(int)ExportFormat.FamiTone2]; var formatString = props.GetPropertyValue <string>(0); var ext = formatString == "CA65" ? "s" : "asm"; var separate = props.GetPropertyValue <bool>(1); var songIds = GetSongIds(props.GetPropertyValue <bool[]>(4)); var exportFormat = (FamitoneMusicFile.OutputFormat)Enum.Parse(typeof(FamitoneMusicFile.OutputFormat), formatString); var songNamePattern = props.GetPropertyValue <string>(2); var dpcmNamePattern = props.GetPropertyValue <string>(3); if (separate) { var folderBrowserDialog = new FolderBrowserDialog(); folderBrowserDialog.Description = "Select the export folder"; if (folderBrowserDialog.ShowDialog() == DialogResult.OK) { foreach (var songId in songIds) { var song = project.GetSong(songId); var formattedSongName = songNamePattern.Replace("{project}", project.Name).Replace("{song}", song.Name); var formattedDpcmName = dpcmNamePattern.Replace("{project}", project.Name).Replace("{song}", song.Name); var songFilename = Path.Combine(folderBrowserDialog.SelectedPath, Utils.MakeNiceAsmName(formattedSongName) + "." + ext); var dpcmFilename = Path.Combine(folderBrowserDialog.SelectedPath, Utils.MakeNiceAsmName(formattedDpcmName) + ".dmc"); FamitoneMusicFile f = new FamitoneMusicFile(); f.Save(project, new int[] { songId }, exportFormat, true, songFilename, dpcmFilename); } } } else { var sfd = new SaveFileDialog() { Filter = $"FamiTone2 Assembly File (*.{ext})|*.{ext}", Title = "Export FamiTone2 Code" }; if (sfd.ShowDialog() == DialogResult.OK) { FamitoneMusicFile f = new FamitoneMusicFile(); f.Save(project, songIds, exportFormat, false, sfd.FileName, Path.ChangeExtension(sfd.FileName, ".dmc")); } } }
private void ExportFamiTone2Music() { var props = dialog.GetPropertyPage((int)ExportFormat.FamiTone2Music); var kernelString = props.GetPropertyValue <string>(0); var separate = props.GetPropertyValue <bool>(2); var songIds = GetSongIds(props.GetPropertyValue <bool[]>(5)); var kernel = (FamitoneMusicFile.FamiToneKernel)Enum.Parse(typeof(FamitoneMusicFile.FamiToneKernel), kernelString); var exportFormat = (AssemblyFormat)Enum.Parse(typeof(AssemblyFormat), props.GetPropertyValue <string>(1)); var ext = exportFormat == AssemblyFormat.CA65 ? "s" : "asm"; var songNamePattern = props.GetPropertyValue <string>(3); var dpcmNamePattern = props.GetPropertyValue <string>(4); if (separate) { var folderBrowserDialog = new FolderBrowserDialog(); folderBrowserDialog.Description = "Select the export folder"; if (folderBrowserDialog.ShowDialog() == DialogResult.OK) { foreach (var songId in songIds) { var song = project.GetSong(songId); var formattedSongName = songNamePattern.Replace("{project}", project.Name).Replace("{song}", song.Name); var formattedDpcmName = dpcmNamePattern.Replace("{project}", project.Name).Replace("{song}", song.Name); var songFilename = Path.Combine(folderBrowserDialog.SelectedPath, Utils.MakeNiceAsmName(formattedSongName) + "." + ext); var dpcmFilename = Path.Combine(folderBrowserDialog.SelectedPath, Utils.MakeNiceAsmName(formattedDpcmName) + ".dmc"); FamitoneMusicFile f = new FamitoneMusicFile(kernel); f.Save(project, new int[] { songId }, exportFormat, true, songFilename, dpcmFilename, MachineType.Dual); } } } else { var filename = PlatformUtils.ShowSaveFileDialog("Export FamiTone2 Code", $"FamiTone2 Assembly File (*.{ext})|*.{ext}"); if (filename != null) { FamitoneMusicFile f = new FamitoneMusicFile(kernel); f.Save(project, songIds, exportFormat, false, filename, Path.ChangeExtension(filename, ".dmc"), MachineType.Dual); } } }