mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-06 12:55:05 +00:00
6c432bc42e
Improvement documents
46 lines
2.6 KiB
Markdown
46 lines
2.6 KiB
Markdown
# Seta/Allumer X1-010
|
|
|
|
One of sound chip originally designed by Seta, mainly used at their arcade hardwares at late-80s to early-2000s.
|
|
it has 2 output channel, but no known hardware using this feature for stereo sound.
|
|
later hardware paired this with external bankswitching logic, but its logic is not emulated now in current furnace revision.
|
|
Allumer one is just rebadged Seta's thing for use in their arcade hardwares.
|
|
|
|
It has 16 channels, and all channels can be switchable to PCM sample or wavetable playback mode.
|
|
Wavetable needs to paired with envelope, this feature is similar as AY PSG but it's shape are stored at RAM: it means it is user-definable.
|
|
|
|
In furnace, this chip is can be configurable for original arcade mono output or stereo output - its simulates early 'incorrect' emulation on some mono hardware but it is also based on the assumption that each channel is connected to each output.
|
|
|
|
# waveform type
|
|
|
|
This chip supports 2 type waveforms, needs to paired external 8KB RAM for use these feature:
|
|
|
|
One is signed 8 bit mono waveform, its operated like other wavetable based sound systems.
|
|
These are stored at bottom half of RAM at common case.
|
|
|
|
Another one ("Envelope") is 4 bit stereo waveform, its multiplied with above and calculates final output, Each nibble is used for each output channels.
|
|
These are stored at upper half of RAM at common case.
|
|
|
|
Both waveforms are 128 byte fixed size, its freely allocated at each half of RAM except channel register area: each half can be stored total 32/31 waveforms at once.
|
|
|
|
# effects
|
|
|
|
- `10xx`: change wave.
|
|
- `11xx`: change envelope shape. (also wavetable)
|
|
- `17xx`: toggle PCM mode.
|
|
- `20xx`: set PCM frequency. (1 to FF)*
|
|
- `22xx`: set envelope mode.
|
|
- bit 0 sets whether envelope will affect this channel.
|
|
- bit 1 sets whether envelope one-shot mode. when it sets, channel is halted after envelope cycle is ended.
|
|
- bit 2 sets whether envelope shape split mode. when it sets, envelope shape will splitted to left half and right half.
|
|
- bit 3/5 sets whether the right/left shape will mirror the original one.
|
|
- bit 4/6 sets whether the right/left output will mirror the original one.
|
|
- `23xx`: set envelope period.
|
|
- `25xx`: slide envelope period up.
|
|
- `26xx`: slide envelope period down.
|
|
- `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.
|
|
|
|
* PCM frequency: 255 step, fomula: `step * (Chip clock / 8192)`; 1.95KHz to 498KHz if Chip clock is 16MHz.
|