Custom Amiga Module

The 'Custom format is an Amiga music format created by the developers of DeliTracker, Frank Riffel and Peter Kunath.

DeliTracker supports hundreds of Amiga music formats through DeliPlayers; plugins written for DeliTracker with the code to recognise and play specific Amiga music formats.

For music formats that DeliTracker doesn't have a DeliPlayer for, there is the catch-all Custom format, which is simply a custom 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.

All DeliTracker plugins and Custom files are Amiga Hunk files. The first hunk must be a code hunk that begins with these big-endian 32-byte longwords:
 * 1) 0x70FF4E75: This is 680x0 code (moveq #-1,d0 / rts) to immediately exit if this file was run as a normal executable
 * 2) 0x44454C49: "DELI"
 * 3) 0x5249554D: "RIUM" -- two part magic ID for DeliTracker by Delirium Softworks
 * 4) a 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, PSF or SC68 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 register 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.