Generic Standard file in CPC music. Really is a de-compressed and re-compressed YM file.
The "plain" YM format can not be played on CPC, because it uses LHA packing which is not unpackable in realtime. You need the AYC toolkit or YMcruncher to convert them to AYC, then you should be able to play them with various tools.
AYC players (inside CPC system)
- AYCplayer by OVL (MadRam & Beb = Overlanders) [Thanks to F-Key to preserve it] New font screen, a trick to pass the slow and weighty 16k screen...
- Media:Aycplay.zip (zipped .DSK file)
- Dual Module Player by Hermol
- TsP The Soundtrackker Player by TomEtJerry
YM to AYC utils
- CPC amsdos --> YM2AY (Kit ayc) by MadRam
- PCwin --> YMcruncher by F-key
AYC file format
An AYC file is basically just a particular YM file that has been compressed using a Lempel-Ziv like algorithm.
There are two main sections inside an AYC file:
The header contains info about the tune duration, the registers data offset in the file and the buffers sizes for decompression.
|#00||2||Song duration (number of vertical refresh period)|
|#02||1||Buffer size1 for register 0|
|#03||2||Crunched data offset2 in the file for register 0|
|3*n + #02||1||Buffer size1 for register n|
|3*n + #03||2||Crunched data offset2 in the file for register n|
|#29||1||Buffer size1 for register 13|
|#2A||2||Crunched data offset2 in the file for register 13|
|#2C||6||RESERVED (defaulted to #FFFFFFFFFFFF)|
1. Two sizes defined in the AYC file format, #01 = 256 bytes, #04 = 1024 bytes
2. Relative offsets, you must add n*3+4 to each value (where n is the register number), offset "#2E" for register 0 means that data starts at #2E + 0*3 + 4 = #32
All registers data have the same format, which is a mix of Patterns and Flags.
A Pattern can be of two types :
- a Byte which can be directly send to the PSG
- a Previously played Pattern identified by an offset and a length in the deflated buffer
Flags are included in the stream of Patterns to indicate the type of Pattern.
To be finished as soon as possible (Fkey)
The marvelous "Jim power 2.ym" has been converted to the AYC format and the following is what we get for the header.
Let's analyse this to understand how it works.
- Song length in VBL is : #1CE5 ( ~ 2 minutes 27 seconds)
- Register 0 buffer size is #100 bytes
- Register 0 Offset is calculated as follow : #002E + 4 + (3 x 0)= #0032
- Register 1 buffer syize is #100 bytes
- Register 1 Offset is calculated as follow : #03B2 + 4 + (3 x 1) = #03B9
- Register 2 buffer size is #100 bytes
- Register 2 Offset is calculated as follow : #04DA + 4 + (3 x 2)
- There is only one PC command line util YMTOOL [ST-Sound Download]  to edit info inside YM files. It is needed a "windowed" version more easy and quick to use.
- SymAmp don't read AYC files, sig! Any coder?