diff --git a/papers/doc/7-systems/README.md b/papers/doc/7-systems/README.md index fcf2e886..6d428f3e 100644 --- a/papers/doc/7-systems/README.md +++ b/papers/doc/7-systems/README.md @@ -22,6 +22,7 @@ this is a list of systems that Furnace supports, including each system's effects - [Philips SAA1099](saa1099.md) - [Microchip AY8930](ay8930.md) - [VERA](vera.md) +- [tildearrow Sound Unit](soundunit.md) - [Seta/Allumer X1-010](x1-010.md) - [WonderSwan](wonderswan.md) - [Bubble System WSG](bubblesystem.md) diff --git a/papers/doc/7-systems/soundunit.md b/papers/doc/7-systems/soundunit.md new file mode 100644 index 00000000..08a7676b --- /dev/null +++ b/papers/doc/7-systems/soundunit.md @@ -0,0 +1,43 @@ +# tildearrow Sound Unit +This is a fantasy sound chip, used in the specs2 fantasy computer designed by tildearrow. It includes native support for sample playback, but with only 20K of sample data. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed. +# Effects +- `10xx`: set waveform + - 0: pulse wave + - 1: sawtooth + - 2: sine wave + - 3: triangle wave + - 4: noise + - 5: periodic noise + - 6: XOR sine + - 7: XOR triangle +- `12xx`: set waveform (0 to 7F) +- `13xx`: set resonance of filter (0 to FF) + - despite what the internal effects list says (0 to F), you can use a resonance value from 0 to FF (255) +- `14xx`: set filter mode and ringmod + - bit 0: ring mod + - bit 1: low pass + - bit 2: high pass + - bit 3: band pass +- `15xx`: set frequency sweep period low byte +- `16xx`: set frequency sweep period high byte +- `17xx`: set volume sweep period low byte +- `18xx`: set volume sweep period high byte +- `19xx`: set cutoff sweep period low byte +- `1Axx`: set cutoff sweep period low byte +- `1Bxx`: set frequency sweep boundary +- `1Cxx`: set volume sweep boundary +- `1Dxx`: set cutoff sweep boundary +- `1Exx`: set phase reset period low byte +- `1Fxx`: set phase reset period high byte +- `20xx`: toggle frequency sweep + - bit 0-6: speed + - bit 7: up direction +- `21xx`: toggle volume sweep + - bit 0-4: speed + - bit 5: up direction + - bit 6: loop + - bit 7: alternate +- `22xx`: toggle cutoff sweep + - bit 0-6: speed + - bit 7: up direction +- `4xxx`: set cutoff (0 to FFF)