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 ExportFamiTone2Sfx(bool famiStudio) { var props = dialog.GetPropertyPage(famiStudio ? (int)ExportFormat.FamiStudioSfx : (int)ExportFormat.FamiTone2Sfx); var exportFormat = AssemblyFormat.GetValueForName(props.GetPropertyValue <string>(0)); var ext = exportFormat == AssemblyFormat.CA65 ? "s" : "asm"; var mode = MachineType.GetValueForName(props.GetPropertyValue <string>(1)); var engineName = famiStudio ? "FamiStudio" : "FamiTone2"; var generateInclude = props.GetPropertyValue <bool>(2); var songIds = GetSongIds(props.GetPropertyValue <bool[]>(3)); var filename = lastExportFilename != null ? lastExportFilename : PlatformUtils.ShowSaveFileDialog($"Export {engineName} Code", $"{engineName} Assembly File (*.{ext})|*.{ext}", ref Settings.LastExportFolder); if (filename != null) { var includeFilename = generateInclude ? Path.ChangeExtension(filename, null) + "_sfxlist.inc" : null; FamitoneSoundEffectFile f = new FamitoneSoundEffectFile(); f.Save(project, songIds, exportFormat, mode, famiStudio ? FamiToneKernel.FamiStudio : FamiToneKernel.FamiTone2, filename, includeFilename); lastExportFilename = filename; } }