Whats the file format of delitracker CUSTOM?
Whats the file format of delitracker CUSTOM?
Is there documentation for the Custom format where
the replay code is embedded?
Just from looking at the disaasembly and hex dump of the file it reminds me of a SID tune with a load address and some load rutines to initialize the tune.
But from the ones ive looked at the numbers dont make sense as far as where the replay code and music data is to be loaded
the replay code is embedded?
Just from looking at the disaasembly and hex dump of the file it reminds me of a SID tune with a load address and some load rutines to initialize the tune.
But from the ones ive looked at the numbers dont make sense as far as where the replay code and music data is to be loaded
Re: Whats the file format of delitracker CUSTOM?
Download the DeliTracker distribution and you'll find a file called Developer.eng. If you're not actually installing DeliTracker on an Amiga, this file is in the install archive Files/developer.lhadestop wrote:Is there documentation for the Custom format where
the replay code is embedded?
Just from looking at the disaasembly and hex dump of the file it reminds me of a SID tune with a load address and some load rutines to initialize the tune.
But from the ones ive looked at the numbers dont make sense as far as where the replay code and music data is to be loaded
What it basically tells you is that a Custom tune is a normal DeliPlayer, but with the DTP_CustomPlayer tag so no "check" routine is used.
The format of a DeliPlayer / custom tune is as follows:
- normal AmigaDOS executable file format. This can include multiple hunks and relocs, and flags indicating CHIP or FAST memory requirements. The AmigaDOS executable format makes it possible to load the player/custom anywhere in memory.
- the "header" in this executable is:
moveq #-1,d0
rts
dc.b "DELIRIUM"
dc.l playertags (that's a pointer to the taglist, using an absolute address, so in the executable file format that becomes a reloc)
Now, the taglist is a standard way of Amiga programming. You have a array of {tag, data} pairs, where the tag and data are always 4 bytes long. Therefore instead of having a strictly ordered parameter list, you can have them in any order. The tags themselves are just an enumeration. There are also special tags, TAG_DONE (ends the taglist), TAG_SKIP (skip this tag and data, often used in C as {(feature_enabled) ? XYZ_Feature : TAG_SKIP, featuredata} and TAG_MORE (stop processing this tag list the data part of this is a pointer to the continuation of the taglist somewhere else in memory). TAG_USER is just 0x80000000 and is expected to be the basis of all other "normal" tags. For example, delitrackers tags start at TAG_USER+"DT", i.e. 0x80004454
I recommend looking at the assembler source code of custom tunes (and players) that Don Adan has posted on the Wanted Team site. You also should look at the include file misc/DeliPlayer.i which is included in the DeliTracker distribution.
Re: Whats the file format of delitracker CUSTOM?
There's no good documentation for customs. You may look at uade custom loader source to see how it is done ( http://ee.tut.fi/~heikki/uade : amigasrc/score/score*.s ). There is all kinds of broken behaviour in many custom songs, and details of the 'official' format are unclear and sometimes even secret.destop wrote:Is there documentation for the Custom format where
the replay code is embedded?
Just from looking at the disaasembly and hex dump of the file it reminds me of a SID tune with a load address and some load rutines to initialize the tune.
But from the ones ive looked at the numbers dont make sense as far as where the replay code and music data is to be loaded
If SID tunes are like that, custom format is totally different.
What are you trying to achieve? Perhaps I can help you if you have well specified questions..
Few tags you should be aware of:
DTP_InitPlayer - called once per song (should allocate audio channels)
DTP_InitSound - called once per subsong (should initialize a subsong)
DTP_Interrupt - called once per time frame (should play one time frame)
DTP_StartInterrupt - called once per song (should setup interrupts properly (*sigh*))
DTP_NoteStruct - this means 'secrets'
If you run into totally broken looking custom songs, you are probably right;)
shd / uade team
http://ee.tut.fi/~heikki/uade.html
Re: Whats the file format of delitracker CUSTOM?
There have also been bad rips in the HVSC for years. Good programmers slowly fix these one by one to make SID replay more convenient and stable. Such is life.shd wrote:There is all kinds of broken behaviour in many custom songs,
It's not so much that anything in DeliTracker is secret, it's that they didn't bother finishing DeliTracker, stabilising the API and writing good documentation for anyone to use. Instead, they prefered to write everything themselves. When you use open source software, day in and day out, you lose sight of the fact that some freeware authors won't trust you with anything more useful than their executables.shd wrote:and details of the 'official' format are unclear and sometimes even secret.
The way that NotePlayers operate, from a replayer perspective, can be read in the source code of Jon Pickard's TFMX DeliPlayer.
(In case anybody is wondering, the NotePlayer interface is DeliTracker's system for playing notes independent of the Amiga audio hardware. EaglePlayer has a similar system called Amplifiers.)
Re: Whats the file format of delitracker CUSTOM?
And some of those freeware authors consider it a crime to disassemble their players to achieve compability with other systems. (for example disassemble a noteplayer) And no, open source people have not lost sight, the others have never had it.kyz wrote: It's not so much that anything in DeliTracker is secret, it's that they didn't bother finishing DeliTracker, stabilising the API and writing good documentation for anyone to use. Instead, they prefered to write everything themselves. When you use open source software, day in and day out, you lose sight of the fact that some freeware authors won't trust you with anything more useful than their executables.
URL? Couldn't find it.kyz wrote: The way that NotePlayers operate, from a replayer perspective, can be read in the source code of Jon Pickard's TFMX DeliPlayer.
shd / uade team
Re: Whats the file format of delitracker CUSTOM?
They can consider all they want, reverse engineering for compatibility is legal. But some authors are really quite protective of their source code, you need a slightly more diplomatic attitude if you want a line of source from them.shd wrote:And some of those freeware authors consider it a crime to disassemble their players to achieve compability with other systems. (for example disassemble a noteplayer) And no, open source people have not lost sight, the others have never had it.
Hmm. It used to be in TFMX_v1.6.7 editor on ExoticA. It came both with Jon's TFMX source and the deliplayer6.i file. Now I can only find the source alone, at http://exotica.fix.no/source/replays/De ... MX_note2.sshd wrote:URL? Couldn't find it.
Good job I have the deliplayer6.i file in my includes
Code: Select all
--- DeliPlayer.i 1995-06-03 10:58:32.000000000 +0100
+++ DeliPlayer6.i 2003-05-30 01:22:42.000000000 +0100
@@ -126,6 +126,15 @@
EITEM DTP_InitNote ; NoteStruct initialization
+ EITEM DTP_NoteAllocMem * allocates memory for module
+ EITEM DTP_NoteFreeMem * frees module-memory
+ EITEM DTP_PlayerInfo * a pointer where DT stores a pointer
+ * to the current Player Taglist
+ EITEM DTP_Patterns * FPTR to a pattern-count routine
+ EITEM DTP_Duration * FPTR to a duration calc routine
+ EITEM DTP_SampleData * FPTR to a sample-info routine
+ EITEM DTP_MiscText * FPTR to a misc-text routine
+
*** end of player interface enumeration ***
@@ -238,6 +247,79 @@
;------ can seperate CHIP DATA form CODE (and you should do this!).
+ STRUCTURE DTN_NoteStruct,0
+ APTR nst_Channels ;pointer to a list of notechannels */
+ ULONG nst_Flags ;misc flags (see below) */
+ ULONG nst_MaxFrequency ;max. frequency of this player (28,867 Hz in DMA mode) */
+ UWORD nst_MaxVolume ;max. volume of this player (in most cases 64) */
+ STRUCT nst_Reserved,18 ;reserved for future use (must be 0 for now) */
+ LABEL DTN_NoteStruct_SIZEOF
+
+
+ STRUCTURE DTN_NoteChannel,0
+ APTR nch_NextChannel ;next channel in the list (NULL if last) */
+ ULONG nch_NotePlayer ;for use by the noteplayer (the deliplayer must ignore this) */
+ WORD nch_Reserved0 ;reserved for future use (must be 0 for now) */
+ UBYTE nch_Private ;just what it says */
+ UBYTE nch_Changed ;what has changed since last call */
+ WORD nch_StereoPos ;set this field when the InitNote function is called */
+ WORD nch_Stereo ;describes "where" this channel is supposed to play */
+ APTR nch_SampleStart ;^sampledata */
+ ULONG nch_SampleLength ;size of sample */
+ APTR nch_RepeatStart ;^repeat part of sample */
+ ULONG nch_RepeatLength ;size of repeat part */
+ ULONG nch_Frequency ;frequency (or period) of sample */
+ UWORD nch_Volume ;volume of sample */
+ STRUCT nch_Reserved1,26 ;reserved for future use (must be 0 for now) */
+ LABEL DTN_NoteChannel_SIZEOF
+
+
+NSTB_Dummy EQU 0 ; only a dummy-NoteStruct (no NotePlayer
+ ; needed)
+NSTF_Dummy EQU 1<<0
+NSTB_Period EQU 1 ; Amiga period supplied instead of frequency
+NSTF_Period EQU 1<<1
+NSTB_ExtPeriod EQU 2 ; Extended period (period*4) supplied instead
+ ; of frequency
+NSTF_ExtPeriod EQU 1<<2
+NSTB_NTSCTiming EQU 3 ; Period/ExtPeriod supplied in NTSC instead of
+ ; PAL
+NSTF_NTSCTiming EQU 1<<3
+NSTB_EvenLength EQU 4 ; Samplelength supplied as WORD instead of
+ ; LONG
+NSTF_EvenLength EQU 1<<4
+NSTB_AllRepeats EQU 5 ; play Repeats even if no One-Shot part was
+ ; played yet
+NSTF_AllRepeats EQU 1<<5
+
+NSTB_Reverse EQU 8 ; little endian byte ordering
+NSTF_Reverse EQU 1<<8
+NSTB_Signed EQU 9 ; sample data is signed linear
+ ; (2's complement)
+NSTF_Signed EQU 1<<9
+NSTB_Unsigned EQU 10 ; -"- unsigned linear
+NSTF_Unsigned EQU 1<<10
+NSTB_Ulaw EQU 11 ; -"- U-law (logarithmic)
+NSTF_Ulaw EQU 1<<11
+NSTB_Alaw EQU 12 ; -"- A-law (logarithmic)
+NSTF_Alaw EQU 1<<12
+NSTB_Float EQU 13 ; -"- IEEE floats
+NSTF_Float EQU 1<<13
+
+NSTB_7Bit EQU 16 ; sample data is in 7-bit format
+NSTF_7Bit EQU 1<<16
+NSTB_8Bit EQU 17 ; -"- bytes
+NSTF_8Bit EQU 1<<17
+NSTB_16Bit EQU 18 ; -"- 16-bit words
+NSTF_16Bit EQU 1<<18
+NSTB_24Bit EQU 19 ; -"- 24-bit data
+NSTF_24Bit EQU 1<<19
+NSTB_32Bit EQU 20 ; -"- longwords
+NSTF_32Bit EQU 1<<20
+NSTB_64Bit EQU 21 ; -"- quadwords
+NSTF_64Bit EQU 1<<21
+
+
;---------------------------- Global Variables ------------------------------
STRUCTURE DeliTrackerGlobals,0
Re: Whats the file format of delitracker CUSTOM?
Thanks, this had been useful a year back when we didn't have eagleplayer Amplifier support:)kyz wrote: Hmm. It used to be in TFMX_v1.6.7 editor on ExoticA. It came both with Jon's TFMX source and the deliplayer6.i file. Now I can only find the source alone, at http://exotica.fix.no/source/replays/De ... MX_note2.s
Good job I have the deliplayer6.i file in my includes :)
btw. Eagleplayer guys are great. They sent us parts of their amplifier source code for reference.
shd / uade team
Re: Whats the file format of delitracker CUSTOM?
Im wanting to convert the music from the AMiga game 'Hybris' to MOD.shd wrote:
If SID tunes are like that, custom format is totally different.
What are you trying to achieve? Perhaps I can help you if you have well specified questions..
shd / uade team
http://ee.tut.fi/~heikki/uade.html
I know people stress the fact that its best to have the music in its original format but i would like to be able to load the music into a MOD tracker/editor.
I just want to know what sort of problems i would run into by doing so as for as loss of the conent of the original song? The game and music is fairly old so i would imagine protracker would cover pretty much every effect done in the songs?
The player code looks well written but trying to just brute force reverse the format would drive me 'postal', which is why im thinking of considering to find replay source of other players and go from there coz im sure its a predecessor of some other player allready known.
I found a version of hybris that someone claimed to have converted it to fred player and when u replay it , it sounds just very slightly different but may be a phenomenon of the replay rutine.
I havent yet compared the play rutines of all the exotica versions and the other so called [fred version] that i have but the custom format is fairly straightforward and from the delitracker development package theres enuf info for someone to make there own custom module.
Also on a side note, its interesting that the oldSkool modplayer plugin for winamp can jump ahead in a custom module.I wonder if its calling the 'update runtine' a bunch of times to 'catch up' but dont have a clue as to how it manages to back up in song like it does. And i know its having to use the 68000 emulation code to do all this.
Re: Whats the file format of delitracker CUSTOM?
Good luck.destop wrote: Im wanting to convert the music from the AMiga game 'Hybris' to MOD.
Probably, but not necessarily. Most players are more or less sample players, but policies for effects vary. It could be that protracker and the other have same kind of mechanism, but they're somewhat different.destop wrote: I just want to know what sort of problems i would run into by doing so as for as loss of the conent of the original song? The game and music is fairly old so i would imagine protracker would cover pretty much every effect done in the songs?
Going ahead should work basically like that. Going back is just buffering sample data and halting the cpu emulator;) 1 minute of 44.1kHz 16-bit stereo takes only 10MB of memory. It's nothing these days, you can easily buffer 5-6 minutes of sound data:)destop wrote: Also on a side note, its interesting that the oldSkool modplayer plugin for winamp can jump ahead in a custom module.I wonder if its calling the 'update runtine' a bunch of times to 'catch up' but dont have a clue as to how it manages to back up in song like it does. And i know its having to use the 68000 emulation code to do all this.
shd / uade team