Custom Amiga Module
The Custom format is an Amiga music format created by Frank Riffel and Peter Kunath for their Amiga music player DeliTracker.
DeliTracker supports hundreds of Amiga music formats through DeliPlayers; plugins with the code to recognise and play a specific music format.
For music formats that DeliTracker doesn't have a DeliPlayer for, there is the catch-all Custom format, which is simply another DeliPlayer written exclusively for that music, combining the music's replay code and data in the same file.
The Custom format is also supported by DeliTracker's main rival, EaglePlayer, and UADE which emulates them both.
All DeliTracker plugins and Custom files are Amiga Hunk files. The first hunk must be a code hunk that begins with these values:
70 FF 4E 75 44 45 4C 49 52 49 55 4D: 680x0 code to immediately exit if this file was run as a normal executable, followed by "DELIRIUM" in ASCII
- a 32-bit relocated (absolute) pointer to a tag list
The tag list is a list of 32-bit key/value pairs. Tags are a standard idiom in Amiga software for variable lists of parameters. The tags that DeliTracker supports are listed in the development kit supplied with DeliTracker.
A Custom file distinguishes itself from a DeliPlayer plugin by using the DTP_CustomPlayer (0x80004455) tag instead of the DTP_InternalPlayer (0x80004454) tag.
The contents of a custom file is usually music replay code and data ripped directly from a game that takes over the Amiga hardware and does not use the operating system. Unlike the SID or PSF formats, which also bundle ripped code and data in an identifying format, DeliTracker does not run the code in an emulated virtual machine, it executes it directly! It's contingent on the author of the Custom file to remove all Amiga hardware access from the player code (except for the audio hardware, obviously), and make it "play nice" with the running OS. The most common "dirty" accesses by replay code are to set up vertical blank timing interrupts or to use the CIA timers and their interrupts. DeliTracker provides callback functions to the custom file to allow them to set up equivalent timing interrupts in a system-friendly way.
Custom files are sometimes replaced with a combination of a new DeliPlayer/EaglePlayer and data files that they recognise. One of the advantages of this is the programmer can go to great effort and support DeliTracker's "NotePlayer" or EaglePlayer's "Amplifier" APIs, which play sounds independently of the Amiga hardware and can thus support playing audio mixed to 14-bit quality on the original Amiga hardware or even higher quality through third party sound cards, and also allow DeliTracker/EaglePlayer to pass the audio through visualisation plugins.
Custom files that remain today are usually because their replay code was unique, there is little advantage in creating a standalone plugin that only recognises a single data file.
- DeliTracker 2.32, the last release of DeliTracker in August 2000, including the developer kit for creating DeliPlayers / Custom files
- EaglePlayer 2.05, the main rival to DeliTracker on the Amiga
- UADE, the Unix Amiga DeliTracker Emulator which runs all DeliPlayers and EaglePlayers on an emulated Amiga, so it can play all Amiga music on platforms other than the Amiga