From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search

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.

You can extract (rip) CPC music (or from another 8-16bit system) with your emulator to YM file and convert to AYC file to use it on CPC. The author of this great idea is Madram from Overlanders.

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...

AYCplayer - CPC screen view

- 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:

  • Header
  • Data


The header contains info about the tune duration, the registers data offset in the file and the buffers sizes for decompression.

Offset Size Description
#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)

Sample File

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.

JimPower AYC 2.jpg

  • 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] [1] 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?