Article History
 
 
 
Discussion
 
15755 views
 
63% damifortune
nsfplus (format) View HTML Version
 

The nsfplus format is an expansion of the '[[nsf (format)[nsf] format. The (emulated) use of additional '[[NES Famicom (console)[mapped soundchips] is allowed. Sometimes, bitpacks for '[[XHB[XHBs] will specify which expansion(s) can be used, or how many. Major nsfplus battles sometimes have specific themes too, such as '[l[https://battleofthebits.com/arena/Battle/5144[Spooky VRC6] or '[l[https://battleofthebits.com/arena/Battle/6963[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: '[b]VRC6, VRC7, MMC5, FDS, N163, and S5B'[/b]. 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!

'[t[b3]Konami VRC6'[/t]
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: '[b]two pulse waves and a sawtooth wave'[/b].

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.

'[t[b3]Konami VRC7'[/t]
This one is totally different - it's a 2-operator FM chip similar to Yamaha's OPLL/YM2413 but stripped-down. It uses '[b]six total FM channels'[/b], and only ever appeared in one Famicom game, '[o]Lagrange Point'[/o]. 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 '[b]15 preset FM patches'[/b], 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 '[t[mono]Vxx'[/t] command (values 01-0F point to the presets).

However, there is memory for one '[b]custom patch'[/b] 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 '[t[mono]V00'[/t] command can summon the custom patch using its most recent settings.

For advanced FM fuckery, the '[t[mono]Hxy'[/t] and '[t[mono]Ixy'[/t] commands can write new parameters for your custom patch within the pattern, controlling information about the operators. This may take some work to figure out, cross-referencing with the values given in the "VRC7 instrument" settings - the stuff with $ next to it - but could offer you additional control over the sound. Another advanced sound design trick is to rapidly change between different preset patches using the '[t[mono]Vxx'[/t] 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.

'[t[b3]Nintendo MMC5'[/t]
This is the simplest of the expansion chips. Seriously! It adds '[b]two additional pulse wave channels'[/b], 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.

'[t[b3]Nintendo FDS'[/t]
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 '[b]one new wavetable synth channel'[/b] - 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 '[l[http://tools.melonadem.com/wavegen/[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 '[t[mono]Hxx'[/t], '[t[mono]Ixx'[/t] and '[t[mono]Jxx'[/t] 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!

'[t[b3]Namco 163'[/t]
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 - '[b]up to eight wavetable channels'[/b] 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: '[l[https://github.com/nyanpasu64/wavetable[wavetable] (or its '[l[https://colab.research.google.com/drive/1x7J3OpdDJWx6PQja4Ktv-buCB1qQJK6_?usp=sharing#scrollTo=CTNeBqtYzQ67[google colab counterpart]), '[l[https://www.desmos.com/calculator/rtwueoswup[n163 wavemaker], '[l[https://www.youtube.com/watch?v=A9-1nQ-7jKI[n106izer], '[l[http://tools.melonadem.com/wavegen/[Wavegen].

'[t[b3]Sunsoft 5B'[/t]
This chip was also only ever used in one game, '[o]Gimmick'[/o], and is extremely similar to the chips used in the '[[aym (format)[AYM format] or the SSG portion of those found in the '[[pc-x801 (format)[PC-X801 format]. It offers '[b]three new channels'[/b] 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)[AYM format]! This chip basically just adds one of those onto the 2A03.


'[#[Tools]
- '[[FamiTracker]
- '[[0CC-FamiTracker] (or its spiritual successor '[l[https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker[Dn-FamiTracker]; see below)
- '[[PPMCK] 
- '[[IT2NSF]
- '[[SuperNSF]


'[#[Note for Dn-FamiTracker users]
If using '[b]Dn-FamiTracker'[/b], it is recommended to stick with the older version '[l[https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker/releases/tag/Dn0.4.0.1[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 ('[t[mono]Pxx'[/t]) discrepancies in the sound compared to the tracker & old-version export.

Backwards compatibility with '[[famitracker (format)[.ftm] and '[[0cc (format)[.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 '[t[mono]=xx'[/t] and '[t[mono]Nxy'[/t] 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 '[l[https://www.retrousb.com/product_info.php?products_id=34[PowerPak] and the '[l[https://krikzz.com/our-products/cartridges/everdrive-n8-pro-72pin.html[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 '[l[http://www.retrofixes.com/2014/05/open-hidden-sound-channels-in-nes.html[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 '[l[http://battleofthebits.com/lyceum/View/nsf+%28format%29/#Render%20to%20MP3[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]
referenced from:
- '[[Format]
- '[[nsf (format)]

 
C A T E G O R I E S
 
 
Battle Formats