mirror of
https://github.com/tildearrow/furnace.git
synced 2024-12-03 09:47:26 +00:00
Improve SNES documentation
This commit is contained in:
parent
d3718ccaf0
commit
680851c890
1 changed files with 39 additions and 7 deletions
|
@ -1,18 +1,50 @@
|
|||
# Super NES
|
||||
|
||||
The successor to NES to compete with Genesis. Now packing with superior graphics and sample-based audio. Also known as Super Famicom.
|
||||
The successor to NES to compete with Genesis. Now packing superior graphics and sample-based audio. Also known as Super Famicom in Japan.
|
||||
|
||||
Its audio subsystem, developed by Sony, features the DSP chip, SPC700 microcontroller and 64KB of dedicated SRAM used by both. This whole system itself is pretty much a separate computer that the main CPU needs to upload its program and samples to.
|
||||
|
||||
The DSP chip can
|
||||
Furnace communicates with the DSP directly and provides a full 64KB of memory. This memory might be reduced excessively on ROM export to make up for playback engine and pattern data. As of version 0.6pre2, you can go to `window -> statistics` to see how much memory your samples are using.
|
||||
|
||||
Furnace communicates with the DSP directly and provide a full 64KB memory. This memory might be reduced excessively on ROM export to make up for playback engine and pattern data.
|
||||
Some notable features of the DSP are:
|
||||
- It has pitch modulation, meaning that you can use 2 channels to make a basic FM synth without eating up too much memory
|
||||
- It has a built in noise generator, useful for hihats, cymbals, rides, sfx, among other things.
|
||||
- It famously features per-channel echo, which unfortunately eats up a lot of memory but can be used to save channels in songs.
|
||||
- It can loop samples, but the loop points have to be multiples of 16.
|
||||
- It can invert the left and/or right channels, for surround sound.
|
||||
- It features ADSR, similar to the Commodore 64, but its functionality is closer to the OPL(L|1|2|3)'s implementation of ADSR.
|
||||
- It features an 8-tap FIR filter, which is basically a procedural low-pass filter that you can edit however you want.
|
||||
- 7-bit volume, per-channel.
|
||||
- Per-channel interpolation, which is basically a low-pass filter that gets affected by the pitch of the channel.
|
||||
|
||||
Furnace also allows the SNES to use wavetables (and the wavetable synthesizer) in order to create more 'animated' sounds, using less memory than regular samples. This, however, is not a hardware feature, and might be difficult to implement on real hardware.
|
||||
|
||||
# effects
|
||||
|
||||
Note: this chip has a signed left/right level. Which can be used for inverted (surround) stereo. A signed 8-bit value means 80 - FF = -128 - -1. Other values work normally. A value of -128 is not recommended as it could cause overflows.
|
||||
|
||||
- `10xx`: Set echo feedback level. This effect will apply to all channels.
|
||||
- `11xx`: Set echo left level (signed 8-bit). This effect will apply to all channels.
|
||||
- `12xx`: Set echo right level (signed 8-bit). This effect will apply to all channels.
|
||||
- `13xx`: Set the length of the echo delay buffer. This will also affect the size of the sample RAM!
|
||||
- `10xx`: Set waveform.
|
||||
- `11xx`: Toggle noise generator mode.
|
||||
- `12xx`: Toggle echo on this channel.
|
||||
- `13xx`: Toggle pitch modulation.
|
||||
- `14xy`: Toggle inverting the left or right channels. (x: left, y: right)
|
||||
- `15xx`: Set envelope mode. (0: ADSR, 1: gain/direct, 2: decrement, 3: exponential, 4: increment, 5: bent)
|
||||
- `16xx`: Set gain. (00 to 7F if direct, 00 to 1F otherwise)
|
||||
- `18xx`: Enable echo buffer.
|
||||
- `19xx`: Set echo delay. (0 to F)
|
||||
- `1Axx`: Set left echo channel volume.
|
||||
- `1Bxx`: Set right echo channel volume.
|
||||
- `1Cxx`: Set echo feedback.
|
||||
- `1Dxx`: Set noise generator frequency. (00 to 1F)
|
||||
- `20xx`: Set attack (0 to F)
|
||||
- `21xx`: Set decay (0 to 7)
|
||||
- `22xx`: Set sustain (0 to 7)
|
||||
- `23xx`: Set release (00 to 1F)
|
||||
- `30xx`: Set echo filter coefficient 0
|
||||
- `31xx`: Set echo filter coefficient 1
|
||||
- `32xx`: Set echo filter coefficient 2
|
||||
- `33xx`: Set echo filter coefficient 3
|
||||
- `34xx`: Set echo filter coefficient 4
|
||||
- `35xx`: Set echo filter coefficient 5
|
||||
- `36xx`: Set echo filter coefficient 6
|
||||
- `37xx`: Set echo filter coefficient 7
|
||||
|
|
Loading…
Reference in a new issue