SGDK download page
It took sometime but here it is :
- 5 FM + 4 PSG + 4 PCM @14 Khz playback
- 16 priority levels for SFX play through PCM.
- support music pause / resume command.
It's still buggy on real hardware, it was working at some point but i broke it while doing later changes (there is still note playing after a pause command).
- no size limit for XGM music data or PCM data.
- PCM have their size and address aligned to 256 bytes.
- 100% running on Z80
- protection against DMA contention to preserve good PCM playback quality (not 100% guaranteed depending the driver load).
The XGM format is similar to VGM in the way it uses chip writes logging but is optimized for the Sega Megadrive where VGM support various systems. Because of that the XGM file size is usually about 30% smaller than VGM file (of course i am speaking about optimized VGM).
The advantage of using that type of format is that SGDK enable VGM playback directly through the XGM driver !
I developed a new tool (xgmtool) which convert a VGM file into a XGM file, it was a pain in the ass to convert my java tool in C but it's working now

There are restrictions in the VGM optimization and the XGM convertion: the XGM format uses frame based timing so if a VGM file use sub frame timing then the conversion may fails...
Currently there is unfortunately no tracker taking advantages of the XGM 4 PCM channels but i hope it will in future (I will try to discuss about it with Delek and it would be nice to have it supported in the YMDj tracker as well) ^^
At least in the meantime it can be used to play multiples SFX at the same time !
For those who are interested, here are the XGM format specifications:
https://sgdk.googlecode.com/svn/trunk/bin/xgm.txt
Note that the Z80 XGM driver does not directly play the XGM file, it requires a compiled XGM file (thanks to xgmtool) which is very similar to the XGM format with some slight changes to make file parsing a bit easier for the Z80 =)
You can find an example in the usual sound sample:
source and binary