PPU variants: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (the one photo we've seen on a 2C02letterless)
(add a buncha PPU pictures)
Line 6: Line 6:
|-
|-
| 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.
| 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.
[[File:PPU=RP2C02A 3H2 07.jpg|400px]]
|-
|-
| RP2C02B || Sometimes erroneous sprite pixels appear in X=255.  
| RP2C02B || Sometimes erroneous sprite pixels appear in X=255.  
[[File:PPU=RP2C02B 4D4 28.jpg|400px]]
|-
|-
| RP2C02C || differences unknown.
| RP2C02C || differences unknown.
[[File:PPU=RP2C02C 3M1 10.jpg|400px]]
|-
|-
| RC2C02C || In ceramic package. [http://offgao.blog112.fc2.com/blog-entry-28.html] <!-- http://web.archive.org/web/20200423172237/offgao.blog112.fc2.com/blog-entry-28.html or http://archive.is/NpNbE -->
| RC2C02C || In ceramic package. [http://offgao.blog112.fc2.com/blog-entry-28.html] <!-- http://web.archive.org/web/20200423172237/offgao.blog112.fc2.com/blog-entry-28.html or http://archive.is/NpNbE -->
[[File:PPU=RC2C02C 4A3 15.jpg|400px]]
|-
|-
| RP2C02D || differences unknown.
| RP2C02D || differences unknown.
Line 20: Line 24:
[[File:PPU=RP2C02E-0 5K1 50.jpg|400px]]
[[File:PPU=RP2C02E-0 5K1 50.jpg|400px]]
|-
|-
| RP2C02G-0 || Writes to [[OAMADDR]] cause corruption of OAM. Leaving OAMADDR at a value of 8 or greater causes OAM corruption when rendering starts.
| 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.
[[File:PPU=RP2C02G-0 7M3 52.jpg|400px]]
[[File:PPU=RP2C02G-0 7M3 52.jpg|400px]]
|-
|-
| RP2C02H-0 || no known differences relative to 2C02G.
| RP2C02H-0 || Thought have to have fixed some of the glitches in the 2C02G
[[File:PPU=RP2C02H-0 4AM 4B.jpg|400px]]
[[File:PPU=RP2C02H-0 1CL 42 (laser).jpg|400px]]
|-
|-
| 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.
| 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.
[[File:PPU=RP2C03B 4L2 65.jpg|150px]]
|-
|-
| RP2C03C || RGB PPU. Believed to be same core as 2C02C.
| RP2C03C || RGB PPU. Believed to be same core as 2C02C.
Line 35: Line 42:
| RP2C03G || No photos on the internet, probably does not exist. If exists, likely the same core as the 2C02G with the same bugs and features as the 2C02G.
| RP2C03G || No photos on the internet, probably does not exist. If exists, likely the same core as the 2C02G with the same bugs and features as the 2C02G.
|-
|-
| RP2C04-0001 || [[PPU palettes#2C04|Scrambled palette]] and new colors, otherwise like 2C03.
| RP2C04 0001 || [[PPU palettes#2C04|Scrambled palette]] and new colors, otherwise like 2C03.
[[File:PPU=RP2C04 0001 4C4 15.jpg|150px]]
|-
|-
| RP2C04-0002 || "
| RP2C04 0002 || "
|-
|-
| RP2C04-0003 || "
| RP2C04 0003 || "
|-
|-
| RP2C04-0004 || "
| RP2C04 0004 || "
[[File:PPU=RP2C04 0004 4L4 31.jpg|150px]]
|-
|-
| RC2C05-01 || [[PPUCTRL]] and [[PPUMASK]] swap locations. Five LSBs of [[PPUSTATUS]] return a constant. Otherwise like 2C03.
| RC2C05-01 || [[PPUCTRL]] and [[PPUMASK]] swap locations. Five LSBs of [[PPUSTATUS]] return a constant. Otherwise like 2C03.
Line 85: Line 94:
|-
|-
| TA-02NP || ??-made clone of UA6538. Pins 14-17 are background color in, like normal 2C03[https://forums.nesdev.org/viewtopic.php?p=274318#p274318]
| TA-02NP || ??-made clone of UA6538. Pins 14-17 are background color in, like normal 2C03[https://forums.nesdev.org/viewtopic.php?p=274318#p274318]
[[File:PPU=TA-02NP 6538 9229.jpg|400px]]
|-
|-
| TA-02NPB || It has unique feature of switching video region:
| TA-02NPB || It has unique feature of switching video region:
Line 95: Line 105:


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"
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"
[[File:PPU=TA-02NPB 9234.jpg|400px]]
|-
| MG-P-502 || Micro Genius / TXC
[[File:PPU=MG-P-502 9221M 403600.jpg|400px]]
|-
|-
| T1818 || ??-made NES-on-a-chip, NTSC timing. Believed to exist, but evidence currently scant.  
| T1818 || ??-made NES-on-a-chip, NTSC timing. Believed to exist, but evidence currently scant.  

Revision as of 06:48, 15 September 2022

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

RP2C02 Extremely rare. Serial numbers suggest fewer than 6000 were made. (pictures not archived)

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 3H2 07.jpg

RP2C02B Sometimes erroneous sprite pixels appear in X=255.

PPU=RP2C02B 4D4 28.jpg

RP2C02C differences unknown.

PPU=RP2C02C 3M1 10.jpg

RC2C02C In ceramic package. [1]

PPU=RC2C02C 4A3 15.jpg

RP2C02D differences unknown.
RP2C02D-0 differences unknown.
RP2C02E-0 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.

PPU=RP2C02G-0 7M3 52.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 4L2 65.jpg

RP2C03C RGB PPU. Believed to be same core as 2C02C.
RC2C03B Tweaked palette; otherwise believed identical to RP2C03B.
RC2C03C Believed identical to RP2C03C.
RP2C03G No photos on the internet, probably does not exist. If exists, likely the same core as the 2C02G with the same bugs and features as the 2C02G.
RP2C04 0001 Scrambled palette and new colors, otherwise like 2C03.

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 "
RC2C05-04 "
RC2C05-99 Approximately equivalent to some 2C03. Used in the Famicom Titler. Behavior of five LSBs of PPUSTATUS unknown. (picture of Titler PCBs)

PPU=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.
RP2C07-0 Differences unknown from RP2C07
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)

PPU=UA6528P-8911S.jpg

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.
UA6541 UMC-made clone of 2C07 [4]
UA6548 UMC-made variant for PAL-M (Brazil) System crystal is 21453671… Hz (exactly 6×227.25×4500000÷286)
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?
UM6561xx-1 UMC-made NES-on-a-chip for NTSC. PPU half believed identical to UA6528. Revisions "xx" AF, BF, CF, F known.
UM6561xx-2 UMC-made NES-on-a-chip for PAL-B. PPU half believed to be identical to UA6538. Revisions "xx" AF, BF, CF, F known.

NOAC=UM6561 AF-2 9440A R81040.jpg

TA-02N ??-made clone of UA6528.

PPU=TA-02N 6528 9248.jpg

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

PPU=TA-02NP 6538 9229.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

MG-P-502 Micro Genius / TXC

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

T1818 ??-made NES-on-a-chip, NTSC timing. Believed to exist, but evidence currently scant.
T1818P ??-made NES-on-a-chip.[6]. Requires external 2KiB RAMs for CPU and PPU. UA6538 timing.
PM02-1 Gradiente-made variant for PAL-M (Brazil). [7]
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 [8]
KC-6078 Found in MT777-DX famiclone, behaves exactly like UA6538

PPU=KC-6078.jpg

6022 ??-made NTSC clone. Details unknown.

PPU=6022.jpg

2010 PPU=2010-9129M 5018.jpg
2A02E PPU=USC 2A02E 9136S 919620.jpg

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

See also