VRC7 audio
The Konami VRC7, in addition to being a mapper chip, also produces 6 channels of 2-operator FM Synthesis Audio. It is a derivative of the Yamaha YM2413 OPLL, implementing a subset of its features and containing a custom fixed patch set.
VRC7 audio was only used in one game, Lagrange Point. The chip also appears in Tiny Toon Adventures 2, but this cart does not use the audio, and its board lacks required additional audio mixing circuitry.
Registers
Audio Register Select ($9010)
7......0 VVVVVVVV ++++++++- The 8-bit internal register to select for use with $9030
This register is write-only.
Audio Register Write ($9030)
7......0 VVVVVVVV ++++++++- The 8-bit value to write to the internal register selected with $9010
This register is write-only.
Internal Audio Registers
The VRCVII appears to have 26 internal registers. Registers $00-$07 define a custom patch that can be played on any channel set to use instrument $0. Registers $10-$15, $20-25, and $30-35 control 6 channels for FM synthesis. Other register values appear to be ignored.
Custom patch
Register | Bitfield | Description |
---|---|---|
$00 | TVSK MMMM | Modulator tremolo (T), vibrato (V), sustain (S), key scaling (K), multiplier (M) |
$01 | TVSK MMMM | Carrier tremolo (T), vibrato (V), sustain (S), key scaling (K), multiplier (M) |
$02 | KKOO OOOO | Modulator key scale level (K), output level (O) |
$03 | KK-Q WEEE | Carrier key scale level (K), unused (-), carrier waveform (Q), modulator waveform (W), feedback (E) |
$04 | AAAA DDDD | Modulator attack (A), decay (D) |
$05 | AAAA DDDD | Carrier attack (A), decay (D) |
$06 | SSSS RRRR | Modulator sustain (S), release (R) |
$07 | SSSS RRRR | Carrier sustain (S), release (R) |
Channels
Register | Bitfield | Description |
---|---|---|
$10-$15 | LLLL LLLL | Channel low 8 bits of frequency |
$20-$25 | --ST OOOH | Channel sustain (S), trigger (T), octave (O), high bit of frequency (H) |
$30-$35 | IIII VVVV | Channel instrument (I), volume (V) |
Each channel x is controlled by three registers at $1x, $2x, and $3x.
The 8 bits of $1x with a 9th bit from bit 0 of $2x create a 9-bit frequency value (freq). This is combined with a 3-bit octave value from $2x (octave) to define the output frequency (F):
49722 hz * freq F = ----------------- 2^(19 - octave)
Writing to register $2x either begins a key-on or key-off event, depending on the value in the trigger bit (T). If the trigger bit is 1, a new note begins, if it is 0 it will begin the release portion of its envelope which will eventually silence the channel. If it was already 0, no new key-off will be generated. Note that the octave and high frequency bit cannot be altered between key-on and key-off, but the low 8 bits of frequency in $1x can be used to apply vibrato and pitch bends.
Register $3x selects the instrument patch to use, and chooses a volume. Note that volume value is inverted; $F the lowest volume, and $0 is the highest.
Internal patch set
There are 16 different instrument patches available on the VRC7. With the exception of instrument $0, which can be controlled by registers $00-$07 (see above), these are hardwired into the chip and cannot be altered.
Exact values for the fixed patch set are not yet known, the following table is conjectural:
00 01 02 03 04 05 06 07 ----------------------- 0 | -- -- -- -- -- -- -- -- 1 | 31 22 23 07 F0 F0 E8 F7 2 | 03 31 68 05 F2 74 79 9C 3 | 01 51 72 04 F1 D3 9D 8B 4 | 22 61 1B 05 C0 A1 F8 E8 5 | 22 61 2C 03 D2 A1 A7 E8 6 | 31 22 FA 01 F1 F1 F4 EE 7 | 21 61 28 06 F1 F1 CE 9B 8 | 27 61 60 00 F0 F0 FF FD 9 | 60 21 2B 06 85 F1 79 9D A | 31 A1 FF 0A 53 62 5E AF B | 03 A1 70 0F D4 A3 94 BE C | 2B 61 E4 07 F6 93 BD AC D | 21 63 ED 07 77 F1 C7 E8 E | 21 61 2A 03 F3 E2 B6 D9 F | 21 63 37 03 F3 E2 B6 D9
Differences with OPLL
The synthesis core is related to the Yamaha YM2413 OPLL, which is itself a cost-reduced version of the YM3182 OPL2 chip made popular by AdLib and SoundBlaster sound cards.
- Register layout is the same.
- VRC7 has 6 channels, OPLL has 9.
- VRC7 has no rhythm channels, OPLL does (the last 3 channels are either FM or Rhythm on OPLL).
- VRC7 built-in instruments are NOT the same as OPLL instruments (except for instruments 4,5,7,8 which might be the same on both?).
- VRC7 has no readily-accessible status register, under normal circumstances it is write-only; OPLL has an undocumented, 2-bit 'internal state' register.
- VRC7 has an internal state output pin (may be serial version of the 2 bit internal state register) and has one output pin for audio, multiplexed for all 6 channels; OPLL has two output pins, one for FM and one for Rhythm, and has no special status pin.
References
- VRC7 chip info by Kevin Horton: http://kevtris.org/nes/vrcvii.txt
- YM2413 datasheets: http://www.datasheetarchive.com/YM2413-datasheet.html