SPC700
Encyclopedia
The Nintendo S-SMP is the audio CPU of the SNES
video game console.
The SNES contains a sound module called APU (Audio Processing Unit) which is almost completely separate from the rest of the system: it is clocked at a nominal 24.576 MHz in both NTSC and PAL systems, and can only communicate with the main board via 4 registers on Bus B. It was designed by Ken Kutaragi
and manufactured by Sony
, who subsequently entered the video game console industry with its PlayStation
brand.
The S-SMP (which has an 8-bit Sony SPC700
core) is located on the left side of the sound module. It shares 64 KB of PSRAM with the S-DSP
(which actually generates the sound) and runs at 2.048 MHz, divided by 12 off of the 24.576 MHz crystal. It has six internal registers
, and can execute 256 opcode
s. The SPC700 instruction set is quite similar to that of the 6502
CPU family, but includes additional instructions, including XCN (eXChange Nibble
) which swaps the upper and lower 4-bit portions of the 8-bit accumulator, and an 8-by-8-to-16-bit multiply instruction.
The S-DSP is capable of producing and mixing 8 simultaneous voices at any relevant pitch and volume in 16-bit stereo at a sample rate of 32 kHz. It has support for voice panning
, ADSR envelope control, echo
with filtering
(via a programmable 8-tap FIR
), and using noise as sound source (useful for certain sound effects such as wind). S-DSP sound samples
are stored in RAM in compressed
(BRR
) format. Communications between the S-SMP and the S-DSP is carried out via memory-mapped I/O
.
The RAM is accessed at 3.072 MHz, with accesses multiplexed
between the S-SMP and the DSP . This RAM is used to store the S-SMP code and stack
, the audio samples and pointer table, and the DSP's echo buffer.
The S-SMP operates in a somewhat unconventional manner for a sound chip. A boot ROM is running on the S-SMP upon power-up or reset, and the main SNES CPU uses it to transfer code blocks and sound samples to the RAM. The code is machine code
developed specifically for the SPC700 instruction set in much the same way that programs are written for the main CPU; as such, the S-SMP can be considered as a coprocessor
dedicated for sound on the SNES.
Since the module is mostly self-contained, the state of the APU can be saved as an .SPC
file, and can be emulated in a stand-alone manner to play back all game music (except for a few games that constantly stream their samples from ROM). Custom cartridges or PC interfaces can be used to load .SPC files onto a real SNES SPC700 and DSP. The sound format name .SPC
comes from the name of the audio CPU core.
Super Nintendo Entertainment System
The Super Nintendo Entertainment System is a 16-bit video game console that was released by Nintendo in North America, Europe, Australasia , and South America between 1990 and 1993. In Japan and Southeast Asia, the system is called the , or SFC for short...
video game console.
The SNES contains a sound module called APU (Audio Processing Unit) which is almost completely separate from the rest of the system: it is clocked at a nominal 24.576 MHz in both NTSC and PAL systems, and can only communicate with the main board via 4 registers on Bus B. It was designed by Ken Kutaragi
Ken Kutaragi
is the former Chairman and chief executive officer of Sony Computer Entertainment , the video game division of Sony Corporation. He is known as "The Father of the PlayStation", and its successors and spinoffs, including the PlayStation 2, PlayStation Portable, and the PlayStation 3.Before this...
and manufactured by Sony
Sony
, commonly referred to as Sony, is a Japanese multinational conglomerate corporation headquartered in Minato, Tokyo, Japan and the world's fifth largest media conglomerate measured by revenues....
, who subsequently entered the video game console industry with its PlayStation
PlayStation
The is a 32-bit fifth-generation video game console first released by Sony Computer Entertainment in Japan on December 3, .The PlayStation was the first of the PlayStation series of consoles and handheld game devices. The PlayStation 2 was the console's successor in 2000...
brand.
The S-SMP (which has an 8-bit Sony SPC700
Sony SPC 700
Sony SPC 700 is an integrated 8-bit CPU core manufactured by Sony with an instruction set similar to that of the MOS Technology 6502 ....
core) is located on the left side of the sound module. It shares 64 KB of PSRAM with the S-DSP
Digital signal processor
A digital signal processor is a specialized microprocessor with an architecture optimized for the fast operational needs of digital signal processing.-Typical characteristics:...
(which actually generates the sound) and runs at 2.048 MHz, divided by 12 off of the 24.576 MHz crystal. It has six internal registers
Processor register
In computer architecture, a processor register is a small amount of storage available as part of a CPU or other digital processor. Such registers are addressed by mechanisms other than main memory and can be accessed more quickly...
, and can execute 256 opcode
Opcode
In computer science engineering, an opcode is the portion of a machine language instruction that specifies the operation to be performed. Their specification and format are laid out in the instruction set architecture of the processor in question...
s. The SPC700 instruction set is quite similar to that of the 6502
MOS Technology 6502
The MOS Technology 6502 is an 8-bit microprocessor that was designed by Chuck Peddle and Bill Mensch for MOS Technology in 1975. When it was introduced, it was the least expensive full-featured microprocessor on the market by a considerable margin, costing less than one-sixth the price of...
CPU family, but includes additional instructions, including XCN (eXChange Nibble
Nibble
In computing, a nibble is a four-bit aggregation, or half an octet...
) which swaps the upper and lower 4-bit portions of the 8-bit accumulator, and an 8-by-8-to-16-bit multiply instruction.
The S-DSP is capable of producing and mixing 8 simultaneous voices at any relevant pitch and volume in 16-bit stereo at a sample rate of 32 kHz. It has support for voice panning
Panning (audio)
Panning is the spread of a sound signal into a new stereo or multi-channel sound field. A typical physical recording console pan control is a knob with a pointer which can be placed from the 8 o'clock dial position fully left to the 4 o'clock position fully right...
, ADSR envelope control, echo
Echo (phenomenon)
In audio signal processing and acoustics, an echo is a reflection of sound, arriving at the listener some time after the direct sound. Typical examples are the echo produced by the bottom of a well, by a building, or by the walls of an enclosed room and an empty room. A true echo is a single...
with filtering
Audio filter
An audio filter is a frequency dependent amplifier circuit, working in the audio frequency range, 0 Hz to beyond 20 kHz. Many types of filters exist for applications including graphic equalizers, synthesizers, sound effects, CD players and virtual reality systems.Being a frequency dependent...
(via a programmable 8-tap FIR
Finite impulse response
A finite impulse response filter is a type of a signal processing filter whose impulse response is of finite duration, because it settles to zero in finite time. This is in contrast to infinite impulse response filters, which have internal feedback and may continue to respond indefinitely...
), and using noise as sound source (useful for certain sound effects such as wind). S-DSP sound samples
Sampling (music)
In music, sampling is the act of taking a portion, or sample, of one sound recording and reusing it as an instrument or a different sound recording of a song or piece. Sampling was originally developed by experimental musicians working with musique concrète and electroacoustic music, who physically...
are stored in RAM in compressed
Data compression
In computer science and information theory, data compression, source coding or bit-rate reduction is the process of encoding information using fewer bits than the original representation would use....
(BRR
Bit Rate Reduction
Bit Rate Reduction, or BRR, also called Bit Rate Reduced, is a name given toan audio compression method used on the SPC700 sound coprocessor used in the SNES. The method is a form of ADPCM....
) format. Communications between the S-SMP and the S-DSP is carried out via memory-mapped I/O
Memory-mapped I/O
Memory-mapped I/O and port I/O are two complementary methods of performing input/output between the CPU and peripheral devices in a computer...
.
The RAM is accessed at 3.072 MHz, with accesses multiplexed
Time-division multiplexing
Time-division multiplexing is a type of digital multiplexing in which two or more bit streams or signals are transferred apparently simultaneously as sub-channels in one communication channel, but are physically taking turns on the channel. The time domain is divided into several recurrent...
between the S-SMP and the DSP . This RAM is used to store the S-SMP code and stack
Call stack
In computer science, a call stack is a stack data structure that stores information about the active subroutines of a computer program. This kind of stack is also known as an execution stack, control stack, run-time stack, or machine stack, and is often shortened to just "the stack"...
, the audio samples and pointer table, and the DSP's echo buffer.
The S-SMP operates in a somewhat unconventional manner for a sound chip. A boot ROM is running on the S-SMP upon power-up or reset, and the main SNES CPU uses it to transfer code blocks and sound samples to the RAM. The code is machine code
Machine code
Machine code or machine language is a system of impartible instructions executed directly by a computer's central processing unit. Each instruction performs a very specific task, typically either an operation on a unit of data Machine code or machine language is a system of impartible instructions...
developed specifically for the SPC700 instruction set in much the same way that programs are written for the main CPU; as such, the S-SMP can be considered as a coprocessor
Coprocessor
A coprocessor is a computer processor used to supplement the functions of the primary processor . Operations performed by the coprocessor may be floating point arithmetic, graphics, signal processing, string processing, or encryption. By offloading processor-intensive tasks from the main processor,...
dedicated for sound on the SNES.
Since the module is mostly self-contained, the state of the APU can be saved as an .SPC
SPC700 sound format
An SPC700 sound file is a video game music file consisting of scores and music data from RAM used by the SPC700 sound chip on the Super Nintendo Entertainment System or Super Famicom...
file, and can be emulated in a stand-alone manner to play back all game music (except for a few games that constantly stream their samples from ROM). Custom cartridges or PC interfaces can be used to load .SPC files onto a real SNES SPC700 and DSP. The sound format name .SPC
SPC700 sound format
An SPC700 sound file is a video game music file consisting of scores and music data from RAM used by the SPC700 sound chip on the Super Nintendo Entertainment System or Super Famicom...
comes from the name of the audio CPU core.
External links
- A tutorial on using the SPC700 for the SNES is available on Wikibooks
- SPC700 Documentation
- SPC700 APU Manual