1.) Pulse Wave
The RP2A03 is the integrated 8-bit CPU used in the Famicom, Nintendo Entertainment System, Vs. System, PlayChoice-10, and various standalone arcade games. It was created for Nintendo by the circuit manufacturer Ricoh using a licensed version of the 6502 processor, originally developed by MOS Technology. In addition to the CPU, the chip contained rudimentary DMA, and, most important to this site, a built-in audio processing unit (APU).
The APU was designed by Nintendo engineer Yukio Kaneoka, who also composed music and sound effects for numerous games. The APU contains a 4-channel custom PSG which developers used to make music and a PCM channel for digital sound effects and speech. The chip was originally patented in Japan around 1983. In the USA, it is patent publication number US4783812 A, application number 06/893,341; it was filed on 1986-08-05, and published on 1988-11-08.
Two different versions of the CPU were developed for release in NTSC and PAL regions. The NTSC version is designated as RP2A03 or 2A03, while PAL version is designated as RP2A07 or 2A07. The only difference is the clock speed which was designed to match each region's television refresh rate; 60 Hz for NTSC, 50 Hz for PAL.
The APU's PSG consisted of two pulse wave channels each with a customizable duty cycle; 12.5%, 25%, 50%, and 75%. The 25% and 75% wave sound so identical it's hard to tell which is which. The third channel is a triangle wave which was usually used for bass, but was also used for flute-like sounds or percussion. The fourth channel is a noise channel predominately for percussion, that had two different modes; white noise and periodic noise. It was generated by a pseudo-random sequence repeating up to 32,737 values. The fifth channel was the DPCM (Delta Pulse Code Modulation) which could playback digital 7-bit samples. While the DPCM was mainly used for drum sounds, it was also used for speech, bass, and other sound effects.
Part of the innovation of the APU was the triangle wave. Most audio chips of the time (like the AY-3-8910 and SN76489) used three pulse waves, but Yukio Kaneoka had the foresight to modify one pulse wave channel into a triangle wave channel. The sacrifice not only cost a third pulse channel, but also eliminated volume control for the channel, but doing so gave the NES a much richer bass sound. This is be heard by comparing bass-heavy songs released on the NES and another platform without a triangle wave.
The RP2A03 is the original design of the chip and was used for all NTSC releases. Most games were designed to accommodate this chip which ran at 60 Hz. The RP2A03 could go from a value of $07FF (low A) to $0000.
PAL versions of Nintendo Entertainment System use the RP2A07. It is identical to the RP2A03, except that it uses a refresh rate of 50 Hz to match the PAL television standard. This slower clock rate results in the music playing a half-step lower and a little slower than the 2A03. Audio programmers were expected accommodate this difference in speed by altering their music slightly, but many just left the music slower.
The RP2C33 was the sound hardware used in the Famicom Disk System channel. It contained only one expansion sound channel that used wavetable synthesis.
The original 1983 Famicom used the original version of the chip, as well as the Vs. System and PlayChoice-10 arcade systems. The North American toaster model NES used revision G. Early versions of the top-loader NES design also used the G revision, but later models used the H revision.
There are two common ways of ripping NES music. The first and hardest way is NSF ripping which involves extracting the audio code from the game's ROM. Depending on the sound driver and the way the game's programmed, it can be either an easy or extremely difficult task. The second and easier way of ripping NES music is by logging VGM files. So far, the only way to do this is to use MESS VGM Mod. The problem with VGM ripping is that sound effects that intrude a song during gameplay must be hacked out of the game. Also, unused songs that can be ripped from an NSF file cannot be easily ripped into VGM since the game won't play said unused songs, unless the game is hacked. Like NSF ripping, VGM logging can be either very easy or very difficult depending on the game's coding and sound engine. Another problem with VGM logging is that the files must be trimmed to loop properly since VGM doesn't look for looping points.
- en.wikipedia.org/wiki/Ricoh_2A03 - Wikipedia.
- nesdev.com/2A03%20technical%20reference.txt - Programmers technical reference.
- youtube.com/watch?v=mJnz6dEWwIw - Displaced Gamers describes the PCM channel.
- google.com/patents/US4783812 - US patent information.
- famitracker.com/wiki/index.php?title=2A03 - Nintendo sound chips.
- gdri.smspower.org/wiki/index.php/Famicom/NES_Sound_Driver_List - Famicom/NES Sound Driver List