﻿=====================================================================================
YM2612 - FMDrive - GenMDM - Test LOG 2013 Aly James

=====================================================================================


GENMDM operators
-------------------------------------------------------------------------------------
First it seems that you use the incorrect operators order as found in the sega doc (this error is present in the sega doc but has been corrected since then) and that could be the main reason of the special mode problem. This do not impact the current implementation except maybe the special mode...

Operator 2 and 3 must be swapped

GenMDM docs says:
* The 8 FM algorithms are as follows:
* Algorithm 00: OP1 (m) --> OP2(m)  --> OP3 (m) --> OP4 (c)
* Algorithm 01: OP1 (m) && OP2 (m) --> OP3 (m) --> OP4 (c)
* Algorithm 02: (OP1 (m) && (OP2 (m) --> OP3 (m))) --> OP4 (c)
* Algorithm 03: ((OP1 (m) --> OP2 (m)) && OP3 (m)) --> OP4 (c)
* Algorithm 04: OP1 (m) --> OP2 (c) && OP3 (m) --> OP4 (c)
* Algorithm 05: OP1 (m) --> (OP2 (c) && OP3 (c) && OP4 (c))
* Algorithm 06: OP1 (m) --> OP2 (c) && OP3 (c) && OP4 (c)
* Algorithm 07: OP1 (c) && OP2 (c) && OP3 (c) && OP4 (c)

This should be
* The 8 FM algorithms are as follows:
* Algorithm 00: OP1 (m) --> OP3(m)  --> OP2 (m) --> OP4 (c)
* Algorithm 01: OP1 (m) && OP3 (m) --> OP2 (m) --> OP4 (c)
* Algorithm 02: ((OP3 (m) --> OP2 (m)) && OP1 (m)) --> OP4 (c)
* Algorithm 03: ((OP1 (m) --> OP3 (m)) && OP2 (m)) --> OP4 (c)
* Algorithm 04: OP1 (m) --> OP3 (c) && OP2 (m) --> OP4 (c)
* Algorithm 05: OP1 (m) --> (OP2 (c) && OP3 (c) && OP4 (c))
* Algorithm 06: OP1 (m) --> OP2 (c) && OP3 (c) && OP4 (c)
* Algorithm 07: OP1 (c) && OP2 (c) && OP3 (c) && OP4 (c)
-------------------------------------------------------------------------------------
SPECIAL MODE
when in special mode, GenMDM do the following:
CH13 controls OP3 //works fine
CH12 controls OP1 // works fine
CH11 controls OP2 // velocity do not map to the volume except if TL volume of OP1 is set.

Also one last thing on all channels (11,12,13) the velocity mapping do not cover the entire range of TL (velocity 127 is not equal to TL 0 but more like TL 15 or so).


-------------------------------------------------------------------------------------
D2R bug

RANGE do not work. should be 0 - 31, only works in limited 0-15 for operator 1 (M1 the feedback operator). 
* Secondary Decay Rate OP 1				51		32
* Secondary Decay Rate OP 2				52		32
* Secondary Decay Rate OP 3				53		32
* Secondary Decay Rate OP 4				54		32

-------------------------------------------------------------------------------------
PSG side: channels 1,2,3,4

Not mentioned in the CC list but:
CC#11 (expression)
can control the PSG volume too, witch is great but it only affect PSG channel 1 and 2.
PSG channel 3 CC#11 seems to affect volume on PSG channel 1
CC#85 do not work on either.
CC#42 on channel 1 : seems to change the TET tunning on channel 1 but also affect channel 02
CC#42 on channel 2 : seems to change the TET but only affect channel 03
CC#42 on channel 3 : seems to change the TET but only affect channel 01

On a side note it would be great to include a CC to control the pitchbend range like on
the SN76489 interface code, I use that with my SPSG VST to use arp & pitch envelopes.
actually in GenMDM 102 writing pitch data seems to rewrite velocity data and conflict with amplitude envelope received via CC 11 at the same time.
see>>
http://chipmusic.org/forums/topic/12578/master-system-vst-super-psg-sn76489-ay38910-eg-extended/

-------------------------------------------------------------------------------------
VGM Logger:
CC#114 set above 65
GenMDM do not output any CC Message.