rewrite part of X1-010 doc

This commit is contained in:
tildearrow 2023-09-11 23:29:14 -05:00
parent 5a467f0c9b
commit b23b201c15

View file

@ -1,27 +1,15 @@
# Seta/Allumer X1-010 # Seta/Allumer X1-010
a sound chip designed by Seta, mainly used in their own arcade hardware from the late 80s to the early 2000s. the X1-010 is a chip used by Seta (and Allumer) in the Seta 1 and 2 arcade boards.
it has 2 output channels, but there is no known hardware taking advantage of stereo sound capabilities.
later hardware paired this with external bankswitching logic, but this isn't emulated yet.
Allumer rebadged it for their own arcade hardware.
it has 16 channels, which can all be switched between PCM sample or wavetable playback mode. it has 16 channels of wavetable sound with some support for 8-bit samples up to 128KB in length.
wavetable playback needs to paired with envelope, similar to AY PSG, but shapes are stored in RAM and as such are user-definable. the sample frequency resolution is pretty bad in the low end though...
in Furnace, this chip can be configured for original arcade mono output or stereo output - it simulates early 'incorrect' emulation on some mono hardware, but it is also based on the assumption that each channel is connected to each output. even though this chip has stereo output, no board (as far as we know) uses the two outputs that it has... instead, only one output is connected, effectively being used as a mono chip.
## waveform types the chip also has some (complicated) volume envelope capabilities, with some of its memory being usable for that purpose.
this chip supports 2 types of waveforms, needs to be paired to external 8 KB RAM to access these features: this chip was the inspiration for Organya/PxTone (the former being used in a well-known game called Cave Story).
one is a signed 8 bit mono waveform, operated like other wavetable based sound systems.
these are stored at the lower half of RAM at common case.
the other one ("Envelope") is a 4 bit stereo waveform, multiplied with the above and calculates final output, each nibble is used for each output channel.
these are stored at the upper half of RAM at common case.
both waveforms are 128 bytes (fixed size), freely allocated at each half of RAM except the channel register area: each half can store total 32/31 waveforms at once.
in Furnace, you can enable the envelope shape split mode. when it is set, its waveform will be split to the left and right halves for each output. each max size is 128 bytes, total 256 bytes.
## effects ## effects
@ -34,8 +22,8 @@ in Furnace, you can enable the envelope shape split mode. when it is set, its wa
- range is 1.95KHz to 498KHz if the chip clock is 16MHz. - range is 1.95KHz to 498KHz if the chip clock is 16MHz.
- `22xx`: **set envelope mode.** - `22xx`: **set envelope mode.**
- bit 0 sets whether envelope will affect this channel. - bit 0 sets whether envelope will affect this channel.
- bit 1 toggles the envelope one-shot mode. when it is set, channel is halted after envelope cycle is finished. - bit 1 sets whether envelope will run once instead of looping.
- bit 2 toggles the envelope shape split mode. when it is set, envelope shape will be split to left half and right half. - bit 2 sets whether split mode is used. I don't know what it does.
- bit 3/5 sets whether the right/left shape will mirror the original one. - 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. - bit 4/6 sets whether the right/left output will mirror the original one.
- `23xx`: **set envelope period.** - `23xx`: **set envelope period.**