::|CONTENTS
- About the expansions
- Tools
- Note for Dn-FamiTracker users
- Restrictions on submit
- Accepted file format
- Playback (for voting)
- Render to MP3
- See also
The nsfplus format is an expansion of the
nsf format. The (emulated) use of additional
mapped soundchips is allowed. Sometimes, bitpacks for
XHBs will specify which expansion(s) can be used, or how many. Major nsfplus battles sometimes have specific themes too, such as
Spooky VRC6 or
VRC VII Lost In Space, but if no theme is specified or restriction is given, it's up to you! (Such as in
Summer Chip for example!)
About the expansions
There are six different soundchips available for expansion audio in this format:
VRC6, VRC7, MMC5, FDS, N163, and S5B. There is seven though in FamiStudio. Most of them have their own weird quirks, so let's learn a little about them, how to handle them and what to avoid.
One major thing to keep in mind with FamiTracker is that each expansion chip has its own "kind" of instrument - observable via the icon next to the instrument name ("2A03" for the vanilla chip). To make for example a "VRC6 instrument", press the add instrument button while the cursor is on a VRC6 channel (or use the dropdown - you can add an instrument for any chip loaded into your module here). Always use the instruments on their own specific chips, and avoid using them on other chips; this may cause unwanted glitches and weird behavior in both the .nsf export and the tracker.
Another important factor to consider is when using multiple expansion chips at once, sometimes their memory storage locations will overlap, causing issues with .nsf export. This mainly happens with instruments - you may find yourself limited on the number of FDS instruments you can use if you've enabled MMC5 as well, or limited on the number of N163 instruments and DPCM samples with another expansion in use. Export often to test your work!
Konami VRC6
One of the more popular expansion chip choices since it offers a wide variety of additional sounds while being relatively accessible and easy to use, especially coming from the regular 2A03. The VRC6 adds three total channels:
two pulse waves and a sawtooth wave.
The VRC6 pulse waves are different from the 2A03 - eight different duty cycle options exist (6.25, 12.5, 18.75, 25, 31.25, 37.5, 43.75 and 50), compared to only three on the 2A03 (12.5, 25/75 and 50). This gives you distinct, characteristic new options for the tone of your pulses!
The sawtooth wave is a little quirky, and best used with its own instrument(s). It offers a 64-step volume option in the envelopes, compared to 16-step for virtually everything else. Using it is not necessary, but you may appreciate the added granularity. (Note that regardless, FamiTracker pattern editing still only uses volumes 0-F which will scale accordingly.) Where things get weird is the duty cycle settings ("Pulse Width" in the instrument settings). Odd-numbered duty settings (or 01 in older versions) will produce a significantly louder, more "blown out/distorted" sounding saw wave, which is probably something you'll want to avoid for mixing reasons, and again why it's recommended to give the sawtooth its own instrument(s) that aren't using duty cycle settings.
Konami VRC7
This one is totally different - it's a 2-operator FM chip similar to Yamaha's OPLL/YM2413 but stripped-down. It uses
six total FM channels, and only ever appeared in one Famicom game,
Lagrange Point. Though still quirky, it is relatively easy to pick up and use due to its restrictions.
Most of the sound of the VRC7 is likely to come from its
15 preset FM patches, which can't be modified: (in order 1-15) Bell, Guitar, Piano, Flute, Clarinet, Rattling Bell, Trumpet, Reed Organ, Soft Bell, Xylophone, Vibraphone, Brass, Bass Guitar, Synthesizer, and Chorus. Your choice of patch can be set in the "VRC7 instrument" but can also be controlled in the pattern using the
Vxx command (values 01-0F point to the presets).
However, there is memory for one
custom patch to be used at a time, too. You can use multiple custom patches throughout a song, but ONLY ONE simultaneously. The custom patch can be used in any number of channels though. A
V00 command can summon the custom patch using its most recent settings.
For advanced FM fuckery, the
Hxx and
Ixy commands can write new parameters for your custom patch within the pattern, controlling information about the operators and FM patch settings (see list below). Another advanced sound design trick is to rapidly change between different preset patches using the
Vxx command, producing new and unusual textures especially at fast speeds.
Although no instrument envelopes are available with FamiTracker's VRC7 instrument settings, the VRC7 channels do still take volumes 0-F, with the higher values comprising most of the audible spectrum, and F likely being quite loud compared to the other chips. You may want to mix the VRC7 somewhat quieter than maximum.
Hxx and Ixy / VRC7 patch table
- Hxx tells which of the 8 two-hex-digit value zones to write to - 00 through 07 (these are listed and editable via text box on the custom patch screen)
- Ixy tells what to write; keep in mind you're writing two things at once here
-00 -01 -02 -03 -04 -05 -06 -07
$kl $mn $op $qr $st $uv $wx $yz
(So, to use
Hxx and
Ixy to control $uv, you would input
H05 Ixy)
k = op1 control for various checkbox features. basically, key scaling adds 1, sustained adds 2, vibrato adds 4, and amplitude modulation adds 8.
- 0: amplitude modulation, vibrato, sustained, key scaling OFF
- 1: amplitude modulation, vibrato, sustained OFF // key scaling ON
- 2: amplitude modulation, vibrato, key scaling OFF // sustained ON
- 3: amplitude modulation, vibrato OFF // sustained, key scaling ON
- 4: amplitude modulation, sustained, key scaling OFF // vibrato ON
- 5: amplitude modulation, sustained OFF // vibrato, key scaling ON
- 6: amplitude modulation, key scaling OFF // vibrato, sustained ON
- 7: amplitude modulation OFF // vibrato, sustained, key scaling ON
- 8: vibrato, sustained, key scaling OFF // amplitude modulation ON
- 9: vibrato, sustained OFF // amplitude modulation, key scaling ON
- A: vibrato, key scaling OFF // amplitude modulation, sustained ON
- B: vibrato OFF // amplitude modulation, sustained, key scaling ON
- C: sustained, key scaling OFF // amplitude modulation, vibrato ON
- D: sustained OFF // amplitude modulation, vibrato, key scaling ON
- E: key scaling OFF // amplitude modulation, vibrato, sustained ON
- F: amplitude modulation, vibrato, sustained, key scaling ON
l = op1 mult. factor 0-F
m = same as k but for op2 control of various checkbox features.
n = op2 mult. factor 0-F
o & p = combination of modulator level & op1 level. modulator level ranges from 00-3F. op1 level has four settings and adds 40 (hex) each increment (00, 40, 80, C0). the modulator level gets added to this.
q = op2 level 0, 4, 8, C. or, to enable wave rectification for op2, instead use 1, 5, 9, D
r = feedback level 0-7; or, to enable wave rectification for op1, instead use 8-F
s = op1 attack 0-F
t = op1 decay 0-F
u = op2 attack 0-F
v = op2 decay 0-F
w = op1 sustain 0-F
x = op1 release 0-F
y = op2 sustain 0-F
z = op2 release 0-F
Nintendo MMC5
This is the simplest of the expansion chips. Seriously! It adds
two additional pulse wave channels, but those pulse wave channels are identical in every way to the 2A03 pulse wave channels, and this chip even uses the standard "2A03 instrument". That's it. That's the whole thing. If you just want some additional polyphony to beef up the sound of your track, the MMC5 is here for you.
Nintendo FDS
The Famicom Disk System was a whole fancy peripheral for the Famicom that added new functionality and storage for the system and its games. What this means for you, here, making an .nsf for the nsfplus format, is that you gain
one new wavetable synth channel - a pretty beefy one at that.
FamiTracker lets you choose a few basic waveform options but you can also draw your own soundwave or import a table of data to define the points of the wave (check out
Wavegen for a potential generator). The wave can also be frequency modulated using the other options in the "FDS instrument" or dynamically using the commands
Hxx,
Ixx and
Jxx within the pattern!
Even though this expansion chip only offers you the one channel, it can still be a cool and unique addition to an NES chiptune - don't overlook it! It's powerful!
Namco 163
See also:
Namco 163 Tools
Perhaps the most quirky of the expansion chips, but also an incredibly powerful one. The N163 is a wavetable chip as well, offering a variable number of channels -
up to eight wavetable channels can be used at once, but before you get too excited, there are catches.
The chief issue with using more than ~4-5 N163 channels in a song is that you will start hearing a very high-frequency "hiss" sound in your export caused by "multiplexing". This can be disabled in NSFplay settings, however it is true to the real hardware, and disabling it means inaccurate emulation. If you're using all eight N163 channels, the hiss will likely be unbearable, so tread carefully!
The other thing to keep in mind regarding the number of N163 channels you use is that the size of the memory storage available for your waves decreases with adding more channels, though this may only matter to you if you're using particularly complex waveforms.
Speaking of complex waveforms, the size of waves on the N163 is variable, all the way from 4 points to 240 (if using only one channel). Not only that, but multiple waves can be loaded into a single instrument, producing some crude-and-crusty but still highly serviceable "samples" if you are patient with the conversion process. Sequence multiple waves in your "N163 instrument" using the Wave Index macro. This has been utilized by folks like HertzDevil to create convincing recreations of SNES and N64 tunes. Memory can be an issue with huge multi-wave instruments and with many DPCM samples, so check your exports to be sure they'll work.
The N163 keeps a "wave memory" that's like the place all currently-used waves are stored and read from - a long series of a couple hundred numbers. As new waves are utilized, parts of that memory can get overwritten. All N163 instruments have a "wave position" setting that indicates where in the "wave memory" they are stored (i.e. which group of numbers they are). Managing this is a crucial part of using the N163, because if you try to use two waves at once that are stored at the same "wave position", unintended behaviors will happen due to both instruments fighting over the same space in memory. It will likely not sound correct in the export.
In practice this means you may need to do a little micro-managing of the "wave positions" of your instruments to ensure no simultaneous instruments are overlapping. The larger your waves are, the fewer viable places you'll have to store them - the options are in multiples of the length, so for example a length 24 wave could only be stored at positions 0, 24, 48, and so on.
A few resources for generating or converting N163 waves:
wavetable (or its
google colab counterpart),
n163 wavemaker,
n106izer,
Wavegen.
Sunsoft 5B
This chip was also only ever used in one game,
Gimmick, and is extremely similar to the chips used in the
AYM format or the SSG portion of those found in the
PC-X801 format. It offers
three new channels that can play square waves, noise with 32 potential frequencies (in one channel at once), and a tricky "envelope" that can produce distorted bassy textures with low pitch depth (also in one channel at once), though it is difficult to wield.
Within the "S5B instrument", the bottom macro option (where pulse width/duty/noise settings usually live) lets you choose which sound(s) you want to hear - square, noise and/or envelope, as well as the pitch of the latter two. Space below the macro lets you choose the sounds: yellow = envelope, blue = tone (square), pink = noise. You will see these indications reflected in the macro text too, "e/t/n" after each number to indicate what is sounding.
If you're interested in more, consider exploring the
AYM format! This chip basically just adds one of those onto the 2A03.
Tools
-
FamiTracker
-
0CC-FamiTracker (or its spiritual successor
Dn-FamiTracker; see below)
-
PPMCK
-
IT2NSF
-
SuperNSF
Note for Dn-FamiTracker users
If using
Dn-FamiTracker, it is recommended to stick with the older version
0.4.0.1!! In later versions 0.5+, .nsf export may break erroneously if using expansions - which you almost certainly will be in this format. Exports may also have volume and tuning (
Pxx) discrepancies in the sound compared to the tracker & old-version export.
Backwards compatibility with
.ftm and
.0cc (both of which are also BotB formats) also breaks beyond this version.
If you used a newer version to write the entry already and are stuck, try exporting text via the File menu and importing that into the older version - or paste all your patterns into a new 0.4.0.1 module and load the instruments in the same order. (You may have to remove 0.5+ specific effects like
=xx and
Nxy if you used them.)
Restrictions on submit
Implementing multiple mappers on a cart would be a difficult (or perhaps impossible) task. Only one mapper was used at a time on a cart as there was no need to be so insane. It is expected/recommended that the bitpack for an
OHB specifies which expansion chip to use for an NSF+ compo, unless there is some other strong theme to keep the entries coherent.
Accepted file format
.nsf
(NOT module formats and NOT vgm)
.nsf at all costs
Playback (for voting)
Apart from the tools you can use for creation, also:
-
NSFplay and
VirtuaNSF (version 1.0.6.1 is recommended)
The foobar2000 component for NSF playback is not recommended as expansion audio can sound wildly different than intended due to differences in emulation. Use NSFplay instead!
For playback on actual hardware, both the
PowerPak and the
EverDrive N8 PRO (but not the original EverDrive N8!) have built-in NSF players. Note that if you are using any extra sound chips, they need to be supported by your flash cart, and if you are using a NES (as opposed to a Japanese Famicom), you will need to
mod your console to get the expansion audio out of your NES since this functionality was removed on the NES hardware.
Render to MP3
Since
NSFplay and
VirtuaNSF are both capable of emulating expansion chips, rendering an NSF file with expansion chips is the same process as rendering one without. See
here for details.
See also
All related Lyceum articles:
referencing to:
-
nsf (format)
-
NES (console)
-
FamiTracker
-
0CC-FamiTracker
-
Dn-FamiTracker
-
PPMCK
-
Deflemask Tracker
-
OHB
-
NSFplay
-
VirtuaNSF
-
Split DPCM Guide
referenced from:
-
Format
-
nsf (format)
-
Split DPCM Guide