Differences/Compatibility issues between different Protracker replays.
######################################################################

PTK1.0c = Protracker replay 1.0c by Lars "Zap" Hamre/Amiga Freelancers
PTK1.1b = Protracker replay 1.1b by Lars "Zap" Hamre/Amiga Freelancers
PTK2.1a	= Protracker replay 2.1a by Peter "CRAYON" Hanning / Mushrooms Studios
PTK2.3a = Protracker replay 2.3a
PTK3.0b = Protracker 3.00b Tom "Outland" Bech and Ivar "Heatseeker" J. Olsen
(Protracker 2.0a Editor by Lars "Zap" Hamre/Amiga Freelancers...
 Interesting enough The replay code of the 2.0a editor has much more in common with 3.0b
 than with it's predecessors)


mt_* and pt_* are ususally the labels of the functions in the replays.


Effect EFx:
-----------
PTK1.0c:
    mt_UpdateFunk: -> Funk repeat effect 

PTK1.1b and above
    mt_UpdateFunk: -> invert loop effect


Info: Protracker 1.0c and below had a completely different effect, when
effect 0xef was used. According to the replay it was called funk_repeat.

Later Protrackers use invert loop for the 0xef effect. So songs
using the effect will most likely sound screwed up, when played with the
wrong replay.

For testing purposes dreamfish, check out dreamfish's MOD.miami vice. It
uses "invert loop" and sounds broken with a PTK1.0c replay. Now we 
need the "evil twin", a tune using funk repeat :-)


Effect ED0:
-----------
Sylvain 'Asle' Chipaux reported one can play one sample on two channels
(LL or RR) and use the notedelay effect EDx with parameter 0 to achieve
some kind of flanging effect.
Crosschecking with the 3.0b, 2.3a replay sources and the Sources to the
Protracker 2.0a editor, the Notedelay with zero is indeed caught explicitely
in the replays and diverted to CheckMoreEffects, resulting in a much shorter
delay to process the ED command.

Interesting enough it seems the "flanging" sounds different on Protracker 3.0b
and 2.3a. Perhaps a result of the "missing" Updatefunk procedure in PTK3.0b 
CheckMoreEffects procedure and thus a quicker processing could be responsible
for this.

PTK2.3 and below:
    ...| c3 01000 | c3 01ED0 |... ->	flanging
PTK3.0:
    ...| c3 01000 | c3 01ED0 |... ->	lighter flanging


Vibrato
-------
PTK1.0C:
    mt_vib_set:	-> lsr.w #6,d0

PTK1.1b and above:
    mt_vib_set:	-> lsr.w #7,d0


Info: Vibrato depth was changed for ptk1.1b to equal Noisetracker vibrato
depth


PerNop:
-------
PTK1.0C:
    period is set in ->	mt_playvoice
			mt_CheckEfx after "and" via "beq.s"
			
PTK1.1b:
    period is set in ->	mt_playvoice
			mt_CheckEfx after "and" via "beq.s"
			mt_CheckMoreEfx

PTK2.1a:
    period is set in ->	mt_playvoice
			mt_CheckEfx after "and" via "beq.s"
			mt_CheckMoreEfx

PTK2.3a:
    period is set in ->	mt_playvoice
			mt_CheckEfx after "and" via "beq.s"
			mt_CheckMoreEfx

PK3.0B:
    period is set in -> pt_playvoice
			pt_CheckMoreEffects
    

Info: while protracker 1.1b-2.3a update the periods when playing the voices,
and while processing the effects/extended effects, ptk1.0c and ptk3.0b
only updates it twice.
The effect is recognizable with emax_enjoythesilence.mod. E.g. using
the way PTK1.0c sets the periods results in a rather flat sounding output
loosing some of its effects.


Accesing the Periodtable:
-------------------------
Info: For the effects like portamento, finetune etc. the period table is
accessed in getting the value by multiplying either 36*2. In some Protracker
this is completely screwed up...
Some use 36*2 throughout the replay and some sometimes even both...

PTK1.0C & PTK1.1b & PTK2.1a:
    36*2 for ftufound, Arpeggio3, TonePortaSetPer, GlissLoop
    37*2 for SetTonePorta, STPLoop

PTK1.1b(fixed) & PTK2.3b:
    36*2 for all
        
PTK3.0b:
    36*2 for all (37*2 for PTK3.0 with trailing zero in periodtable)


mt_UpdateFunk in CheckMoreEfx:
---------------------------------
PTK1.0c-2.3a:
    mt_UpdateFunk is called in the beginning of mt_CheckMoreEfx

PTK3.0b:
    mt_UpdateFunk is missing altogether in mt_CheckMoreEfx


Info: While Funkrepeat (0xef) is updated with the old values before the new
extended 0xe# effects are parsed, PTK3.0b doesn't. 
For testing purposes again check out dreamfish's MOD.miami vice. The weird
phasing effect differs between the PTK3.0 and 2.3 replay.


Volume setting when playing no note:
------------------------------------
Info: it seems Protracker 2.3 and below sets/updates the volume when
in playvoice skip and the no loop routine, while Protracker 3.0 sets it
after calling playvoice, and doesn't update volume in notecut.

One of the effects is volume setting without pops'n clicks in PTK3.0 when
quickly changing volumes, like  e.g. in MOD.JustforFun.


Karplusstrong effect 0xE8
-------------------------
PTK1.0-2.3
    not supported
PTK3.0:
    supported    


do_retrig
---------
PTK3.0 sets period in do_retrig, while  PTK2.3 doesn't.


PlayVoice
----------
PTK3.0 sets sample number in PLVSKIP (play voice skip), while PTK2.3
doesn't.



Portamento:
-----------
All PTK:
    very first portamento up/down effect call is ignored due to unintialised
    value. This is breaking e.g. Mod.Poseidon by uncle tom, when played
    as the very first song after starting the Tracker.

Info: Noise/Soundtracker/Startrekker will sound broken when played as
Protracker and using Portamento, so don't do it.
