Skip to content
  • About Me
  • Books
  • Photography
  • Papers
  • Security
  • Forensics
  • Essays
  • Christianity

Calendar

November 2026
M T W T F S S
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« Sep    

Archives

  • September 2026
  • May 2026
  • April 2026
  • February 2026
  • December 2025
  • November 2025
  • October 2025
  • August 2025
  • July 2025
  • March 2025
  • December 2024
  • March 2024
  • July 2023
  • May 2023
  • February 2023
  • December 2022
  • November 2022
  • July 2022
  • May 2022
  • March 2022
  • January 2022
  • December 2021
  • November 2021
  • September 2021
  • July 2021
  • December 2020
  • November 2020
  • March 2020
  • September 2019
  • August 2019
  • August 2018
  • March 2018
  • March 2017
  • February 2017
  • January 2017
  • November 2016
  • October 2016
  • July 2016
  • April 2016
  • March 2016
  • February 2016
  • June 2015
  • March 2015
  • February 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • January 2014
  • October 2013
  • September 2013
  • June 2013
  • May 2013
  • April 2013
  • December 2012
  • May 2012
  • September 2011
  • June 2011
  • August 2010
  • July 2010
  • May 2010
  • April 2010
  • February 2010
  • July 2009
  • May 2008
  • March 2008
  • January 2008
  • June 2007
  • August 2006
  • February 2006

Categories

  • Apple
  • Christianity
  • Essays
  • Forensics
  • Gaming
  • General
  • Machine Learning
  • Music
  • Opinion
  • Photography
  • Politics
  • Security











Jonathan ZdziarskiNeat and Scruffy
  • About Me
  • Books
  • Photography
  • Papers
  • Security
  • Forensics
  • Essays
  • Christianity
Gaming

Pixel-Perfect Retro Gaming with TinyNES and c0pperdragon

On February 10, 2026 by Jonathan Zdziarski

The photo above isn’t an emulator screenshot, it’s a photo of the actual Zelda game played through my system on an HDMI monitor (any moire effect is a result of taking a picture of the monitor screen itself). For several months, I’ve been playing with the c0pperdrag0n PPU Digitizer; I’ve had a lot of success soldering it into a lot of devices it was never originally targeting: an early Famicom, a NES Test Market console and as of this writing, a TinyNES. The c0pperdragon PPU digitizer easily solders onto the back of a Ricoh 2C02 PPU and converts the picture into a signal its creator has dubbed Lumacode. The signal contains all of the RGB information necessary to render individual pixels for the game in high definition. This signal can then be rendered by a few different upscalers (I use OSSC Pro) to display on an HDMI monitor with absolute perfection.

If you’re not familiar with the TinyNES, it’s fully open source hardware to create a modern, but authentic, NES clone. It comes with DIP slots for the PPU and the CPU from an original NES, and all modern SMT circuitry for the discreet logic, RAM, and other components that aren’t crucial to accuracy. You can purchase TinyNES with clone chips (which do not provide authentic sound or picture), or you can de-solder the original PPU/CPU chips from an old NES and use it in the TinyNES, giving you an identical experience to the original console. If you don’t have any desoldering equipment, you can usually find these chips on eBay as well. Not only is the TinyNES small and modern, but it’s also more power efficient and even supports Famicom expansion audio (great if you like to play old FDS games like me).

The TinyNES has often been overlooked for its much pricier competitor, the Analogue NT Noir, which is an FPGA console capable of providing HDMI output. With the PPU Digitizer, however, the TinyNES can be made to output pixel-perfect video at a fraction of the price – and running original chips, rather than an FPGA reconstruction.

When I ordered the TinyNES, it wasn’t clear whether or not there would be room for the digitizer board, or whether it would work with clone chips, or at all. Here is the back of the TinyNES board, once removed from its case:

The PPU digitizer solders over the back of the pins, as shown. There are two pads for signal output and ground. I didn’t want to physically modify the TinyNES’ video port, as I wanted the ability to plug it into a PVM whenever I felt like it. Instead, I cut up a well-shielded RCA cable, ran it through one of the screw holes on the bottom, and soldered it to the digitizer, adding an extra video port out the back.

The per-pixel detail is far superior to the basic AV out that the TinyNES comes with. I was surprised to find that the clone chips it ships with are compatible with the digizier. I ended up also desoldering the NES CPU and PPU from an old console for the final version, as the sound from the clone CPU is quite inauthentic. So authentic that it even crashes in the same places that the original Test Market CPU crashed.

A lot of people may not like this hard-raw-pixel look, but once you get a clean signal like this you can layer special effects on top of it. The photo above adds scanlines and an overlay using the OSSC Pro’s built-in functions. It’s easier on the eyes than a blurry picture, and doesn’t look nearly as blocky as the original RGB signal.

Legend of Zelda, with scanlines and post-processing added

 

A close-up of Mario (Super Mario Bros. 2), with scanlines and post-processing

 

My understanding is you can also desolder the PPU chip from an arcade Vs. System to generate the RGB signals, however you’ll also need an RGB kit that doesn’t seem to be stocked right now. This seems like a much less expensive solution, unless you count the cost of a good desoldering gun (I use the Hakko FR-301) for all of my arcade PCB repairs and other electronics work.

For a clean look, I used a 5/16″ bit to drill a small hole in the back of the TinyNES body. This allowed me to screw in a second AV jack and run the Lumacode signal straight to it. This way, no wires hanging out of the unit and I can also use a PVM with it whenever I want.

  

Archives

  • September 2026
  • May 2026
  • April 2026
  • February 2026
  • December 2025
  • November 2025
  • October 2025
  • August 2025
  • July 2025
  • March 2025
  • December 2024
  • March 2024
  • July 2023
  • May 2023
  • February 2023
  • December 2022
  • November 2022
  • July 2022
  • May 2022
  • March 2022
  • January 2022
  • December 2021
  • November 2021
  • September 2021
  • July 2021
  • December 2020
  • November 2020
  • March 2020
  • September 2019
  • August 2019
  • August 2018
  • March 2018
  • March 2017
  • February 2017
  • January 2017
  • November 2016
  • October 2016
  • July 2016
  • April 2016
  • March 2016
  • February 2016
  • June 2015
  • March 2015
  • February 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • January 2014
  • October 2013
  • September 2013
  • June 2013
  • May 2013
  • April 2013
  • December 2012
  • May 2012
  • September 2011
  • June 2011
  • August 2010
  • July 2010
  • May 2010
  • April 2010
  • February 2010
  • July 2009
  • May 2008
  • March 2008
  • January 2008
  • June 2007
  • August 2006
  • February 2006

Calendar

November 2026
M T W T F S S
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« Sep    

Categories

  • Apple
  • Christianity
  • Essays
  • Forensics
  • Gaming
  • General
  • Machine Learning
  • Music
  • Opinion
  • Photography
  • Politics
  • Security

All Content Copyright (c) 2000-2025 by Jonathan Zdziarski, All Rights Reserved. Opinions are my own.