diff --git a/com.wudsn.ide.snd/OSGI-INF/l10n/bundle.properties b/com.wudsn.ide.snd/OSGI-INF/l10n/bundle.properties index d51491f9..afc4e943 100644 --- a/com.wudsn.ide.snd/OSGI-INF/l10n/bundle.properties +++ b/com.wudsn.ide.snd/OSGI-INF/l10n/bundle.properties @@ -7,4 +7,23 @@ com.wudsn.ide.snd.player.c64.C64SoundFile.name=C64 Sound File com.wudsn.ide.snd.editor.SoundEditor.name=Sound Editor com.wudsn.ide.snd.editor.SoundEditorToolbar.label=Sound com.wudsn.ide.snd.editor.SoundEditorActionSet.label=Sound -com.wudsn.ide.snd.editor.SoundEditorPlayCommand.name=Play \ No newline at end of file +com.wudsn.ide.snd.editor.SoundEditorPlayCommand.name=Play + +com.wudsn.ide.snd.player.FileType.CM3=Chaos Music Composer File (3/4) +com.wudsn.ide.snd.player.FileType.CMC=Chaos Music Composer File +com.wudsn.ide.snd.player.FileType.CMR=Chaos Music Composer File (Rzog) +com.wudsn.ide.snd.player.FileType.CMS=Chaos Music Composer File (Stereo) +com.wudsn.ide.snd.player.FileType.DLT=Delta Music Composer File +com.wudsn.ide.snd.player.FileType.DMC=Chaos Music Composer File (DoublePlay) +com.wudsn.ide.snd.player.FileType.FC=Future Composer File +com.wudsn.ide.snd.player.FileType.MPD=Music Pro-Tracker File (DoublePlay) +com.wudsn.ide.snd.player.FileType.MPT=Music Pro-Tracker File +com.wudsn.ide.snd.player.FileType.RMT=Raster Music Tracker File +com.wudsn.ide.snd.player.FileType.SAP=Slight Atari Player File +com.wudsn.ide.snd.player.FileType.TM2=Theta Music Composer 1.x File +com.wudsn.ide.snd.player.FileType.TM8=Theta Music Composer 1.x File (Stereo) +com.wudsn.ide.snd.player.FileType.TMC=Theta Music Composer 2.x File +com.wudsn.ide.snd.player.FileType.XEX=Atari Executable + +com.wudsn.ide.snd.player.FileType.PRG=C64 Program +com.wudsn.ide.snd.player.FileType.SID=SID File \ No newline at end of file diff --git a/com.wudsn.ide.snd/OSGI-INF/l10n/bundle_de.properties b/com.wudsn.ide.snd/OSGI-INF/l10n/bundle_de.properties index 3b5acdb3..c05d9dd3 100644 --- a/com.wudsn.ide.snd/OSGI-INF/l10n/bundle_de.properties +++ b/com.wudsn.ide.snd/OSGI-INF/l10n/bundle_de.properties @@ -7,4 +7,23 @@ com.wudsn.ide.snd.player.c64.C64SoundFile.name=C64 Musik-Datei com.wudsn.ide.snd.editor.SoundEditor.name=Musik Editor com.wudsn.ide.snd.editor.SoundEditorToolbar.label=Musik com.wudsn.ide.snd.editor.SoundEditorActionSet.label=Musik -com.wudsn.ide.snd.editor.SoundEditorPlayCommand.name=Wiedergabe \ No newline at end of file +com.wudsn.ide.snd.editor.SoundEditorPlayCommand.name=Wiedergabe + +com.wudsn.ide.snd.player.FileType.CM3=Chaos Music Composer Datei (3/4) +com.wudsn.ide.snd.player.FileType.CMC=Chaos Music Composer Datei +com.wudsn.ide.snd.player.FileType.CMR=Chaos Music Composer Datei (Rzog) +com.wudsn.ide.snd.player.FileType.CMS=Chaos Music Composer Datei (Stereo) +com.wudsn.ide.snd.player.FileType.DLT=Delta Music Composer Datei +com.wudsn.ide.snd.player.FileType.DMC=Chaos Music Composer Datei (DoublePlay) +com.wudsn.ide.snd.player.FileType.FC=Future Composer Datei +com.wudsn.ide.snd.player.FileType.MPD=Music Pro-Tracker Datei (DoublePlay) +com.wudsn.ide.snd.player.FileType.MPT=Music Pro-Tracker Datei +com.wudsn.ide.snd.player.FileType.RMT=Raster Music Tracker Datei +com.wudsn.ide.snd.player.FileType.SAP=Slight Atari Player Datei +com.wudsn.ide.snd.player.FileType.TM2=Theta Music Composer 1.x Datei +com.wudsn.ide.snd.player.FileType.TM8=Theta Music Composer 1.x Datei (Stereo) +com.wudsn.ide.snd.player.FileType.TMC=Theta Music Composer 2.x Datei +com.wudsn.ide.snd.player.FileType.XEX=Atari Programm + +com.wudsn.ide.snd.player.FileType.PRG=C64 Programm +com.wudsn.ide.snd.player.FileType.SID=SID Datei \ No newline at end of file diff --git a/com.wudsn.ide.snd/build.properties b/com.wudsn.ide.snd/build.properties index c6583d34..9d01d490 100644 --- a/com.wudsn.ide.snd/build.properties +++ b/com.wudsn.ide.snd/build.properties @@ -6,7 +6,7 @@ bin.includes = META-INF/,\ lib/atari8bit/asap.jar,\ lib/c64/jsidplay2.jar,\ plugin.properties,\ - plugin_de_DE.properties,\ + plugin_de.properties,\ lib/atari8bit/asap.txt,\ lib/c64/jsidplay2.txt,\ OSGI-INF/ diff --git a/com.wudsn.ide.snd/src/com/wudsn/ide/snd/editor/SoundEditor.java b/com.wudsn.ide.snd/src/com/wudsn/ide/snd/editor/SoundEditor.java index 847af3dd..9a94b3b8 100644 --- a/com.wudsn.ide.snd/src/com/wudsn/ide/snd/editor/SoundEditor.java +++ b/com.wudsn.ide.snd/src/com/wudsn/ide/snd/editor/SoundEditor.java @@ -616,8 +616,11 @@ public final class SoundEditor extends EditorPart implements Application, SoundP } int musicAddress = info.getMusicAddress(); - if (musicAddress >= 0 && selectedFileType.isMusicAddressChangeable()) { - String initialValue = HexUtility.getLongValueHexString(musicAddress, 4); + if (selectedFileType.isMusicAddressChangeable()) { + String initialValue = ""; + if (musicAddress >= 0) { + initialValue = HexUtility.getLongValueHexString(musicAddress, 4); + } InputDialog inputDialog = new InputDialog(mainComposite.getShell(), TextUtility.format(Texts.MESSAGE_I507, selectedFileType.getDescription()), Texts.MESSAGE_I508, initialValue, new IInputValidator() { diff --git a/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/FileType.java b/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/FileType.java index c8c26880..39df866c 100644 --- a/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/FileType.java +++ b/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/FileType.java @@ -26,14 +26,14 @@ import com.wudsn.ide.base.common.EnumUtility; */ public enum FileType { - // ATARI file Types, alphabethical order: + // ATARI file Types, alphabetical order: // cm3, cmc, cmr, cms, dlt, dmc, fc, mpd, mpt, rmt, tmc, tm2, tm8, sap // XEX is an export only format, not registered in the content type. CM3(".cm3"), CMC(".cmc"), CMR(".cmr"), CMS(".cms"), DLT(".dlt"), DMC(".dmc"), FC(".fc"), MPD(".mpd"), MPT(".mpt"), RMT(".rmt"), SAP(".sap"), TM2(".tm2"), TM8(".tm8"), TMC(".tmc"), XEX(".xex"), - // C64 File Types, alphabethical order: + // C64 File Types, alphabetical order: // prg, sid // PRG is an export only format, not registered in the content type. diff --git a/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/SoundInfo.java b/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/SoundInfo.java index 50630b40..de457651 100644 --- a/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/SoundInfo.java +++ b/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/SoundInfo.java @@ -128,7 +128,8 @@ public interface SoundInfo { * Gets the music address or -1 if the module type does not have * one. * - * @return TODO + * @return The music address or -1 if the module type does not have + * one. */ public int getMusicAddress(); diff --git a/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/atari8/ASAPPlayer.java b/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/atari8/ASAPPlayer.java index 8de8920d..cf449eab 100644 --- a/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/atari8/ASAPPlayer.java +++ b/com.wudsn.ide.snd/src/com/wudsn/ide/snd/player/atari8/ASAPPlayer.java @@ -136,6 +136,7 @@ public final class ASAPPlayer extends SoundPlayer { ASAPInfo asapInfo = asap.getInfo(); info.title = asapInfo.getTitleOrFilename(); info.author = asapInfo.getAuthor(); + info.date = asapInfo.getDate(); // Determine the original file type in the container. // Only if it cannot be determined, the file extension is used. @@ -185,6 +186,9 @@ public final class ASAPPlayer extends SoundPlayer { info.initFulltime = asapMusicRoutine.isFulltime(); info.playerAddress = asapMusicRoutine.getPlayerAddress(); info.musicAddress = asapInfo.getMusicAddress(); + if (info.musicAddress == 0) { + info.musicAddress = -1; + } setLoaded(true); @@ -202,7 +206,6 @@ public final class ASAPPlayer extends SoundPlayer { // The file name must have a least one character before the dot. String asapFile = "DUMMY" + fileType.getExtension().toUpperCase(); ASAPInfo asapInfo = asap.getInfo(); - int oldMusicAddress = asapInfo.getMusicAddress(); byte[] output = new byte[MAX_EXPORT_SIZE]; ASAPWriter asapWriter = new ASAPWriter(); int outputOffset = 0; @@ -223,10 +226,7 @@ public final class ASAPPlayer extends SoundPlayer { */ outputOffset = asapWriter.write(asapFile, asapInfo, module, moduleLen, false); - // Change the music address back in case it was changed. - if (fileType.isMusicAddressChangeable()) { - asapInfo.setMusicAddress(oldMusicAddress); - } + byte[] result = new byte[outputOffset]; System.arraycopy(output, 0, result, 0, outputOffset); return result;