PPU variants

From NESdev Wiki
Jump to navigationJump to search

Beyond the well-studied 2C02G, we know of the following PPU revisions, both made by Ricoh and other manufacturers:

RP2C02 Extremely rare. Likely only a few thousand made. (pictures not archived)

RP2C02 3F4 13.jpg PPU=RP2C02 3G2 23.jpg

RP2C02A Sometimes erroneous sprite pixels appear in X=255. Some modern PCBs generate almost exclusively glitchy pattern fetches. PPUMASK and PPUCTRL seem to be entirely asynchronous, and writes to PPUMASK can disable rendering for one pixel with the commensurate bugs resulting.

PPU=RP2C02A 3H1 43.jpg

RP2C02B Sometimes erroneous sprite pixels appear in X=255.

PPU=RP2C02B 4D4 28.jpg

RP2C02C PPU=RP2C02C 3M1 10.jpg
RC2C02C In ceramic package. [1]

PPU=RC2C02C 4A3 15.jpg

RP2C02D PPU=RP2C02D 4H3 19.jpg
RP2C02D-0 PPU=RP2C02D-0 4K3 63.JPG PPU=RP2C02D-0 4M1 25.jpg
RP2C02E PPU=RP2C02E 4M3 14.jpg PPU=RP2C02E 4M5 25.jpg
RP2C02E-0 In this and all previous revisions, OAMDATA and palette RAM are not readable.

Various OAM evaluation bugs

PPU=RP2C02E-0 5K1 50.jpg

RP2C02G-0 Writes to OAMADDR cause corruption of OAM. Leaving OAMADDR at a value of 8 or greater causes OAM corruption when rendering starts. Particularly susceptible to reflections causing OAM corruption, fixed by putting series resistors between the CPU and the cartridge ROM.

PPU=RP2C02G-0 7M3 52.jpg PPU=RP2C02G-0 1EP 2C.jpg

RP2C02H-0 Thought have to have fixed some of the glitches in the 2C02G

PPU=RP2C02H-0 4AM 4B.jpg PPU=RP2C02H-0 1CL 42 (laser).jpg

RP2C03B RGB PPU. Color emphasis bits set the corresponding channel to full brightness. Otherwise believed identical to 2C02B. OAMDATA and PPU palette are not readable.

PPU=RP2C03B 9C4 23.jpg PPU=RP2C03B 4L2 65.jpg

RP2C03C RGB PPU. Believed to be same core as 2C02C.
RC2C03B Tweaked palette; otherwise believed identical to RP2C03B.

PPU=RC2C03B 4A4 30.jpg

RC2C03C Believed identical to RP2C03C.

PPU=RC2C03C 4A2 10.jpg

RP2C04 0001 Scrambled palette and new colors, otherwise like 2C03C.

PPU=RP2C04 0001 4C4 15.jpg

RP2C04 0002 "
RP2C04 0003 "
RP2C04 0004 "

PPU=RP2C04 0004 4L4 31.jpg

RC2C05-01 PPUCTRL and PPUMASK swap locations. Five LSBs of PPUSTATUS return a constant. Otherwise like 2C03.
RC2C05-02 "
RC2C05-03 PPU=RC2C05-03 5G1 12.JPG same as above
RC2C05-04 PPU=RC2C05-04 7C3 12.jpg same as above
RC2C05-99 An RGB PPU with RP2C02E behavior: OAM and palettes are unreadable, but OAM corruption added in revision E is present. PPUSTATUS behavior is normal (the low 5 bits are PPU open bus). Grayscale is normal (palette & $30). Uses 2C02 timing (a dot is skipped every other frame), unlike other RGB PPUs. The palette and emphasis behavior match other RGB PPUs. Used in the Famicom Titler. (picture of Titler PCBs)

PPU=RC2C05-99 8M4 14.jpgPPU=RC2C05-99 8L4 11.jpg

RP2C07 PAL-B PPU. Vblanking is 71 scanlines long. OAM evaluation can never be fully disabled. Red/green color emphasis swapped. OAMADDR works correctly, not corrupting OAM contents.

PPU=RP2C07 5M4 26.jpg

RP2C07-0 PPU=RP2C07-0 8F3 07.jpg
RP2C07A-0 Some subtle differences in PPU that make this work better with Kevtris's HDNES, but otherwise believed identical to 2C07.

PPU=RP2C07A-0 2FM 22.jpg

UA6528 UMC-made clone of 2C02E (or something earlier) [2]

PPU=UA6528-8929-CS.jpg PPU=UA6528-9310-CS-426610.jpg

UA6528P UMC-made variant for PAL-N (Argentina) [3] System crystal is 21492337.5 Hz (exactly 6×229.2516×15625)


UA6538(P??) UMC-made variant for playing NTSC games in PAL countries. Emits PAL-B video. Vblank interrupt intentionally emitted 50 scanlines later than 2C07. Video DAC is brighter and more saturated (how so?). See also Clock rate.

PPU=UA6538 9214-BA 221530.jpg

UA6541 UMC-made clone of 2C07 [4]

PPU=UA6541 8832S.JPG

UA6548 UMC-made variant for PAL-M (Brazil) System crystal is 21453671… Hz (exactly 6×227.25×4500000÷286)

PPU=UA6548 9232-BS 825520.jpg

UM6558 UMC-made variant of UA6538 for SECAM countries. Emits 8-bit "Color Data" digital bus, for conversion into SECAM by UA6559 IC. Color palette noticeably off. System crystal is 21312500 Hz (exactly 4×341×15625). Maybe supports both 50 and 60 Hz operation?

PPU=UM6558 9342S 924510.jpg

UM6561xx-1 UMC-made NES-on-a-chip for NTSC. PPU half believed to be mostly identical to UA6528. Revisions "xx" F, AF, BF, CF known.

Emphasis is much stronger than on UA6528 and official PPUs.

UM6561xx-2 UMC-made NES-on-a-chip for PAL-B. PPU half believed to be mostly identical to UA6538. Revisions "xx" F, AF, BF, CF known.

AF revision has graphical and timing glitches in Prince of Persia perhaps caused by sprite 0 hit being missed for reasons not yet understood. F and BF revisions are not affected.

Emphasis is much stronger than on UA6538 and official PPUs.

NOAC=UM6561 AF-2 9440A R81040.jpg

TA-02N ??-made die-mask clone of 2C02G, despite the "6528" label.[5] Chip underside also has two codes of currently unknown purpose.

PPU=TA-02N 6528 9248.jpg PPU=TA-02N Underside NT0181 609860A.jpg

TA-02NP ??-made clone of UA6538. Pins 14-17 are background color in, like normal 2C03[6]

PPU=TA-02NP 6538 9229.jpg PPU=TA-02NP WDW23616.jpg

TA-02NPB It has unique feature of switching video region:

pin 16: Video mode: 50Hz (GND) / 60Hz (5V)

pin 17: Crystal select: 26.xxx MHz (GND) / 21.xxx MHz (5V)

pins 14 and 15 were grounded but when connecting them to +5V, PPU displayed solid color screen and game did not boot.

This one can be found in Rinco console (all Rincos have ability to switch video system, but some of them are build using blobs) and black one called "eastern computer"

PPU=TA-02NPB 9234.jpg

TA-08 ??-made clone of UM6558. Color Data bus bit-reversed?

PPU=TA-08 9345.jpeg

MG-N-502 PPU=MG-N-502 8933.jpg
MG-P-502 Micro Genius / TXC. Die shot matches UA6538.

PPU=MG-P-502 9221M 403600.jpg

T1818 ??-made NES-on-a-chip, NTSC timing. Believed to exist, but evidence currently scant.
1818P SiS-made[7]] NES-on-a-chip.[8]. Requires external 2KiB RAMs for CPU and PPU. UA6538 timing.

NOAC=1818P 8250.jpg

PM02-1 Gradiente-made variant for PAL-M (Brazil). [9]

PPU=PM02-1 HI17.jpg

VT01 V.R.Tech-made clone of UA6561. Only seen as chip-on-board. Supports composite out; RGB out; or 2bpp STN LCD, either greyscale or red/cyan checkerboard, 240 px wide, 80/120/160/240px tall. The chip was extended significantly in VT02 and newer NOACs.
GS87008 (Goldstar??)-made NTSC clone [10]

PPU=GS87008 8827.jpg

KC-6078 Found in MT777-DX famiclone, behaves exactly like UA6538


6022 ??-made NTSC clone. Details unknown.


2010 PPU=2010-9129M 5018.jpg
2A02E PPU=USC 2A02E 9136S 919620.jpg
02 PPU=02 HG-35.jpg
GT-01 PPU=GT-01 9045.jpg In PLCC
HA6538 PPU=HA6538 DR21.png
6538U-8 PPU=SENiTON 6538U-8.png
6538A PPU=SENiTON 9122D 6538A CFT2.png PPU=SENiTON 9122D 6538A CFU6.png

If you know of other differences or other revisions, please add them!

See also