My point is NOTHING about AICA is well (or at all) documented. It's not SH4 with beautiful doc from Hitach that basically delivers C-like emulator code for the core. Actually the bits of information that are available (including some SEGA manuals I happened to find) are often plain wrong or misleading. I've spent much of my free time doing reasearch on that - reading, coding and finally probing the hardware. So please think twice next time you want to say this is "doing stuff from manuals".

Having said that, I don't really know that much about DSFs. We all did our MOD-players at some point but this is where I stopped (touching a bit of Adlib FM on the way). I can't help you with that but if you have any AICA specific questions I might be of some assistance. To point out few things:

+#define ISEL(slot) ((slot->[0x20/2]>>0x4)&0x000F)
+#define IMXL(slot) ((slot->[0x20/2]>>0x0)&0x000F)

This is wrong, I mean the ISEL is bits 0:3 and IMXL is 4:7. At least that's how I have it.
Also after a few tests I've came to conclusion that you cannot re-start the channel to play by setting Key-on to one if it has not been set to zero earlier. Even if it stopped on it's own. Not much point in checking if the AEG is in release phase when turning it on. Slot's KON bit is NOT being reset to zero by hardware at any time. Never ever. All this AEG code needs some reworking, including the co-efficient calculations. But good news is it should still work as it is now - for the time being smile
DSFs will most likely not need it but there are feedback registers on AICA that tell you at what point given channel AE/FE generator is, what phase, and at what sample address. This is mostly used for looping long streams properly. If there is code that reads back AEG status - beware. It's very tricky, actually overflows over zero for long times (> ca. 7sec). Quite frankly there are TONS of those quirks all over AICA (like interrupt priorities) but fortunately no or very little code ever uses that stuff. You will need to sort some of those out for MESS though.