SIDedit - A Perl/Tk GUI based application to read and edit binary SID files.
This Perl/Tk GUI application allows the user to read, write and edit binary SID files, which are music player and data routines converted from the Commodore-64 computer with an additional informational header prepended. SIDedit has become a useful tool for people ripping SID tunes out of Commodore-64 executables.
Most of the application's common functions should be obvious, and for some of the less obvious ones tooltips provide additional hints.
This tool is intended for programmers, SID rippers, or other people with reasonable background. It is not suitable for newbies who have never before used hexadecimal numbers, who are not familiar with the Commodore-64 computer's internals or with the SID file format (click Help - SID file format> on the menu for the format specification).
Let's say you just ripped a SID tune and it's sitting on your hard drive as a Commodore-64 executable and you want to turn it into a standard SID file so it can be incorporated into the High Voltage SID Collection.
Let's assume that your freshly ripped tune is in a file called Ripped.prg. (SIDedit recognizes a file as a C64 data file only if its extension is one of .prg, .p00, .c64 or .dat.) Start up SIDedit, check the List C64 data files checkbox and navigate to the directory where this file can be found. Click on the file. SIDedit will ask you whether you want to load it as SID data. Answer yes. SIDedit also asks you whether you want to reset the SID header data to the defaults. For now answer yes to this question, too. The binary data from Ripped.prg gets loaded into SIDedit.
Now all you have to do is edit the SID header and save the resulting file. Remember that when you change any field in the SID header in SIDedit, you are editing an in-memory copy of the SID file, not the SID file itself! Once you are done with your changes, you'll have to save them to a file to make the changes permanent.
First, decide whether your rip is PlaySID compatible or requires a real C64 environment to play properly. See the next section below for a detailed discussion about this. When you decided, set the Environment field to your choice.
Then, make sure that the Load range displayed in SIDedit is the same as the one you used when you saved the file. If it isn't, enter the load address in the loadAddress field and make sure the Always save as PSID v2NG/RSID option is checked in the Configure settings window under the File navigator tab, otherwise leave the loadAddress field at 0. (NOTE: if you selected Real C64 as the rip's environment, you can't edit the loadAddress field!)
Then, at a minimum, you should edit the initAddress and playAddress hexadecimal fields (leave playAddress as 0 only if the initialization routine of the ripped tune installs an interrupt player itself - this will always be set to 0 for Real C64 rips and you won't be able to change it), the songs and startSong decimal fields (both should be at least 1), and, of course, the textual name, author and released fields that should conform to HVSC standards (read the HVSC FAQ for details on that or hover with the mouse over those fields to see their tooltips for examples).
If certain (or all) subsongs of your rip use different timers, you might also want to edit the speed field. (NOTE: You can't do this if your rip is a Real C64 rip.) The easiest way to do this is to click on the Edit speed bits button, where you can set the speed of the individual subsongs. Due to the SID file format's limitation, subsongs #32 and higher are all represented by 1 bit only, so they'll all have the same speed. This is rarely a problem, though.
Next you should edit the flags field. Again, instead of typing in the actual hexadecimal value for this field it's easier if you simply click on the Edit the flags button. Here you can specify whether your rip uses a built- in player or not (it most likely does), and whether it's fully C64 compatible or it's PlaySID specific (note: this latter setting is not an available choice for Real C64 rips). For example, if your rip plays digi samples and you didn't alter the original player routine, it's definitely a fully C64 compatible rip. If you modified the player routine so that it plays the digi samples via the extended PlaySID registers (not recommended), then you should definitely check the PlaySID specific checkbutton. For Real C64 rips check the C64 BASIC executable checkbox if the ripped tunes uses BASIC instructions.
You should also specify here whether the tune you ripped was intended for PAL or NTSC machines (or maybe it works on both), and also whether it was intended by its author to be played on a 6581 or 8580 chip (or maybe both). Then press Done, and the flags field will be automatically updated for you.
To help SID emulators determine where they should install their interrupt routines, you may want to specify the area of memory that is definitely not used by your ripped tune. Usually this is a problem only when the initialization or player routine reads or writes to memory that is outside the Load range. If this is the case, you should specify the address of the first free 256 byte large memory page in startPage and the number of free pages following that in pageLength. For example, startPage = $30 and pageLength = $10 indicates that the memory area between $3000 and $3FFF is never touched by your ripped tune.
A common example for how to fill out the different SID fields is below:
Environment: PlaySID
loadAddress: $0000 (or set it to the actual load address if Load range shows a seemingly incorrect memory range)
initAddress: $1000
playAddress: $1003
songs: 1
startSong: 1
speed: 0x00000000 (indicating the the tune uses the vertical sync for timing)
name: My Love is Infinite
author: John Doe
released: 2004 BoyBand
flags: 0x0014 (indicating a fully C64 compatible rip with a built-in player that was intended for PAL machines and to be played back on 6581 chips)
startPage: $00 (indicating that the rip is "clean", i.e. it doesn't write outside its Load range)
pageLength: $00 (if startPage is $00, pageLength should be $00, too)
Now click on the Create HVSC compliant filename button. This will - surprisingly - create an HVSC compliant filename out of the SID's name, in this case it'll create the filename My_Love_is_Infinite.sid. Then make sure the Always save as PSID v2NG/RSID option is checked in the Configure settings window and save the file by clicking on the Save file button on the toolbar. That's it! (You can also save the SID file to a different directory by choosing File - Save as...> from the menu.)
If you ripped more than one tune from the same author, you might want to do the following to save you from typing in his name for every rip: after doing the above procedure, make sure the little checkbuttons by the author and released fields are checked and all the other ones are not. Make sure the Edit - Copy format -> Selected fields only> menu option is also checked, then select Edit - Copy> from the menu or press CTRL-C. This will copy the above two SID fields as text to the clipboard. Now you can go on and add a SID header to your next rip as outlined above, but instead of typing in the author and release info, simply select Edit - Paste> from the menu or press CTRL-V.
You'll notice there is a setting labeled Environment that can be set either to PlaySID or to Real C64. When it is set to PlaySID, SIDedit will save the SID to a valid PSID v1 or v2/v2NG file depending on the other settings. When it is set to Real C64, the data will always be saved to an RSID (RealSID) file, which is basically a PSID v2NG file with its magic ID set to 'RSID' instead of 'PSID'.
The main difference between the two settings is that Real C64 indicates that the rip requires a true Commodore-64 environment to operate properly and won't even play in (or might even crash!) older libsidplay1 and PlaySID compatible SID emulators. The advantage of RSID files is that they can be run on a real C64 unmodified. For this reasons it is highly recommended to save every SID file as an RSID (Real C64 file). See the SID_file_format.txt file included with SIDedit for further details (it is discussed under the 'magicID' field).
Setting the environment to Real C64 also enforces additional restrictions on top of PSID v2NG: it automatically sets the loadAddress, playAddress and speed fields to 0 and modifying these fields is no longer possible, plus changing the bit in the flags field to make the file PlaySID specific will be no longer possible, either. Also, the initAddress and the relocation range indicated by startPage and pageLength cannot be inside or overlap the ROM/IO ($A000-$BFFF and $D000-$FFFF) areas, initAddress cannot be lower than $07E8 and the relocation range cannot overlap the reserved memory area ($0000-$03FF).
When you press the Display SID data button, a new window pops up. Here you can select whether you want to display the data portion of a SID file as a Hex dump, or as disassembled machine code (Assembly checkbutton), or as disassembled machine code showing the illegal instructions, too. Note that when you display the data as Hex dump, for your convenience C64 ASCII characters (both uppercase and lowercase) will be shown as standard ASCII characters on the screen. Also note that when the data is shown as assembly code, you can click on certain jump and branch addresses to jump to that address directly without scrolling to it. Also, when you switch from assembly to hex dump mode or vice versa, the topmost line of the display will be at approximately the same address where it was in the previous display mode.
You can specify the first memory address from which the data will be shown by choosing either the Load address, the initAddress, the playAddress, or an arbitrary memory address (Other) as the starting point for the display.
You can also save the C64 data portion of a SID to a file by clicking the Save data to file button. Choosing the as binary option will save it to a standard C64 binary file with a .prg extension, while choosing the as displayed option will save the actual content of the data display into a plain text file. Choosing the as 64 KB memory image option will create a binary file with an .img extension that is exactly 65536 bytes large and is basically a snapshot of the C64's 64 KB memory with the data portion of the SID file at the appropriate memory address location. Therefore, if you hex edit the resulting .img file, the offsets in your hex editor will match that of the actual offsets when the data is loaded into the C64's memory.
The window also gives you an opportunity to change the size of the C64 data. You can enter a new load range for the data in the Trim/pad data section. If the new range you specify is greater than the current load range at either end, the C64 data gets filled with zeros accordingly. If the new range you specify is smaller than the current load range at either end, the C64 data portion gets trimmed (chopped) as specified. Pressing the Trim/pad data button carries out the change and it also updates the appropriate SID header data. WARNING: if you reduce the data portion there's no other way of getting back the cut data other than reloading the file! Be careful with this button!
Finally, you can also modify a contiguous string of bytes in the data portion by clicking on Modify bytes. This is very useful if you want to add, say, a short sequence of assembly instructions to the SID data.
First specify the C64 address from which you want to modify bytes, then specify the bytes that you want to change it to in the format of "xx xx xx ..." where 'xx' are hexadecimal bytes. For example, setting At address to $1000 and the change bytes to to "AB BA" will change the C64 data portion at $1000 to hex $AB and at $1001 to hex $BA. Needless to say, don't do byte modifications unless you are absolutely sure about what you are doing as you can really mess up the SID file with incorrect byte modifications here.
The left-hand side of the main SIDedit window is dedicated to the file navigator. You can use the file navigator to browse directories, load SID files into SIDedit, play SID files by double-clicking on them, etc. If the directory listing is long, you can also type the first few letters of the file or directory you'd like to jump to after making the given listbox active by rolling your mouse pointer over it.
The file navigator also has its own toolbar. Besides the usual buttons, like Go to parent directory, Create new directory and Delete selected directory there are also a few so-called directory shortcut buttons. You can use these to jump directly to certain frequently used directories, like to the directory where you usually save your SID files to, or to go to your HVSC directory. You configure where these shortcuts point to on the Configure settings window under the File navigator tab.
SIDedit is also capable of loading SID header data from so-called INFO files which usually have a .sid file extension. These files were part of a now obsolete two-file SID file format.
Check the List INFO files checkbox at the top of the file navigator in SIDedit to see a list of such files in the file navigator. Once you click on an INFO file, SIDedit will ask you whether you want to overload the current SID header data in the memory with the one contained in the INFO file. Answer yes to carry out this operation.
After saving a SID file you probably want to make sure it plays correctly in your favorite SID emulator. SIDedit can launch your favorite SID player with a selected file as outlined below.
First, select the Tools tab in the Configure settings window to tell SIDedit which SID player you would like to use for this feature.
Then you can launch your SID player either by clicking on the Play SID file button on the toolbar, or by double-clicking on the file. If you didn't configure a SID player, yet, SIDedit will automatically pop up the Configure settings window to prompt you for the location of the SID emulator you want to use to play the file.
You might also want to edit the data portion of the SID file after you saved the file. You can do this with your favorite hex editor from within SIDedit by clicking the Edit file with hex editor button on the toolbar.
First, select the Tools tab in the Configure settings window to tell SIDedit which hex editor you would like to use for this feature.
Then you can start your hex editor by clicking on the Edit file with hex editor button.
If you didn't configure a hex editor, yet, SIDedit will automatically pop up the Configure settings window to prompt you for the location of the hex editor you want to use for this purpose.
After saving a SID file you might want to run an external tool like SID2CRC to make sure that your rip is a pristine SID tune. Select the SID file in the file navigator then click the Run command line tool button on the toolbar. Here you can enter a command line that will execute your tool in a shell or choose from a list of previously executed tools (the list remembers the last 10 commands you ran and this list is also saved with other settings to SIDedit.INI).
For example, assuming that sid2crc is in your path, enter sid2crc -v -t80000 -m %f at the command line entry. %f will be replaced with the full pathname of the file you selected in the file navigator. You can also use %d to substitute the full pathname of the current directory shown in the file navigator of SIDedit, or %x to subsitute the full pathname of the selected file without its extension. Now click the Run command line tool button and the command line you entered will be executed.
The output of the command will appear in a new pop-up window. (If you see nothing here, the command you entered most likely failed.) There are two additional buttons on this window that also allow you to save the command's output to a file and to copy the contents of the output to the clipboard. You can also pop up this window any time by clicking the Run tool button in the main SIDedit window and then clicking Show last output or by choosing File - Show last output of tool...> from the menu - as its name suggests it will always show you the output of the most recent command you executed.
When you quit SIDedit, it automatically saves your settings to a SIDedit.INI file that will be located in the same directory from where you started SIDedit itself. If you want to disable this feature, uncheck the Always save settings on exit option on the General tab in the Configure settings window and click Save settings now - from now on, SIDedit will read the settings from the SIDedit.INI file, but it won't save your changes to it when you quit the program. You can also force SIDedit to save the current settings to the SIDedit.INI file any time by clicking on the <Save settings now> in the same window.
Note that besides all the settings available on the Configure settings menu, SIDedit also saves the settings of all the options available via the Edit menu, the list of the last 10 commands that were executed with the Run command line tool feature, plus the last size and position of the main SIDedit window and some other windows.
This script requires the following modules: Audio::SID Cwd File::Basename File::Copy Tk Tk::Balloon Tk::Checkbutton Tk::Dialog Tk::DialogBox Tk::Optionmenu Tk::Radiobutton Tk::ROText Tk::BrowseEntry Tk::LabFrame Tk::Scrollbar Tk::Button Tk::Entry Tk::Photo Tk::ToolBar Tk::NoteBook Tk::WaitBox Tk::DirTree
On Win32 machines it also uses these modules: Win32 Win32::API Win32::Process Win32::Clipboard Win32API::File
Data display rendering and clipboard operations are way too slow with colors (try new Perl/Tk?).
Under UNIX bringing up the display data window caused a grab fail. (Bug in Perl/Tk?)
On some systems if you press down on the mousewheel button and move down, the SID data scrolls up, and moving up scrolls down (it should be the other way around). (Bug in Perl/Tk.)
There's a problem with the scrollbar on the data display window when "assembly" is selected: it doesn't always scroll all the way down when grabbed with the scrollblock. (Bug in Perl/Tk.)
Checked items in the menu partially cover first letter of menu entry. (Bug in Perl/Tk.)
After selecting File->New last file doesn't get deselected in the filelist. (Bug in Perl/Tk - can't deselect from listbox.)
If you find any other bugs in this module, please, report them to the author (see COPYRIGHT below).
Disassembly rendering (when jumping to address or switching views) should always re-start at proper address (instead of in the middle of an instruction).
RunTool execution should have a WaitBox.
Restrict Play SID file to actual SID/INFO files only.
DirTree browser doesn't quite work in Win32. Try chooseDirectory instead?
Add key bindings to Configure settings popup.
Add popup to show quick summary of assembly codes.
Add File -> Open... (rip out a Load function from FileSelect).
Add "Load data" to SID data display.
I'd like to have SIDedit remember the last x directories I worked in. Sometimes I quickly need to change between my rip directory and the HVSC directory to compare something, so it would be nice to implement a similar history function as in the RUN TOOL window. (Add <- and -> nav buttons!)
Optimize Load/Save Settings code (hash! - use Config::IniHash or sg).
Optimize Settings screen code (map!).
Add right-click menu to file navigator. Prune right-click menu on SID data and text display? (Selection problem!)
Add mm file analyzation support, see SidUsage files!
Change "name" field to "Title" (In Audio::SID, too).
Add an info field to "Show SID Data" that shows which SID player engine is used.
Add option to allow users to revert back to standard copy/paste operations
(i.e. select a field, copy it). (BUT: $window->clipboardPaste()
doesn't work,
neither does $window->insert - great...)
Add a button called "Batch processing". In there one option would be to generate a text output of checked fields recursively in current dir, another option would be to change the checked fields in all files recursively to what is in current file.
Simon: I still wish something could be done about it like say combining load address and range (make load address always reflect the range start address). Then by changing load address you'll see the range change. Also might be nice if you then click display data the new load address is used... You could even combine load address and range into a single line.
Keep the ShowSIDData and ShowTextOutput windows on screen, don't grab, so they can be displayed side-by-side.
Add Dag's code to fill out startPage and pageLength automatically.
Add ability to recurse dirs and autoconvert SID files as per specified options.
Load MD5s from expanded Songlengths DB to find SIDs already in HVSC.
Allow siddiag duplicate match against HVSC. Or in general incorporate a duplicate finder?
Add ability to search every field of every SID found in HVSC and/or other specified directories. Sort of like SidBace. Build a text DB for this. Add search capability for Songlength DB, STIL, etc.
SIDedit Copyright (C) 1999, 2004 by LaLa <LaLa@C64.org>
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SIDedit v4.02+
LaLa's SID pages for the latest version of SIDedit:
The SIDPLAY homepage for the SID file format documentation, SID emulators and SID-related tools:
The SIDPLAY2 homepage for documents about the PSID v2NG extensions:
The SID Rippers' Guide:
The High Voltage SID Collection, the most comprehensive archive of SID tunes:
Home of this patched SIDedit version:
Added "List all files" option so that binaries can be loaded without having to rename them to "*.prg" first.
Added browsing support for Windows folder names containing non-ASCII characters.
Added "selection replace" when pasting into directory field.
Fixed flawed regexp so it no longer crashes for windows filenames containing dots or brackets.
Disassembly view now uses regular 3-char mnemonics for illegal opcodes.
Patched so it works with Perl and module versions still available today.
(added) All illegal assembly instructions are colored red in the data display when syntax coloring is turned on.
(added) A line consisting of dashes is displayed after every JMP and RTS instruction in the data display to improve readability.
(added) Added configuration setting "Automatically create HVSC compliant filename when 'name' field changes". Turning on this setting automatically changes the filename to be HVSC compliant whenever the 'name' field changes, and it also gets rid of the pop-up confirmation window when the "Create HVSC compliant filename" button is pressed.
(fixed) Added missing '$' signs when displaying conditional branch instruction addresses in the data display.
(added) New setting to turn off syntax coloring in data display to speed up display and clipboard operations.
(added) Version history in the POD.
(added) Broke up content of INI file into 4 sections within the file for better readability.
(fixed) Colors were one off on the hex data display.
(fixed) There was a problem entering the "Other" address in the data display. It caused focus problem, data rendering problem, etc. The address entry is now enabled permanently.
You'll notice that the user interface of SIDedit has undergone some significant upgrades which will hopefully make it easier to use. The basic functionality of SIDedit hasn't changed much, though.
IMPORTANT: If you're installing this version of SIDedit over the old one, I strongly advise you to -DELETE- your existing SIDedit.ini file to remove the chance of some weird bug happening. Upon first starting SIDedit v4.00, select "Tools" -> "Configure settings", then click "Save settings now" to re-create the SIDedit.ini file.
If you are using the UNIX/Perl version (i.e the SIDedit.pl file from the tarball) you'll notice that you'll have to install a few new Perl/Tk modules to get SIDedit running. It's inconvenient, I know, but it was the only way I could add some cool new widgets to the tool.
(added) Added support for the new 'C64 BASIC' RSID flag. (Thanks to Simon White!) Click on "Edit flags" to set or clear this flag.
(added) Added rudimentary support to modify a continuous string of bytes in the SID data itself. See "Display SID data" -> "Modify bytes". Consult the "Modifying Bytes in SID Data" section of the "Help" -> "Quick tutorial" guide for details on its usage. (WARNING: You can really mess up a SID file with this, so use it with extreme care!)
(added) Major overhaul of the user interface includes (but is not limited to):
(added) SIDedit now uses menus and toolbars for easy access to most functions.
(added) Help screens use external files.
(added) File -> New to reset SID data to defaults.
(added) File -> Save as... to save file to arbitrary location.
(added) The main window and the data display make use of colors.
(added) In the data display window it is now possible to click on the jump/branch addresses to jump to that location directly (if that location can be displayed in the window).
(added) In the data display window switching between hex dump and assembly listings retains the currently displayed address range in the window.
(added) All the settings are now configurable via a separate "Configure settings" popup window.
(added) Experimental mousewheel support. (NOTE: on some systems if you press down on the mousewheel button and move down, the window contents scroll up, and moving up scrolls them down instead of the other way around. This seems to be a bug in Perl/Tk itself.)
(added) The file navigator window pane also got its own toolbar with 3 directory "shortcuts" (default dir, default save dir, HVSC dir) which are configurable via the "Configure settings" popup window. You can use these shortcuts to jump to those dirs without navigating to them.
(added) Toolbar icons that are lifted from Tk::Toolbar -> tkIcons.
(added) Errors that would be displayed on the command line are now displayed in an error message box.
(added) Window positions are retained and also saved to configuration file.
(added) "Please wait" popup window when SID data display rendering takes a long time.
(added) Jumping between hex and assembly display in the SID data display retains location from the previous display mode.
(added) The POD is now in its separate .pod file.
(added) Added "%x" command line substitution pattern to the "Run Tool" feature to allow full pathname without file extension.
(fixed) Additional verification of playAddress and initAddress fields.
(fixed) Pressing delete and backspace in the SID fields will also flag the in-memory file as modified.
(fixed) Sub-windows now properly take and release focus.
(fixed) InitAddress and playAddress are grayed out in the SID data display if they are zero.
(fixed) Saving a file with the same name but different case now saves the file with the new cases.
(fixed) If "List INFO files" is checked, loading of data files is no longer messed up.
(fixed) Lots and lots of small bugfixes. Hopefully, I managed to fix all the bugs that were reported since the previous version was released. :)
Some of you might notice that in the Windows version of SIDedit there is no "Browse" button next to the directory shortcut entries in the "Configure settings" window. Unfortunately, this is due to a shortcoming of the Perl/Tk interface and hopefully it'll be fixed when Tk-804 is released.
(added) Changed the "copyright" field name to "released".
(fixed) The load range wasn't calculated correctly when the relocation range was checked, causing incorrect error reports before saving an RSID file.
(fixed) The lowest acceptable load and init address in RSID files was lowered to $07E8. (Ask Simon if you are curious why. :)
(fixed) There was a bug in the code that was checking the relocation range for RSID files, it sometimes reported a perfectly valid relocation range (e.g. startPage = $9F, pageLength = $01) as invalid. It won't do that any more.
(added) The tool's name was changed from PSIDedit to SIDedit. Note that this means that you'll have to rename your PSIDedit.ini file to SIDedit.ini and change the first line in it to "[SIDedit]" if you want to retain your old settings!
(added) The tool requires the new Audio::SID v3.00 module to work (if you're using the Win32 executable, you don't have to worry about this).
(added) There's a new field labeled "Environment" in the SID header section. You can select either "PlaySID" (PSID) or "Real C64" (RSID) here. This basically sets the magic ID in the SID file to PSID or RSID. Selecting RSID enforces additional restrictions over PSID v2NG - see the included documentation for details.
(added) Additional full support for RSID, like relocation info fields.
(added) The "HVSC Filename" button is now called "Create HVSC Filename". Hopefully, this'll make its function a bit more understandable.
(added) With the new name comes a slightly different icon - thanks to Peter Sandén for taking the time to create it for me! :)
(fixed) If you change the loadAddress field, its new value is now properly reflected in the data display window, too.
(fixed) Changing the CLOCK field didn't automatically regenerate the MD5 fingerprint. Fixed it.
(fixed) Pressing CTRL+<Key> or ALT+<Key> (and nothing else) in the text entry fields of the SID header no longer pops up the "Save file?" dialog window if you move to another file right away.
(fixed) The "funny" texts on buttons of error popup windows are gone. Apparently, many of you didn't think they were funny. So, now the only button you can press there simply says "OK".
(fixed) The "Run tool" feature didn't work properly if the full pathname of the file you tried to operate on contained a space. Fixed it.
(fixed) Many other minor internal enhancements made to the tool.
(added) The "HVSC Filename" button will automatically append "_PSID" to the filename if the PlaySID flag is set. (Although the filename might still require some manual editing to make it "look better".)
(added) In almost all dialog boxes you can now press hotkeys, too. If the hotkeys don't seem to work, try CTRL+hotkey or ALT+hotkey. For example, in a Yes/No dialog box you can simply press the "Y" or "N" keys to answer the question. In the "Data display" window you can press CTRL+O to close the window.
(fixed) The "HVSC Filename" button now handles "+" signs in titles correctly.
(fixed) Zero-length filenames are no longer allowed when saving.
(fixed) The MD5 fingerprints are now calculated with the new algorithm (so for files in HVSC they will match those found in the latest songlength database).
(fixed) Minor bugfixes in HVSC compliant filename generation.
(fixed) Removed references to "Amiga" in speed bit edit popup.
(added) Ability to load INFO files (these are text files that were part of the now obsolete .dat + .sid two-file format). PSIDedit also handles newer INFO files that contain PSID v2NG fields in them.
(added) A new button called "Run tool" allows the user to run any external tool in a command shell right from PSIDedit. The output of such commands is captured in a window - the contents of this window can then be saved to a file or copied to the clipboard. This new button was added mainly to allow rippers to run sid2crc right from PSIDedit which allows them to check SID files. PSIDedit will remember the last 10 command lines entered here and this command list is also saved to the PSIDedit.ini file with other settings.
(added) On the "Display C64 data" window a new button was added called "Trim/pad data" that allows the user to alter the size of the C64 data in a PSID file. This is great to trim a ripped file to get rid of superfluous bytes from it.
(added) Pressing an alphanumeric key when the dir/file browser is in focus will cycle thru the dirs/files that begin with that letter. If you start typing rapidly, the first file whose name starts with the typed letters will be highlighted, similar to Windows Explorer.
(added) When moving up the dir hierarchy via the dir browser the previous directory's name will be automatically highlighted (instead of the name of the very first dir entry).
(fixed) Minor bugfixes in the "HVSC filename" feature that generates an HVSC-compliant filename based on the "name" field.
(fixed) Copying data to the clipboard INFO style had some bugs in it. Got rid of them. Similarly, pasting INFO style data from the clipboard was also buggy. Fixed that, too.
(fixed) Loading data files (.dat, .prg, etc.) will no longer reset the PSID header data to defaults automatically. You now have a choice whether to keep the PSID header data or not. This will save you a copy-paste step when, for example, constructing several SID files in a row from data files that were ripped from the same author.
(fixed) If you tried to play a SID file under Windows whose full pathname contained a space, SIDPlay/Win used to give an error. Fixed it.
(fixed) Other minor (mostly internal) enhancements.
(fixed) Apostrophe handling for titles containg 'n' and underscores when creating HVSC compliant filename.
(added) New tooltips were added to the 'author' and 'copyright' fields to show the suggested format for those fields (actually, that is pretty much how HVSC requires them to look like - consult the /DOCUMENTS/hv_sids.txt file of your HVSC collection for details).
(fixed) Fixed a minor bug in the 'songs' and 'startSong' entry fields.
(fixed) The tabbing order amongst the PSID header fields is now a bit more convenient (TAB won't cycle through the little checkboxes any more).
(added) Complete support of the PSID v2NG file format specification.
(added) Individual bits in the 'speed' and 'flags' fields can be edited via user-friendly pop-up windows.
(added) Ability to launch a SID emulator to play a tune right from PSIDedit.
(added) Ability to launch a hex editor from within PSIDedit to edit the binary contents of a .sid file.
(added) A brand new C64 data display window allows the user to examine the contents of a SID tune either as a hex dump (where C64 ASCII characters are also translated to standard ASCII characters) or as disassembled machine code (with or without illegal instructions),
(added) More control over which PSID header fields will be copied to and pasted from the clipboard (this is very handy when you are turning many rips from the same author into .sid files, it saves you from a lot of typing).
(added) Configuration settings are stored in an .ini file.
(added) PSIDedit icon.
(added) On-the-fly verification of many editable fields.
(added) Win32 specific support for clipboard operations.
(added) Drive selection support under Win32 systems.
(added) More robust error checking with error message popup window.
(added) Directory operations (delete, create, etc.).
(added) More extensive tooltips.
(added) More extensive tutorial on usage.
(added) MD5 fingerprint is updated on the fly as the PSID header is edited.
(added) PSIDedit is now also available as a standalone Windows executable! No installation needed - just run it and enjoy. :) But since it was created with the evaluation version of Perl2EXE, you'll see a nag-window come up after you close PSIDedit.
(fixed) HVSC root filename is only 26 characters long, not 27.
(added) You can now not only copy PSID header information to the clipboard, but you can also paste properly formatted header info from the clipboard into the PSID file you are editing by pressing the new "Paste" button. To find out what "properly formatted" means, simply load a PSID file, press "Copy", then paste what was just copied to the clipboard into your favorite text editor. As you'll see, it's basically the PSID header in plain text. "Paste" doesn't require all those PSID fields to be present in the clipboard, thus, you can paste only a subset of those fields into PSID files.
(added) Added a button titled "HVSC Filename" that makes the filename HVSC compliant (essentially, POSIX compliant). What it does to create the filename is basically the same thing that Shark's SID2LFN tool does. The filename it creates is not gospel (I lack the time to code up an AI engine in Perl ;), but a very good guess at what the filename should be if you want your rip to be in HVSC.
(added) Added POD to the script. The description also contains a real-life example of how I imagine this PSIDedit tool to be used by rippers.
(added) Using Audio::PSID instead of PSID.pm.
(fixed) Update file lists if file is saved with different name.
(added) Ability to edit dataOffset.
First public release. Lots of changes and additions.
First release.