mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-14 00:35:06 +00:00
57 lines
2.2 KiB
Markdown
57 lines
2.2 KiB
Markdown
# 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.
|
|
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.
|
|
|
|
emulation of this chip in Furnace is now complete thanks to community efforts and hardware testing, which an MSX board called Darky has permitted.
|
|
|
|
as of Furnace 0.6pre7, AY8930 supports software PCM, where all 3 channels can play 5-bit PCM samples (at the cost of a very high CPU usage)
|
|
|
|
# effects
|
|
|
|
- `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.**
|
|
- `x` sets the envelope shape, which may be one of the following:
|
|
- `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
|
|
- if `y` is 1 then the envelope will affect this channel.
|
|
- `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.**
|
|
- 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.
|
|
- if `x` or `y` are 0 this will disable auto-envelope mode.
|