The Eagleplayer offers a lot of new possibilities, which are described
within the following chapters. The 3 TAGS listed below are usable for
custom modules: (the Delitracker ignored them)
DTP_PlayerName
DTP_Creator
DTP_ExtLoad
The most important news are the new @{"Eagleplayer-Tags" Link "Die neuen Tags"},
the @{"ModuleInfo-Function" Link "ModuleInfo"}, @{"Analyzersupport" Link "Analyzeransteuerung"} and the new @{"Globals" Link "Die neuen Eagleplayer-Globals"}.
@EndNode
@Node "Die neuen Tags"
6.6.1 The new Tags
--------------------
EP_Get_ModuleInfo (FPTR) - This function of the replayer has to return within
the register A0 a fully initialized Moduleinfo-
taglist or zero for no taglist.
see also chapter 6.6.2 Moduleinfo
NOTE: it`s possible that this function is called
when no module was loaded, think of that !!
EP_Free_ModuleInfo (FPTR) - This optional function is for example to free
previously allocated memory for the Moduleinfo-
taglist. No return values expected.
EP_Voices (FPTR) - using this function the informations about the 4 voices
will be given by the Eagleplayer in D0. If the bit for
the voice set, the voice is enabled, if the bit was
cleared, the voice is disabled
Bit 0 = Voice 0;Bit 1 = Voice1;Bit 2= Voice 2;
Bit 3 = Voice3
EP_Structinit (FPTR) - returns in A0 a pointer to a UPS_USER structure in
which the replayer puts the informations for the
Analyzerprograms (Userprograms) or ZERO. This structure
will then be given to all Userprograms which use the
infos of it.
EP_StructEnd (FPTR) - optional, e.g. to free the memory used for the structure
EP_LoadPlConfig (FPTR) - calls the routine loading the configuration of this
replayer (usually 'ENV:Eagleplayer/xxx.config' )
EP_SavePlConfig (FPTR) - calls the routine saving the configuration of this
replayer (usually 'ENVARC:Eagleplayer/x.config')
(advise of the authors)
EP_GetPositionNr (FPTR) - returns in D0.l the actual Pattern-number played at
this time. This value will be scrolled into the Main
window of the Eagleplayer
EP_SetSpeed (FPTR) - for players with own timer this function gives you the
possibility using the speed-propgedget. Therefore in
D0 there will you find the actual speed value between
-25 and +25. 0 means the standard speed, if the speed
should be higher, this value is positive, for lower
speed negative
EP_Flags (LONG) - These flags within "TI_Data" of this tag show which
functions the player basically supports and must exist !!
This Tag was included because we wrote "self modifying"
players which change the module to support Analyzer,Voices,
Volume...
When the internal replays of this module differ to another
then it may happen that the replayer can`t change the module
in this way we need it so that one or the other function
won`t be available from module to module.
Therefore the following flagbits for showing the basic
abilities of the replayer in the Player window:
EPF_Songend - the replayer supports Songend
EPF_Restart - the module is restartable (partially
impossible)
EPF_Disable - The player is disabled
EPF_NextSong - supports next subsong
EPF_PrevSong - supports previous subsong
EPF_NextPatt - supports jump to next pattern
EPF_PrevPatt - supports jump to previous pattern
EPF_Volume - volumecontrol possible
EPF_Balance - balance possible
EPF_Voices - can change the state of the voices
EPF_Save - module can be saved
EPF_Analyzer - Analyzer-support
EPF_ModuleInfo- can tell infos to the current module
EPF_SampleInfo- infos to the samples of the current mod
EPF_Packable - module may be packed
EPF_VolVoices - volume of each voice can be different to the
next (EPG_VolVoice1...)
EP_KickVersion (WORD) - minimal Kickstartversion (37 for Kick 2.0)
EP_PlayerVersion (LONG)- minimal Eagleplayerversion, if the replayer may
only be loaded by the Eagleplayer you must specify
"DTP_RequestDTVersion,$7fffffff" additionally
EP_EjectPlayer (FPTR) - if the replayer allocates any memory, filelocks etc.
it can be freed at this point. Then the replayer will
be thrown out of the memory.
EP_Date (LONG) - date of creating this replayer e.g.
dc.l EP_Date
dc.b 04,11,19,93 -> November the 4th in 1993
EP_Check3 (FPTR) - Checkroutine, called after loading the first 1000 bytes of
the module. If it was recognized it will be loaded into
fastmem.
NOTE: Using this check you may not pack the module, so if
you wanna also packed modules, use DTP_check2 additionally.
@EndNode
@Node "Moduleinfo"
6.6.2 Moduleinfo
------------------
For the moduleinfo-function the Eagleplayer offers some Tags which can give
the user almost all informations about the actual module. The taglist will
be overtaken by the Eagleplayer it calls the routine specified in the
"EP_Moduleinfo" Tag within A0 (see also chapter 6.6.1). Please notice that
currently not all informations will be displayed in the scroller of the main
window. In a future version there will be a window telling these informations
completely.
MI_SongName (STRPTR) - Name of the module (like in the sound/protracker ones)
If you give a ZERO to TI_Data an "unknown" appears as
songname. This is a very comfortable method getting
the right name of ripped modules.
MI_AuthorName (STRPTR) - Name of the guy writing this song. If you return
a ZERO in TI_Data, the Eagleplayer displays an
"unknown".
MI_SubSongs (LONG) - Number of subsongs in the module
MI_Pattern (LONG) - Number of patterns in the module
MI_MaxPattern (LONG) - Max. number of patterns (e.g. Soundtracker: 64)
MI_Length (LONG) - length of the song (e.g. in Patterns) <- NOT the SIZE
MI_MaxLength (LONG) - max. length of the songs (e.g. Soundtracker 127)
MI_Steps (LONG) - number of steps (e.g. BP Soundmon)
MI_MaxSteps (LONG) - Max. number of steps
MI_Samples (LONG) - number of used samples
MI_MaxSamples (LONG) - Max. number of used samples (e.g. Protracker: 31)
MI_SynthSamples (LONG) - Number of used synthetic samples
MI_MaxSynthSamples (LONG) - max. number of sysnthetic samples
MI_Songsize (LONG) - size of the Song in Bytes (without samples !)
MI_SamplesSize (LONG) - size of the samples in Bytes
MI_ChipSize (LONG) - used Chip Memory in Bytes
MI_OtherSize (LONG) - used Fast Memory in Bytes
MI_Calcsize (LONG) - calculated size of the whole module in bytes
MI_SpecialInfo (STRPTR) - pointer to special informations as ASCII-String
MI_LoadSize (LONG) - Overall size of all files loaded (for Soundsystem loading
more than one file, e.g. Startrekker,TFMX)
MI_Unpacked (LONG) - Unpacked size in bytes (e.g. how long would a Noisepacker-
module when converting back to protracker)
MI_UnPackedSystem (LONG)(STRPTR) - tells to what soundsystem this module
normally belongs if it was packed (e.g.
with Noisepacker,Propacker,Promizer),
either an internal number (see below) or
a pointer to a string containing
the name
The following names are internayl:
MIUS_OldSoundtracker
MIUS_Soundtracker
MIUS_Noisetracker
MIUS_Protracker
MI_Prefix (STRPTR) - Pointer to the prefix for the name of the module, e.g.
'MOD.' or 'Mdat.'. So is it possible to save the module
with the real name and a matching prefix.
MI_About (STRPTR) - Pointer to a text about the player
MI_MaxSubSong (LONG) - max. number of subsongs for this sound format
MI_Voices (LONG) - Number of used voices in this format
MI_MaxVoices (LONG) - Number of max. possible Voices in this format.
@EndNode
@Node "Analyzeransteuerung"
6.6.3 Analyzer control
------------------------
The Analyzercontrol will be done via the UPS_User structure described below.
(how to offer the structure- see chapter 6.6.1 "EP_Structinit)
The structure looks this way:
STRUCTURE UPS_USER,0
APTR UPS_Voice1Adr
UWORD UPS_Voice1Len
UWORD UPS_Voice1Per
UWORD UPS_Voice1Vol
UWORD UPS_Voice1Note
UWORD UPS_Voice1SampleNr
UWORD UPS_Voice1SampleType
UWORD UPS_Voice1Repeat
LABEL UPS_Modulo
APTR UPS_Voice2Adr
UWORD UPS_Voice2Len
UWORD UPS_Voice2Per
UWORD UPS_Voice2Vol
UWORD UPS_Voice2Note
UWORD UPS_Voice2SampleNr
UWORD UPS_Voice2SampleType
UWORD UPS_Voice2Repeat
APTR UPS_Voice3Adr
UWORD UPS_Voice3Len
UWORD UPS_Voice3Per
UWORD UPS_Voice3Vol
UWORD UPS_Voice3Note
UWORD UPS_Voice3SampleNr
UWORD UPS_Voice3SampleType
UWORD UPS_Voice3Repeat
APTR UPS_Voice4Adr
UWORD UPS_Voice4Len
UWORD UPS_Voice4Per
UWORD UPS_Voice4Vol
UWORD UPS_Voice4Note
UWORD UPS_Voice4SampleNr
UWORD UPS_Voice4SampleType
UWORD UPS_Voice4Repeat
UWORD UPS_DMACon
UWORD UPS_Flags
UWORD UPS_Enabled
UWORD UPS_Reserved
LABEL UPS_SizeOF
These entries have the following meanings:
UPS_Voice?Adr - Address of the sample played currently on this voice
(must stay here as long as the sample is playing !)
UPS_Voice?Len - size of the sample played on this voice
UPS_Voice?Per - actual value of the sample period, plays a very important
role, if a period value <>0 is set here it means that a new
note was played. So the period is the most important thing
for the analyzers. If you can`t find out when you play a
new Note, please set the period every time you access
the audio hardware ($dff0A6/B6/C6/D6), this is also advised
for Samplesize and Address
UPS_Voice?Vol - Volume to be written to the hardware, do not write here the
volume you calculate from your own one and the volume currently
set in the Eagleplayer, that means when e.g. the volume you
will set basically is 64 but the Eagleplayer's volume is only
32 I don`t wanna see 32 but 64, ok ? The other way will be
used with another method (Mastervolume !)
UPS_Voice?Note- not supported yet
UPS_Voice?Samplenr - tells the actual samplenumber, neither supported yet by a
userprogram nor by a playroutine
UPS_Voice?Sampletype - Sampletype, not supported yet
UPS_Voice?Repeat - tells if the sample will be played once or with repeat,
if this value is 0 that means repeat on, if it is 1 the
repeating of the sample is off
UPS_DMACon - tells which voices are on, which are off, Bit 0 for voice 0,
bit 1 for voice 1 and so on, if the bit set the channel is
switched on (the name "UPS_DMACON" is a little bit confusing,
better was "UPS_Voices", see also at chapter 6.6.1. "EP_Voices)
UPS_Flags - Flagbits telling which possibilities of the UPS_User structure
the replayer supports
UPSFL_Adr - Sampleaddress
UPSFL_Len - SampleSize
UPSFL_Per - Sampleperiod (IMPORTANT!)
UPSFL_Vol - Volume
UPSFL_Note - Note, not supported yet
UPSFL_SNr - Samplenumber
UPSFL_STy - Sampletype, not supported yet
UPSFL_DMACon - which voices are off/on
The rest of the entries is reserved for future versions of the