Changes

AYC

1,224 bytes added, 09:15, 11 May 2016
----
- Dual Module Player by Hermol
 
http://www.cpc-power.com/index.php?page=detail&num=5251
- TsP The Soundtrackker Player by TomEtJerry
http://www.cpc-power.com/index.php?page=detail&num=5075
== AYC file format ==
----
An AYC file is basically just a particular YM file that has been compressedusing a Lempel-Ziv like algorithm.<br />
There are two main sections inside an AYC file:<br />
* Header
* Data
 
=== Header ===
| #00 || 2 || Song duration (number of vertical refresh period)
|-
| #02 || 1 || Buffer size <sup>1</sup> for register 0
|-
| #03 || 2 || Crunched data offset <sup>2</sup> in the file for register 0
|-
| ...
|-
| 3*n + #02 || 1 || Buffer size <sup>1</sup> for register n
|-
| 3*n + #03 || 2 || Crunched data offset <sup>2</sup> in the file for register n
|-
| ...
|-
| #29 || 1 || Buffer size <sup>1</sup> for register 13
|-
| #2A || 2 || Crunched data offset <sup>2</sup> in the file for register 13
|-
| #2C || 6 || RESERVED (defaulted to #FFFFFFFFFFFF)
|}
1. There are only 2 Two sizes originally defined in the AYC file format, #01 = 256 bytes, #04 = 1024 bytes<br />2. Offsets are relativeRelative 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 === Data === All registers data have the same format, which is a mix of Patterns and Flags.<br />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 bufferFlags 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.<br />Let's analyse this to understand how it works. [[File:JimPower_AYC_2.jpg]] ===== Header =====* 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)* ...
== ToDo ==
289
edits