furnace/doc/7-systems/n163.md
tildearrow 2da316b346 dev243 - N163: add convenience effects - READ
two effects for convenience and .ftm import:

- 1Axx: set wave load and play pos (equivalent to 11xx 15xx)
- 1Bxx: set wave load and play length (equivalent to 12xx 16xx)

*** Developer Information ***

a small change to the command stream format has been made. the commands for N163 loadpos/loadlen have been retired, and the commands for N163 wave position/length now take in 2 bytes instead of 1.
the first byte is the position/length.
the second byte is a bitset. if bit 0 is set, update playback state. if bit 1 is set, update load state.
2026-01-18 17:30:25 -05:00

3.4 KiB

Namco 163 (also called N163, Namco C163, Namco 106 [sic], Namco 160 or Namco 129)

this is one of Namco's NES mappers, with up to 8 wavetable channels.

it has 256 nibbles (128 bytes) of internal RAM which is shared between channel state and waves.

wavetables are variable in size and may be allocated anywhere in RAM. at least 128 nibbles (64 bytes) can be dedicated to waves, with more available if not all channels are used - waveform RAM area becomes smaller as more channels are activated, since channel registers consume 8 bytes for each channel.

Namco 163 uses time-division multiplexing (TDM) for its output. this means that only one channel is output per sample (like OPLL and OPN2). therefore, its sound quality gets worse as more channels are activated.

waveform load position versus waveform position

in Furnace, waveform load position/length is different from the waveform position/length.

when placing a note, the load pos/len and the pos/len are set to the values specified in the instrument.

waveforms are loaded in the region set by the load pos/len, which you can change using effects 15xx and 16xx as described below.

the region that will play is set by the waveform pos/len, which you can alter using effects 11xx and 12xx.

the waveform pos/len macros only change the pos/len, and not the load one.

if the waveform changes (e.g. ins change, wave macro or wave synth), or the load pos/len changes, the wave is written to memory.

effects

  • 10xx: set waveform for playback.
  • 11xx: set waveform position in RAM for playback.
    • position is in nibbles.
  • 12xx: set waveform length in RAM for playback.
    • x goes from 04 to FC in steps of 4.
  • 15xx: set waveform load position.
    • position is in nibbles.
  • 16xx: set waveform load length.
    • x goes from 04 to FC in steps of 4.
  • 180x: set channel limit.
    • range of x is 0 to 7. 1 is added to get results of 1 through 8.
  • 1Axx: set waveform load and playback position.
    • position is in nibbles.
  • 1Bxx: set waveform load and playback length.
    • x goes from 04 to FC in steps of 4.
  • 20xx: load a waveform to RAM.
    • x is the waveform.
    • the length is determined by the wave's width (it will be snapped to a multiple of 4 if it isn't).
    • make sure to use 21xx first!
  • 21xx: set position for 20xx.

info

this chip uses the Namco 163 instrument editor.

chip config

the following options are available in the Chip Manager window:

  • Clock rate: sets the rate at which the chip will run.
  • when loading files created in earlier versions of Furnace, there may be a warning specifying that the legacy channel limit isn't equal to the channel count. in that case, two options will be available:
    • Fix channel count: changes Channels to match the track. note that this is a destructive operation!
    • Give me more channels: adjusts the chip to an appropriate channel count.
  • Disable hissing: remove TDM artifacts by mixing. sacrifices some accuracy!
  • Scale frequency to wave length: automatically adjusts note frequency to account for differing waveform lengths.
    • if disabled, note frequencies ignore waveform length. this is how FamiTracker behaves.
  • Channels: sets the number of channels, from 1 to 8. higher values reduce volume and make TDM artifacts more noticeable.