2022-01-16 06:10:43 +00:00
# Microchip AY8930
a backwards-compatible successor to the AY-3-8910, with increased volume resolution, duty cycle control, three envelopes and highly configurable noise generator.
sadly, this soundchip has only ever observed minimal success, and has remained rather obscure since.
2023-06-25 07:05:30 +00:00
it is best known for being used in the Covox Sound Master, which didn't sell well either. it also observed very minimal success in Merit's CRT-250 machines, but only as a replacement for the AY-3-8910.
2022-01-16 06:10:43 +00:00
2022-10-16 05:53:05 +00:00
emulation of this chip in Furnace is now complete thanks to community efforts and hardware testing, which an MSX board called Darky has permitted.
2022-01-16 06:10:43 +00:00
2023-07-09 12:07:57 +00:00
as of Furnace 0.6pre7, AY-8930 supports software PCM, where all 3 channels can play 5-bit PCM samples (at the cost of a very high CPU usage)
2022-01-16 06:10:43 +00:00
# effects
2023-06-25 07:05:30 +00:00
- `12xx` : **set channel duty cycle.**
- `0` : 3.125%
- `1` : 6.25%
- `2` : 12.5%
- `3` : 25%
- `4` : 50%
- `5` : 75%
- `6` : 87.5%
- `7` : 93.75%
- `8` : 96.875%
- `20xx` : **set channel mode.** `xx` may be one of the following:
- `0` : square
- `1` : noise
- `2` : square and noise
- `3` : envelope
- `4` : envelope and square
- `5` : envelope and noise
- `6` : envelope and square and noise
- `7` : nothing
- `21xx` : **set noise frequency.** `xx` is a value between `00` and `FF` .
- `22xy` : **set envelope mode.**
2022-01-16 06:10:43 +00:00
- `x` sets the envelope shape, which may be one of the following:
2023-06-25 07:05:30 +00:00
- `0` : `\___` decay
- `4` : `/___` attack once
- `8` : `\\\\` saw
- `9` : `\___` decay
- `A` : `\/\/` inverse obelisco
- `B` : `\¯¯¯` decay once
- `C` : `////` inverse saw
- `D` : `/¯¯¯` attack
- `E` : `/\/\` obelisco
- `F` : `/___` attack once
2022-01-16 06:10:43 +00:00
- if `y` is 1 then the envelope will affect this channel.
2023-06-25 07:05:30 +00:00
- `23xx` : **set envelope period low byte.**
- `24xx` : **set envelope period high byte.**
- `25xx` : **slide envelope period up.**
- `26xx` : **slide envelope period down.**
- `27xx` : **set noise AND mask.**
- `28xx` : **set noise OR mask.**
- `29xy` : **enable auto-envelope mode.**
2022-01-20 08:23:03 +00:00
- in this mode the envelope period is set to the channel's notes, multiplied by a fraction.
- `x` is the numerator.
- `y` is the denominator.
2022-02-01 20:15:05 +00:00
- if `x` or `y` are 0 this will disable auto-envelope mode.