Article History
 
 
 
Discussion
 
17830 views
 
45% damifortune
nsfplus (format)
 

NES/Famicom 2A03 w/ Expansions
 

 

 
Token:
nsfplus
 
Point Type:
 
File Types:
 
Entry Count:
2799
 
Max Filesize:
1,024kb
 
Description:
Music made for the 2A03-chip and one or more expansion chips, that were featured in the Nintendo Entertainment System and its game carts.
allowed expansion chips: VRC6 VRC7 MMC5 FDS N163 S5B
::|CONTENTS
  1. About the expansions
  2. Tools
  3. Note for Dn-FamiTracker users
  4. Restrictions on submit
  5. Accepted file format
  6. Playback (for voting)
  7. Render to MP3
  8. 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.

Note that FamiStudio offers support for a seventh option, known as EPSM. This provides both expansion audio support for the western NES, as well as providing its own YM2608-based expansion audio. This currently is not legal for use with the nsfplus format (however it's perfectly valid for wildchip, fakebit and allgear!)

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, as 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 pitch of these channels can go lower than A 0 (54.62hz) as well thanks to a full 12-bit pitch range (The 2A03 uses 11-bits instead), down to 27.31hz, A -1, a full octave below 2A03 lowest (however, only down to 31.21hz on Sawtooth which is B -1)

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 four on the 2A03 (12.5, 25, 50 and 75 (which is itself an inverted 25)). This gives you distinct, characteristic new options for the tone of your pulses!

The Sawtooth channel is a little quirky in its implementation, as it's not really a sawtooth, but more of a 7-step accumulator instead. If using FamiTracker, it is best used with its own instrument(s) due to having a more granular volume range, 64 settings instead of 16. Anything above volume $28h (40 in decimal) will sound less like a sawtooth wave due to the accumulator overflowing.

Pre-0CC FamiTracker forks didn't have full control over the volume on the sawtooth, so it instead multiplies the 16 volume settings (0-F) by 2 for its normal operation mode, giving a maximum value of $1Eh (30 dec). Odd-numbered duty cycle/pulse widths options will add $20h (32 dec) to the volume, for a maximum value of $3Eh (62 dec) and a minimum value of $20h (32 dec).

Konami VRC7
This one is totally different - it's a six-channel, 2-operator FM chip, identical in implementation to Yamaha's OPLL/YM2413 but even further stripped-down. Unlike the OPLL, it doesn't have a "drum mode", and some of the patches are replaced or relocated instead. The expansion audio part was used in only one Famicom game, Lagrange Point.

Though still quirky, it is relatively easy to pick up and use due to its restrictions, while also being much higher fidelity to most of the other expansion audio options with some advanced tricks.

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
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F


amplitude modulation








X
X
X
X
X
X
X
X


vibrato




X
X
X
X




X
X
X
X


sustained


X
X


X
X


X
X


X
X


key scaling

X

X

X

X

X

X

X

X



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
Like VRC6, it adds two additional pulse wave channels, but those pulse wave channels are almost identical in every way to the 2A03 pulse wave channels, only lacking hardware sweep functionality. In FamiTracker and forks, you can use standard 2A03 instruments for the MMC5 pulse channels, as they support largely the same features as mentioned earlier.

Instead of a sawtooth channel, you get an 8-bit PCM channel, which works similarly to 7-bit PCM on the 2A03 in that it requires a lot of CPU time to write to, but most tools that can export .nsf do not support it, meaning that for most users, the MMC5 only adds an extra set of 2A03 pulse channels.

Nintendo FDS
The Famicom Disk System was a peripheral for the Famicom, which when connected to the Famicom's cartridge adapter, it allows the user to play games via floppy disks (called "Disk Cards", based on Mitsumi's Quick Disk format), as well as adding some standardised functions via its BIOS. At the time of release it allowed for far greater storage capacity, compared to expensive ROM chips, while also providing trivial means for loading and saving games as the media was rewritable (unlike cartridge-based games that required on battery-backed saving).

However, for BotBrs making music, the Ricoh RP2C33 found in the RAM adapter can produce a 1-voice wavetable channel. It is 64x64 in size, meaning 64 steps wide and each step having 64 settings it can be set to. It also features a volume sweep unit, which works similarly to Gameboy's volume envelopes - you get 64 levels of volume, 64 settings for how long or short the time of the sweep should be, and whether to sweep downwards or upwards.

One very notable quirk is that the FDS has its own pitch-modulation unit, which works similarly to SNES pitch modulation. It uses a 32-entry table, each entry being 3 bits in size, offering either a "reset" state, neutral state, and 3 positive/negative pitch adjustments. These modulations can run at audio rates, and the depth can be adjusted for more extreme effects, however the pitch will eventually wrap around.

Other seldom-discussed quirks that not all tools support: FDS has a filtered output, with anything above ~1.5k having a first-order low-pass filter applied, there's also a "master volume" setting for the FDS channel which has 4 possible settings (full volume, 66.67%, 50%, 40%). You cannot change the FDS waveform or the modulation table without turning off the output.

The FDS, like the N163, uses a multiply-up method for pitch calculation instead of the more traditional divide-down approach, meaning lower frequencies will be less accurate, while higher frequencies will have more accurate options to choose from depending on tuning. There are only 12 bits to work with, the highest frequency is an A 6 (1747.40hz), and the lowest is A -5 at 0.43 hz. Yes, that low, and it makes sense to do it this way so that "hearable" lower frequencies can have more options that aren't too out of tune.

In FamiTracker, you can adjust the pattern of the modulation by altering the box below the waveform visualizer found in the FDS instrument settings. You can choose settings for the modulation per instrument to the right of the waveform view, or by using the Hxx, Ixx and Jxx effects within the pattern.

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).

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 Namco N163 (sometimes erroneously referred as "N106", and more recently as "C163" is a wavetable chip as well, similar to their earlier arcade custom waveform solutions, offering a variable number of channels - up to eight wavetable channels can be used at once! As it is an expansion chip meant to be used with NES games, though, there are many caveats:

  • It uses a multiplexer-based mixer, which means it takes bits of data from each channel enabled in sequence then outputs that. With more channels, it takes longer, meaning the hiss becomes more audible, especially if you enable more than 5 channels. Some tools will allow you to disable this hiss, but this is a hack and is not representative of real hardware.
  • There are only 128 bytes of memory dedicated to both the waveform data, which is stored in contiguous memory, and also channel registers for handling waveform pointer stuff, as well as pitch and phase information, with each channel taking up 8 bytes of memory. This means in practice that the more channels you have toggled, the less space you have for active waveforms.
  • Although there are a handful of games that used the N163, their mixing settings relative to the 2A03 is a mixed bag. Instead of a more reliable and consistent solution, each game uses different resistor and such component values to tailor its mixing levels compared to the 2A03.
  • Additionally, channels can become louder or quieter if more or less channels are enabled.
That being all said, this is still a powerful chip, as unlike most other waveform implementations, the N163 does NOT need to be turned off or have its phase reset when updating waveforms. It also has the highest resolution in pitch (and phase, it gets the same treatment, although the competition is "nothing"), at a whopping 18 bits of pitch resolution. Like the FDS, it is multiplied up from a really low value instead of divided down, and, assuming a waveform size of 16, the lowest pitch of $00004 is just 0.46hz, or an A# -5, up to a high of $3FFFC or, uh, 29829hz. That's dog discomfort music territory.

Waveforms are stored as 4-bit entries (each nybble in a byte is treated as a waveform point), can range from 4 to 256 in theory & in increments of 4, but in practice as mentioned earlier this is all dependent on how many channels are enabled. This also means that, in practice, the highest waveform size is 240, and that's with only one channel, with the lowest being 128 when all 8 channels are enabled. It is also worth mentioning that any non 2^x sizes (so sizes that aren't 4, 8, 16, 32, 64, 128) will be detuned. Even the mentioned sizes will be tuned to different octaves.

However, assuming you have enough memory to store the waveforms elsewhere, and enough spare CPU time to copy said waveforms to the N163's wave memory, you can dynamically update parts of the wave memory to achieve either more complex sounds, or even recreations of actual instruments, as demonstrated by folks like HertzDevil and Zamual.

Just, uh, make sure if you do this extensively that you can still export a NSF.

Also, as a fun fact: Although most tools count from Channel 1 to Channel 8, this actually works in reverse - the first channel is "Channel 8" if we are to judge by how it's the last set of 8 bytes in the 128-byte memory, and any subsequent channels enabled count down from that.
Also, as another fun fact: There is an earlier version of the N163, the "N129/C129", however this was never actually used in games, and was otherwise pretty similar to the N163 with the only exception being that waveforms can range from 1 to 64 instead of 4 to 256. This is currently not supported in any known NSF players either.

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

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