CYD chip registers map - LTVA1/klystrack GitHub Wiki
This is a fictional chip regitsers map. CYD comes from the name of klystrack sound engine.
CYD chip has 128 channels, al equal in functionality. Every channel has 0.5KiB (512) of 8-bit hardware registers. Chip connects to the main control device of your choice via 8-bit data bus and 16-bit address bus. Input clock frequency can vary from 0.5 MHz to 100 MHz. You must hold signals on data and address buses for at least 1 cycle in order for chip to actually read the data.
Channels' registers banks come one after another. The last 4 registers (e.g. $1FC-$1FF
for channel 0) contain output of that channel in Sint32
variable form. Registers $FFF7-$FFFB
contain overall output data from all channels in the same format.
All registers are readable. Unused registers/bits always return 0
. *
means that bit(s) go unused.
Here only addresses of channel 0 are written. To obtain arbitrary channel’s address, simply add $1FF * channel_number
to the address from table below.
Address |
Bits: |
|
|
|
|
|
|
|
|
Sync oscs on gate enable |
Enable gate |
Pulse |
Triangle |
Sawtooth |
Noise |
Short noise period |
Enable POKEY LFSR |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
POKEY LFSR mode |
Pulse width MSBs |
||||||
|
Pulse width lower byte |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Lock noise pitch |
Noise note (only if |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Enable sample |
Lock oscillators to base note |
Lock sample to base note |
Sample: override volume envelope |
Enable relative volume |
Oscillators' mix mode |
||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Enable filter |
Filter mode |
Filter cutoff MSBs |
|||||
|
Filter cutoff lower byte |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Filter slope |
Filter resonance |
Divide oscillators frequency by 4 |
|||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Enable 1-bit noise |
Enable exponential volume |
Enable exponential attack |
Enable exponential decay |
Pitch MSBs |
|||
|
Pitch higher byte |
|||||||
|
Pitch lower byte |
|||||||
|
Sample index |
|||||||
|
Sample start offset higher byte |
|||||||
|
Sample start offset lower byte |
|||||||
|
Sample end offset higher byte |
|||||||
|
Sample end offset lower byte |
|||||||
|
Volume |
|||||||
|
Panning ( |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Attack |
Decay MSBs |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Decay LSBs |
Sustain MSBs |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Sustain lowest bit |
Release |
Enable envelope key scaling |
|||||
|
Envelope key scaling level |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Enable volume key scaling |
Enable AY envelope |
AY8930 envelope mode |
Envelope shape |
Enable ring mod |
Enable hard sync |
Send to fx bus |
|
|
Volume key scaling level |
|||||||
|
AY envelope detune frequency higher byte |
|||||||
|
AY envelope detune frequency lower byte |
|||||||
|
Ring mod source |
|||||||
|
Hard sync source |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
FX bus number |
Enable multiosc. mode |
Enable 2-op FM |
|||||
|
Multiosc mode note 1 |
|||||||
|
Multiosc mode note 2 |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
FM use sample |
FM enable exp. vol. |
FM enable exp. atk. |
FM enable exp. dec. |
FM modulator pitch MSBs |
|||
|
FM modulator pitch higher byte |
|||||||
|
FM modulator pitch lower byte |
|||||||
|
FM modulator sample index |
|||||||
|
FM modulator sample start offset higher byte |
|||||||
|
FM modulator sample start offset lower byte |
|||||||
|
FM modulator sample end offset higher byte |
|||||||
|
FM modulator sample end offset lower byte |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
FM enable additive mode |
FM enable volume key scaling |
FM enable envelope key scaling |
* |
FM freq. table (0 = OPL, 1 = OPN) |
FM feedback |
||
|
FM modulator volume |
|||||||
|
FM modulator volume key scaling level |
|||||||
|
FM modulator envelope key scaling level |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
FM modulator frequency multiplier |
FM modulator frequency divider |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
FM modulator attack |
FM modulator decay MSBs |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
FM modulator decay LSBs |
FM modulator sustain MSBs |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
FM modulator sustain lowest bit |
FM modulator release |
FM modulator enable gate |
|||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Enable exponential release |
FM enable exp. rel. |
FM enable 4-op |
4-op algorithm |
Enable expanded mode (each operator has arbitrary frequency) |
Down is the table of 4-op registers which are to come in future CYD chip revisions.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 enable noise |
Operator 1 enable pulse |
Operator 1 enable triangle |
Operator 1 enable sawtooth |
Operator 1 enable hard sync |
Operator 1 enable gate |
Operator 1 enable key sync |
Operator 1 shorten noise cycle |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 enable ring modulation |
Operator 1 enable filter |
Operator 1 enable sample |
Operator 1 sample override volume envelope |
Operator 1 enable volume key scaling |
Operator 1 enable envelope key scaling |
Operator 1 enable exponential volume |
Operator 1 enable exponential attack |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 enable exponential decay |
Operator 1 enable exponential release |
Operator 1 enable fixed noise pitch |
Operator 1 enable 1-bit noise |
Operator 1 feedback |
Operator 1 enable SSG-EG |
||
|
Operator 1 sample start offset higher byte |
|||||||
|
Operator 1 sample start offset lower byte |
|||||||
|
Operator 1 sample end offset higher byte |
|||||||
|
Operator 1 sample end offset lower byte |
|||||||
|
Operator 1 PW higher byte |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 PW LSBs |
Operator 1 pitch MSBs |
||||||
|
Operator 1 pitch higher byte |
|||||||
|
Operator 1 pitch lower byte |
|||||||
|
Operator 1 volume |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 frequency multiplier |
Operator 1 frequency divider |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 enable filter |
Operator 1 constant noise note (only in fixed pitch noise mode) |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 filter resonance |
Operator 1 filter type |
* |
|||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 filter slope |
* |
Operator 1 filter cutoff MSBs |
|||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 filter cutoff lower byte |
|||||||
|
Operator 1 volume key scaling level |
|||||||
|
Operator 1 envelope key scaling level |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 attack |
Operator 1 decay MSBs |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 decay LSBs |
Operator 1 sustain MSBs |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 sustain lowest bit |
Operator 1 release |
* |
|||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Operator 1 SSG-EG mode |
* |
Operator 1 SSG-EG frequency MSBs |
|||||
|
Operator 1 SSG-EG frequency higher byte |
|||||||
|
Operator 1 SSG-EG frequency lower byte |
|||||||
|
Operator 1 sample index |
|||||||
|
* |
|||||||
|
* |
|||||||
|
* |
|||||||
|
* |
|||||||
|
* |
| `$0000
| | | | | | | | |`