PPU variants: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(add ref for contes of UM6558's Color Data bus)
m (→‎RGB: 2C05-99 Registers aren't swapped. It wasn't written that they are before, but it saying it directly should clear up any confusion)
 
(95 intermediate revisions by 10 users not shown)
Line 1: Line 1:
Beyond the well-studied 2C02G, we know of the following PPU revisions, both made by Ricoh and other manufacturers:
Beyond the well-studied 2C02G, we know of the following PPU revisions, both made by Ricoh and other manufacturers:


{| class="tabular"
== Official==
| RP2C02 || Suspected to exist, none found. Probably too buggy to be usable.
 
Chips officially licensed by Nintendo for use in official consoles and arcade systems.
 
=== Composite ===
----
==== NTSC ====
{| class="tabular sortable"
! Part
! class="unsortable"| Picture
! First Seen
! Last Seen
! class="unsortable"|  Notes
|-
| RP2C02
| [[File:RP2C02_3F4_13.jpg|400px]] <br> [[File:PPU=RP2C02 3G2 23.jpg|400px]]
| align="center" | 1983-06 <br> 3F4 13
| align="center" | 1983-08 <br> 3H2 10
| Extremely rare. Likely only a few thousand made. http://web.archive.org/web/20160315221802/kitayama3800.publog.jp/archives/cat_915765.html (pictures not archived)]
|-
| RP2C02A
| [[File:PPU=RP2C02A 3H1 43.jpg|400px]]
| align="center" | 1983-08 <br> 3H1 43
| align="center" | 1983-08 <br> 3H2 10
| 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.
|-
| RP2C02B
| [[File:PPU=RP2C02B 4D4 28.jpg|400px]]
| align="center" | 1984-03 <br> 4C3 06
| align="center" | 1984-04 <br> 4D4 60
| Erroneous sprite pixels appear at X=255, just like 2C02A. Production seems to have halted to produce the 2C02C, but 2C02C production stopped and 2C02B production resumed, for unknown reasons.
|-
| RP2C02C
| [[File:PPU=RP2C02C 3M1 10.jpg|400px]]
| align="center" | 1983-12 <br> 3M1 10
| align="center" | 1984-02 <br> 4B1 76
| Eventually stopped being produced in favor of resuming 2C02B production, for unknown reasons.
|-
| RC2C02C
| [[File:PPU=RC2C02C 4A3 15.jpg|400px]]
| colspan="2" align="center" | 1984-01 <br> 4A3 15
| Comes in a ceramic package.[http://offgao.blog112.fc2.com/blog-entry-28.html] Currently only found inside serviced Famicoms.
|-
| RP2C02D
| [[File:PPU=RP2C02D 4H3 19.jpg|400px]]
| align="center" | 1984-08 <br> 4H2 60
| align="center" | 1984-12 <br> 4M2 29
|
|-
| RP2C02D-0
| [[File:PPU=RP2C02D-0 4K3 63.JPG|400px]] <br> [[File:PPU=RP2C02D-0 4M1 25.jpg|400px]]
| align="center" | 1984-10 <br> 4K3 63
| align="center" | 1984-12 <br> 4M1 25
|
|-
| RP2C02E
| [[File:PPU=RP2C02E 4M3 14.jpg|400px]] <br> [[File:PPU=RP2C02E 4M5 25.jpg|400px]]
| align="center" | 1984-12 <br> 4M3 14
| align="center" | 1985-10 <br> 5K4 36
|
|-
| RP2C02E-0
| [[File:PPU=RP2C02E-0 5K1 50.jpg|400px]]
| align="center" | 1985-03 <br> 5C5 46
| align="center" | 1986-06 <br> 6F4 39
| In this and all previous revisions, [[OAMDATA]] and palette RAM are not readable.
 
[https://forums.nesdev.org/viewtopic.php?p=194740#p194740 Various OAM evaluation bugs]
|-
| RP2C02G-0
| [[File:PPU=RP2C02G-0 7M3 52.jpg|400px]] <br> [[File:PPU=RP2C02G-0 1EP 2C.jpg|400px]]
| align="center" | 1987-05 <br> 7E2 80
| align="center" | 1993-10 <br> 3KM 1H
| 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.
|-
| RP2C02H-0
| [[File:PPU=RP2C02H-0 4AM 4B.jpg|400px]]
| align="center" | 1993-12 <br> 3MM 40
| align="center" | 1999-05 <br> 9EM 5B
| Thought have to have fixed some of the glitches in the previous 2C02G-0 revision<sup>(which?)</sup>.
|-
| RP2C02H-0 (laser)
| [[File:PPU=RP2C02H-0 1CL 42 (laser).jpg|400px]]
| align="center" | 2000-10 <br> 0KL 40
| align="center" | 2003-01 <br> 3AL 4B
| Reported (along with PAL PPUs) to have some kind of difference that caused problems with address bus filtering in earlier versions of the Hi-Def NES firmware.
|}
 
==== PAL ====
{| class="tabular sortable"
! Part
! class="unsortable"| Picture
! First Seen
! Last Seen
! class="unsortable"|  Notes
|-
| RP2C07
| [[File:PPU=RP2C07 5M4 26.jpg|400px]]
| colspan="2" align="center" | 1985-12 <br> 5M4 26
| 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]
|-
| RP2C07-0
| [[File:PPU=RP2C07-0 8F3 07.jpg|400px]]
| align="center" | 1987-10 <br> 7K3 27
| align="center" | 1991-10 <br> 1KM 13
|
|-
| RP2C07A-0
| [[File:PPU=RP2C07A-0 2FM 22.jpg|400px]]
| colspan="2" align="center" | 1992-06 <br> 2FM 22
| Some subtle differences in PPU that make this work better with Kevtris's HDNES, but otherwise believed identical to 2C07.
|}
 
=== RGB ===
----
{| class="tabular sortable"
! Part
! class="unsortable"| Picture
! First Seen
! Last Seen
! class="unsortable"|  Notes
|-
| RP2C03B
| [[File:PPU=RP2C03B 9C4 23.jpg|400px]] <br> [[File:PPU=RP2C03B 4B4 41.jpg|400px]]
| align="center" | 1984-02 <br> 4B3 59
| align="center" | 1989-03 <br> 9C4 23
| RGB PPU. Color emphasis bits set the corresponding channel to full brightness. Otherwise believed identical to 2C02B. OAMDATA and PPU palette are not readable.
|-
| RC2C03B
| [[File:PPU=RC2C03B 4A4 30.jpg|400px]] <br> [[File:PPU=RC2C03B 4A4 21.jpg|400px]]
| align="center" | 1984-01 <br> 4A2 14
| align="center" | 1984-01 <br> 4A4 30
|
|-
| RP2C03C
| [[File:PPU=RP2C03C 4C2 63.jpg|400px]]
| colspan="2" align="center" | 1984-03 <br> 4C2 63
| RGB PPU. Believed to be same core as 2C02C.
|-
| RC2C03C
| [[File:PPU=RC2C03C 4A2 10.jpg|400px]]
| colspan="2" align="center" | 1984-01 <br> 4A2 10
| Believed identical to RP2C03C.
|-
| RP2C04 <br> 0001
| [[File:PPU=RP2C04 0001 4C4 15.png|400px]] <br> [[File:PPU=RP2C04 0001 4E4 35.png|400px]]
| align="center" | 1984-03 <br> 4C2 01
| align="center" | 1984-05 <br> 4E4 35
| RGB PPU with a [[PPU palettes#2C04|scrambled palette]] and some added colors, for copy protection purposes. Otherwise behaves like 2C03C.
|-
| RP2C04 <br> 0002
| [[File:PPU=RP2C04 0002 4K2 35.jpg|400px]] <br> [[File:PPU=RP2C04 0002 4G4 19.jpg|400px]]
| align="center" | 1984-07 <br> 4G4 19
| align="center" | 1984-10 <br> 4K2 35
| Scrambles the palette uniquely compared to the previous revision.
|-
| RP2C04 <br> 0003
| [[File:PPU=RP2C04 0003 4K5 13.jpg|400px]] <br> [[File:PPU=RP2C04 0003 4L4 33.jpg|400px]]
| align="center" | 1984-10 <br> 4K5 13
| align="center" | 1984-11 <br> 4L4 33
| Scrambles the palette uniquely compared to the previous revisions.
|-
| RP2C04 <br> 0004
| [[File:PPU=RP2C04 0004 4L4 31.jpg|400px]] <br> [[File:PPU=RP2C04 0004 4L5 36.jpg|400px]]
| align="center" | 1984-11 <br> 4L3 18
| align="center" | 1984-11 <br> 4L5 36
| Scrambles the palette uniquely compared to the previous revisions.
|-
| RC2C05-01
| [[File:PPU=RC2C05-01 5F5 10.jpg|400px]] <br> [[File:PPU=RC2C05-01 5F5 11.jpg|400px]]
| align="center" | 1985-06 <br> 5F5 10
| align="center" | 1985-06 <br> 5F5 11
| [[PPUCTRL]] and [[PPUMASK]] swap locations. Five LSBs of [[PPUSTATUS]] return a constant. Otherwise believed to behave like 2C03.
|-
| RC2C05-02
|
| colspan="2" align="center" |
| Believed to be the same as 2C05-01, with the PPUSTATUS constant changed.
|-
| RC2C05-03
| [[File:PPU=RC2C05-03 5G1 12.JPG|400px]]
| colspan="2" align="center" | 1985-07 <br> 5G1 12
| Believed to be the same as 2C05-01, with the PPUSTATUS constant changed.
|-
|-
| RP2C02A || differences unknown. Substantial timing differences attested relative to revision D
| RC2C05-04
| [[File:PPU=RC2C05-04 7C3 12.jpg|400px]]
| colspan="2" align="center" | 1987-03 <br> 7C3 12
| Believed to be the same as 2C05-01, with the PPUSTATUS constant changed.
|-
|-
| RP2C02B || "
| RC2C05-99
| [[File:PPU=RC2C05-99 8M4 14.jpg|400px]] <br> [[File:PPU=RC2C05-99 8L4 11.jpg|400px]]
| align="center" | 1988-11 <br> 8L4 11
| align="center" | 1988-12 <br> 8M4 14
| 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. [[PPUCTRL]] and [[PPUMASK]] aren't swapped. Used in the [[wikipedia:Famicom Titler|Famicom Titler]]. ([http://photozou.jp/photo/photo_only/165213/17829839 picture of Titler PCBs])
|}
 
== Unofficial ==
 
These chips are found exclusively inside of Famiclone systems, made by multiple companies.
 
{| class="tabular"
! class="unsortable"| Part
! class="unsortable"| Picture
! class="unsortable"| Notes
|-
|-
| RP2C02C || "
| UA6528
| [[File:PPU=UA6528-8929-CS.jpg|400px]] [[File:PPU=UA6528-9310-CS-426610.jpg|400px]]
| UMC-made clone of 2C02E (or something earlier) [https://forums.nesdev.org/viewtopic.php?&t=20591]
|-
|-
| RP2C02D || differences unknown.
| UA6528P
| [[File:PPU=UA6528P-8911S.jpg|400px]]
| UMC-made variant for PAL-N (Argentina) [https://forums.nesdev.org/viewtopic.php?f=9&t=13530] System crystal is 21492337.5 Hz (exactly 6×229.2516×15625)
|-
|-
| RP2C02E || [[OAMDATA]] is not readable. [https://forums.nesdev.org/viewtopic.php?p=194740#p194740 Various OAM evaluation bugs]
| UA6538(P??)
| [[File:PPU=UA6538 9214-BA 221530.jpg|400px]]
| 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 {{sup|(how so?)}}. See also [[Clock rate]].
|-
|-
| RP2C02G || Writes to [[OAMADDR]] cause corruption of OAM. Leaving OAMADDR at a value of 8 or greater causes OAM corruption when rendering starts.
| UA6541
| [[File:PPU=UA6541 8832S.JPG|400px]]
| UMC-made clone of 2C07 [https://forums.nesdev.org/viewtopic.php?t=17257]
|-
|-
| RP2C02H || no known differences relative to 2C02G.
| UA6548
| [[File:PPU=UA6548 9232-BS 825520.jpg|400px]]
| UMC-made variant for PAL-M (Brazil) System crystal is 21453671… Hz (exactly 6×227.25×4500000÷286)
|-
|-
| RP2C03B || RGB PPU, believed standard. OAMDATA and PPU palette are not readable. Color emphasis bits set the corresponding channel to full brightness.
| UM6558
| [[File:PPU=UM6558 9342S 924510.jpg|400px]]
| UMC-made variant of UA6538 for SECAM countries. Emits 8-bit "[https://forums.nesdev.org/viewtopic.php?p=194423#p194423 Color Data]" digital bus, for conversion into SECAM by UA6559 IC. Color palette [http://www.emu-land.net/forum/index.php/topic,27910.msg1091380.html#msg1091380 noticeably off]. System crystal is 21312500 Hz (exactly 4×341×15625). Maybe supports both 50 and 60 Hz operation?
|-
|-
| RC2C03B || Believed identical to 2C03B.
| UM6561xx-1
| No Picture
| 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.
|-
|-
| RC2C03C || "
| UM6561xx-2
| [[File:NOAC=UM6561 AF-2 9440A R81040.jpg|200px]]
| 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.
|-
|-
| RP2C03G || Likely the same core as the 2C02G with the same bugs and features as the 2C02G.
| TA-02N
| [[File:PPU=TA-02N 6528 9248.jpg|400px]]
[[File:PPU=TA-02N Underside NT0181 609860A.jpg|325px]]
| ??-made die-mask clone of 2C02G, despite the "6528" label.[https://forums.nesdev.org/viewtopic.php?p=286601#p286601] Chip underside also has two codes of currently unknown purpose.
|-
|-
| RP2C04-0001 || Scrambled palette and new colors, otherwise like 2C03.
| TA-02NP
| [[File:PPU=TA-02NP 6538 9229.jpg|400px]] [[File:PPU=TA-02NP WDW23616.jpg|400px]]
| ??-made PPU, Dendy compatible (not a 6538 clone). Pins 14-17 are background color in, like normal 2C03[https://forums.nesdev.org/viewtopic.php?p=274318#p274318]
|-
|-
| RP2C04-0002 || "
| TA-02NPB
| [[File:PPU=TA-02NPB 9234.jpg|400px]]
| ??-made PPU, "NTSC for PAL-B" (NPB) Dendy-compatible. Has a unique video switching capability shared between it and other TA-02NPx chipsets, as well as the WDL chipset.
|-
|-
| RP2C04-0003 || "
| TA-08
| [[File:PPU=TA-08 9345.jpeg|400px]]
| ??-made PPU, Second source alternative to UM6558. Color Data bus bit-reversed?
|-
|-
| RP2C04-0004 || "
| MG-N-502
| [[File:PPU=MG-N-502 8933.jpg|400px]]
|
|-
|-
| RC2C05-01 || [[PPUCTRL]] and [[PPUMASK]] swap locations. Five LSBs of [[PPUSTATUS]] return a constant. Otherwise like 2C03.
| MG-P-502
| [[File:PPU=MG-P-502 9221M 403600.jpg|400px]]
| Micro Genius / TXC. Die shot matches UA6538.
|-
|-
| RC2C05-02 || "
| 1818N
| [[File:CPU = 1818N 9218.png|200px]]
| ??-made NES-on-a-chip, NTSC timing.
|-
|-
| RC2C05-03 || "
| 1818P
| [[File:NOAC=1818P 8250.jpg|160px]]
| SiS-made[//forums.nesdev.org/viewtopic.php?t=24499]] NES-on-a-chip.[//forums.nesdev.org/viewtopic.php?p=228515#p228515]. Requires external 2KiB RAMs for CPU and PPU. UA6538 timing.
|-
|-
| RC2C05-04 || "
| PM02-1
| [[File:PPU=PM02-1 HI17.jpg|400px]]
| [[wikipedia:IGB_Eletr%C3%B4nica|Gradiente]]-made variant for PAL-M (Brazil). [https://forums.nesdev.org/viewtopic.php?p=195175#p195175]
|-
|-
| RP2C07 || PAL-B PPU. Vblanking is 71 scanlines long. OAM evaluation can never be fully disabled. Red/green color emphasis swapped.
| VT01
| No Picture
| 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 [[VT01 STN Palette|red/cyan checkerboard]], 240 px wide, 80/120/160/240px tall. The chip was extended significantly in [[VTxx#VT02|VT02]] and newer NOACs.
|-
|-
| RP2C07A || Some subtle differences in PPU that make this work better with Kevtris's HDNES, but otherwise believed identical to 2A07.
| GS87008
| [[File:PPU=GS87008 8827.jpg|400px]]
| (Goldstar??)-made NTSC clone [http://gxemu.blog67.fc2.com/blog-entry-363.html] <!-- https://archive.ph/70J8j -->
|-
|-
| UA6528 || UMC-made clone of 2C02G.
| KC-6078
| [[File:PPU=KC-6078.jpg|400px]]
| Found in MT777-DX famiclone, behaves exactly like UA6538
|-
|-
| UA6528P || UMC-made variant for PAL-N (Argentina) [https://forums.nesdev.org/viewtopic.php?f=9&t=13530] System crystal is 21492337.5 Hz (exactly 6×15625×229.2516)
| 6022
| [[File:PPU=6022.jpg|400px]]
| ??-made NTSC clone. Details unknown.  
|-
|-
| UA6538(P??) || UMC-made variant for playing NTSC games in PAL countries. Emits PAL-B video. Vblank IRQ intentionally emitted 50 scanlines later than 2C07. See also [[Clock rate]].
| 2010
| [[File:PPU=2010-9129M 5018.jpg|400px]]
|
|-
|-
| UA6541 || UMC-made clone of 2C07 [https://forums.nesdev.org/viewtopic.php?t=17257]
| 2A02E
| [[File:PPU=USC 2A02E 9136S 919620.jpg|100px]]
| Dendy Timing. On a large solid-color background (especially yellow, green), every other row has a horizontal stripe.
|-
|-
| UA6548 || UMC-made variant for PAL-M (Brazil) System crystal is 21453671… Hz (exactly 3067875000÷143)
| 02
| [[File:PPU=02 HG-35.jpg|400px]]
|
|-
|-
| UM6558 || UMC-made variant of UA6538 for SECAM countries. Emits 8-bit "[https://forums.nesdev.org/viewtopic.php?p=194423#p194423 Color Data]" digital bus, for conversion into SECAM by UA6559 IC. Color palette [http://www.emu-land.net/forum/index.php/topic,27910.msg1091380.html#msg1091380 noticeably off]. Maybe supports both 50 and 60 Hz operation?
| GT-01
| [[File:PPU=GT-01 9045.jpg]]
| In PLCC
|-
|-
| UM6561 || UMC-made NES-on-a-chip. PPU half believed to be identical to UA6538.
| HA6538
| [[File:PPU=HA6538 DR21.png|400px]]
|
|-
|-
| TA-02N || ??-made clone of UA6528.
| 6538U-8
| [[File:PPU=SENiTON 6538U-8.png|400px]]
|
|-
|-
| TA-02NP || ??-made clone of UA6538.
| 6538A
| [[File:PPU=SENiTON 9122D 6538A CFT2.png|400px]] [[File:PPU=SENiTON 9122D 6538A CFU6.png|400px]]
|
|-
|-
| PM02-1 || [[wikipedia:IGB_Eletr%C3%B4nica|Gradiente]]-made variant for PAL-M (Brazil). [https://forums.nesdev.org/viewtopic.php?p=195175#p195175]
| 6528
| [[File:PPU=WDL 6528 JBBG.jpg|400px]] [[File:PPU=WDL 6528 JBBG Bottom.jpg|400px]]
| WDL made chip. NTSC timing. Palette like RP2C02.
|-
|-
| 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 [[VT01 STN Palette|red/cyan checkerboard]], 240 px wide, 80/120/160/240px tall.
| 8Z02
| [[File:8Z02 PPU.jpeg|400px]]
|
|}
|}


Line 72: Line 335:


== See also ==
== See also ==
* [[CPU variants]]
* [[Clock rate]]
* [[Clock rate]]
* [[NES_2.0#Byte_13_.28Vs._hardware.29]]
* [[NES_2.0#Byte_13_.28Vs._hardware.29]]
* https://forums.nesdev.org/viewtopic.php?p=150127#p150127
* https://forums.nesdev.org/viewtopic.php?p=150127#p150127

Latest revision as of 11:30, 21 November 2024

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

Official

Chips officially licensed by Nintendo for use in official consoles and arcade systems.

Composite


NTSC

Part Picture First Seen Last Seen Notes
RP2C02 RP2C02 3F4 13.jpg
PPU=RP2C02 3G2 23.jpg
1983-06
3F4 13
1983-08
3H2 10
Extremely rare. Likely only a few thousand made. http://web.archive.org/web/20160315221802/kitayama3800.publog.jp/archives/cat_915765.html (pictures not archived)]
RP2C02A PPU=RP2C02A 3H1 43.jpg 1983-08
3H1 43
1983-08
3H2 10
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.
RP2C02B PPU=RP2C02B 4D4 28.jpg 1984-03
4C3 06
1984-04
4D4 60
Erroneous sprite pixels appear at X=255, just like 2C02A. Production seems to have halted to produce the 2C02C, but 2C02C production stopped and 2C02B production resumed, for unknown reasons.
RP2C02C PPU=RP2C02C 3M1 10.jpg 1983-12
3M1 10
1984-02
4B1 76
Eventually stopped being produced in favor of resuming 2C02B production, for unknown reasons.
RC2C02C PPU=RC2C02C 4A3 15.jpg 1984-01
4A3 15
Comes in a ceramic package.[1] Currently only found inside serviced Famicoms.
RP2C02D PPU=RP2C02D 4H3 19.jpg 1984-08
4H2 60
1984-12
4M2 29
RP2C02D-0 PPU=RP2C02D-0 4K3 63.JPG
PPU=RP2C02D-0 4M1 25.jpg
1984-10
4K3 63
1984-12
4M1 25
RP2C02E PPU=RP2C02E 4M3 14.jpg
PPU=RP2C02E 4M5 25.jpg
1984-12
4M3 14
1985-10
5K4 36
RP2C02E-0 PPU=RP2C02E-0 5K1 50.jpg 1985-03
5C5 46
1986-06
6F4 39
In this and all previous revisions, OAMDATA and palette RAM are not readable.

Various OAM evaluation bugs

RP2C02G-0 PPU=RP2C02G-0 7M3 52.jpg
PPU=RP2C02G-0 1EP 2C.jpg
1987-05
7E2 80
1993-10
3KM 1H
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.
RP2C02H-0 PPU=RP2C02H-0 4AM 4B.jpg 1993-12
3MM 40
1999-05
9EM 5B
Thought have to have fixed some of the glitches in the previous 2C02G-0 revision(which?).
RP2C02H-0 (laser) PPU=RP2C02H-0 1CL 42 (laser).jpg 2000-10
0KL 40
2003-01
3AL 4B
Reported (along with PAL PPUs) to have some kind of difference that caused problems with address bus filtering in earlier versions of the Hi-Def NES firmware.

PAL

Part Picture First Seen Last Seen Notes
RP2C07 PPU=RP2C07 5M4 26.jpg 1985-12
5M4 26
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]
RP2C07-0 PPU=RP2C07-0 8F3 07.jpg 1987-10
7K3 27
1991-10
1KM 13
RP2C07A-0 PPU=RP2C07A-0 2FM 22.jpg 1992-06
2FM 22
Some subtle differences in PPU that make this work better with Kevtris's HDNES, but otherwise believed identical to 2C07.

RGB


Part Picture First Seen Last Seen Notes
RP2C03B PPU=RP2C03B 9C4 23.jpg
PPU=RP2C03B 4B4 41.jpg
1984-02
4B3 59
1989-03
9C4 23
RGB PPU. Color emphasis bits set the corresponding channel to full brightness. Otherwise believed identical to 2C02B. OAMDATA and PPU palette are not readable.
RC2C03B PPU=RC2C03B 4A4 30.jpg
PPU=RC2C03B 4A4 21.jpg
1984-01
4A2 14
1984-01
4A4 30
RP2C03C PPU=RP2C03C 4C2 63.jpg 1984-03
4C2 63
RGB PPU. Believed to be same core as 2C02C.
RC2C03C PPU=RC2C03C 4A2 10.jpg 1984-01
4A2 10
Believed identical to RP2C03C.
RP2C04
0001
PPU=RP2C04 0001 4C4 15.png
PPU=RP2C04 0001 4E4 35.png
1984-03
4C2 01
1984-05
4E4 35
RGB PPU with a scrambled palette and some added colors, for copy protection purposes. Otherwise behaves like 2C03C.
RP2C04
0002
PPU=RP2C04 0002 4K2 35.jpg
PPU=RP2C04 0002 4G4 19.jpg
1984-07
4G4 19
1984-10
4K2 35
Scrambles the palette uniquely compared to the previous revision.
RP2C04
0003
PPU=RP2C04 0003 4K5 13.jpg
PPU=RP2C04 0003 4L4 33.jpg
1984-10
4K5 13
1984-11
4L4 33
Scrambles the palette uniquely compared to the previous revisions.
RP2C04
0004
PPU=RP2C04 0004 4L4 31.jpg
PPU=RP2C04 0004 4L5 36.jpg
1984-11
4L3 18
1984-11
4L5 36
Scrambles the palette uniquely compared to the previous revisions.
RC2C05-01 PPU=RC2C05-01 5F5 10.jpg
PPU=RC2C05-01 5F5 11.jpg
1985-06
5F5 10
1985-06
5F5 11
PPUCTRL and PPUMASK swap locations. Five LSBs of PPUSTATUS return a constant. Otherwise believed to behave like 2C03.
RC2C05-02 Believed to be the same as 2C05-01, with the PPUSTATUS constant changed.
RC2C05-03 PPU=RC2C05-03 5G1 12.JPG 1985-07
5G1 12
Believed to be the same as 2C05-01, with the PPUSTATUS constant changed.
RC2C05-04 PPU=RC2C05-04 7C3 12.jpg 1987-03
7C3 12
Believed to be the same as 2C05-01, with the PPUSTATUS constant changed.
RC2C05-99 PPU=RC2C05-99 8M4 14.jpg
PPU=RC2C05-99 8L4 11.jpg
1988-11
8L4 11
1988-12
8M4 14
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. PPUCTRL and PPUMASK aren't swapped. Used in the Famicom Titler. (picture of Titler PCBs)

Unofficial

These chips are found exclusively inside of Famiclone systems, made by multiple companies.

Part Picture Notes
UA6528 PPU=UA6528-8929-CS.jpg PPU=UA6528-9310-CS-426610.jpg UMC-made clone of 2C02E (or something earlier) [2]
UA6528P PPU=UA6528P-8911S.jpg UMC-made variant for PAL-N (Argentina) [3] System crystal is 21492337.5 Hz (exactly 6×229.2516×15625)
UA6538(P??) PPU=UA6538 9214-BA 221530.jpg 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.
UA6541 PPU=UA6541 8832S.JPG UMC-made clone of 2C07 [4]
UA6548 PPU=UA6548 9232-BS 825520.jpg UMC-made variant for PAL-M (Brazil) System crystal is 21453671… Hz (exactly 6×227.25×4500000÷286)
UM6558 PPU=UM6558 9342S 924510.jpg 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?
UM6561xx-1 No Picture 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 NOAC=UM6561 AF-2 9440A R81040.jpg 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.

TA-02N PPU=TA-02N 6528 9248.jpg

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

??-made die-mask clone of 2C02G, despite the "6528" label.[5] Chip underside also has two codes of currently unknown purpose.
TA-02NP PPU=TA-02NP 6538 9229.jpg PPU=TA-02NP WDW23616.jpg ??-made PPU, Dendy compatible (not a 6538 clone). Pins 14-17 are background color in, like normal 2C03[6]
TA-02NPB PPU=TA-02NPB 9234.jpg ??-made PPU, "NTSC for PAL-B" (NPB) Dendy-compatible. Has a unique video switching capability shared between it and other TA-02NPx chipsets, as well as the WDL chipset.
TA-08 PPU=TA-08 9345.jpeg ??-made PPU, Second source alternative to UM6558. Color Data bus bit-reversed?
MG-N-502 PPU=MG-N-502 8933.jpg
MG-P-502 PPU=MG-P-502 9221M 403600.jpg Micro Genius / TXC. Die shot matches UA6538.
1818N CPU = 1818N 9218.png ??-made NES-on-a-chip, NTSC timing.
1818P NOAC=1818P 8250.jpg SiS-made[7]] NES-on-a-chip.[8]. Requires external 2KiB RAMs for CPU and PPU. UA6538 timing.
PM02-1 PPU=PM02-1 HI17.jpg Gradiente-made variant for PAL-M (Brazil). [9]
VT01 No Picture 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 PPU=GS87008 8827.jpg (Goldstar??)-made NTSC clone [10]
KC-6078 PPU=KC-6078.jpg Found in MT777-DX famiclone, behaves exactly like UA6538
6022 PPU=6022.jpg ??-made NTSC clone. Details unknown.
2010 PPU=2010-9129M 5018.jpg
2A02E PPU=USC 2A02E 9136S 919620.jpg Dendy Timing. On a large solid-color background (especially yellow, green), every other row has a horizontal stripe.
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
6528 PPU=WDL 6528 JBBG.jpg PPU=WDL 6528 JBBG Bottom.jpg WDL made chip. NTSC timing. Palette like RP2C02.
8Z02 8Z02 PPU.jpeg

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

See also