Super Nintendo Entertainment System (commonly abbreviated SNES, also known as Super Nintendo and Super NES) is a video game console created by Nintendo, first released in Japan in 1990 as Super Famicom. Most games programmed for it were programmed in assembly, due to the lack of power and the considerable speed drop created by programming in higher level languages. In the end, the SNES sold over 40 million units worldwide.
- CPU: 65c816 based, clock speed at approximately 21 MHz (effectively slower, see below), named Ricoh 5A22, 16-bit - PPUs: Ricoh 5c77 (PPU1) and Ricoh 5C78 (PPU2) - Sound channels: 8, uses compressed wave samples - APU: Sony 8-bit SPC700 processor at 1.024 MHz - S-DSP: Outputs at 32 KHz - DRAM: 128 KBs at 2.58 MHz (?) - VRAM: 32 KBs two chips - OAM: 544 Bs - ARAM: 64 KBs - WRAM: 1 Mbit (128 Kbyte) - DMA: 8 channels, H-DMA (Horizontal DMA) also featured, using same channels - Resolution: 256x224 512 x 448 pixels max hi res and interlaced modes - Colors Available: 32,768 colors - Max sprite size: 64 x 64 pixels - Max sprites: 128 - Min/Max Cart Size: 2 Mbit - 48 Mbit - Other: 16-bit color, line based interrupts (IRQ and NMI)
The SNES's CPU (Central Processing Unit) is a 65c816 based processor. While its clock speed is at about 21 MHz, it's effective speed is considerably lower, at 3.58 MHz for quick access (i.e. hardware registers at $2100-$21FF in banks $00-$3F), 2.68 MHz for slow access (i.e. ROM and RAM) and 1.79 MHz for very slow access (i.e. hardware registers at $4000-$41FFF in banks $00 through $3F).
It is a 16-bit processor with a 24-bit bus. (16-bit data pointer and 8-bit bank pointer) It is capable of using 8-bit modes, instead. It features few registers.
It does however feature many addressing modes. It uses variable width instructions. The width of an individual instruction can change depending on the length of certain registers.
The SNES's PPUs (Picture Processing Units) are tile and sprite based. The OAM can be used to display up to 128 sprites. In addition, with up to 4 layers, one can have as many tiles as one wishes on said layers, according to a grid pattern. In the VRAM there are up to $400 tiles that can be used for the BGs and up to 200 tiles that can be used for the sprites. In addition, the PPUs can change in terms of how they understand the data. One can increase the amount of tilemaps to up to 4 per layer.
The SNES's APU (Audio Processing Unit) is used for communicating with the S-DSP. It uses the APU I/O ports to interact with the CPU. The SPC700 in the SNES is clocked at 1.024 MHz. The S-DSP accesses the ARAM twice for each time the SPC700 accesses it. The APU can use multiplication and division, which the CPU cannot, but it is only 8-bit, using a combination of A and Y to form a 16-bit register, sometimes. The APU runs its instructions off the ARAM, and is therefore easy to change
The SNES's S-DSP (Digital Signal Processor) is used for outputting data to the speakers. The sound produced runs at 32 KHz. The S-DSP uses Bit Rate Reduction to reduce the size needed to 9/16 the original size. The S-DSP is autonomous, simply acting according to the data the APU provides it.
The SNES has the capability of using other chips to help it compute data. This will explain some of the more common ones.
DSP-1 is a chip which is used mainly for math and fake 3D projections. This uses mode 7, more often than not. This is the most used chip of them all. It is good for 2D rotation, etc., too.
SA-1 is a faster version of the CPU, with some differences in terms of access. It comes with "I-RAM" and "BW-RAM". It goes at a speed of about 11 MHz, normally, and 5 MHz when accessing the same thing as the CPU.
GSU is the technical name for the well known SuperFX chip. The GSU can be used for plotting colors. It is more powerful than the SNES's CPU in many ways. It is a pseudo-RISC. It can be used for plotting many things such as the rotation of sprites and object or making pseudo-3D effects.
CX4 is the chip used by Capcom, which was tremendously powerful in terms of trigonometry and graphics. It can draw lines, waves and 3D wireframes, rotate sprites and do trigonometric calculations among other things.