Nicolas Electronics

Electronic projects and programming

Electronics

Reverse Engineering the Playstation G-CON 45

I’ve recently been interested in my old Playstation 2.
Having played with the Playstation 2 when I was younger I remember the fun my brother and I had playing Time Crisis 3 with the G-CON 2 and the G-CON 45.

Now, most (all?) older version light guns don’t work on the newer flat screen TVs.
This is because of how they process / display the frames.

I researched how the G-CON45 works and it uses what’s known as the cathode ray timing method.

To my understanding, every H-SYNC increases the Y-coordinate by 1. The X position is determined by the timing between two H-SYNC and when the sensor sees the change in brightness of the “pixel” on a CRT TV, due to the electron beam hitting the phosphor.
Then it’s just a matter of passing on those coordinates to the Playstation and a bit of collision detection to determine if you hit a “bad guy” or not.

After a bit of research on google, I couldn’t find any claims that approved or disapproved my understanding of the G-CON 45.
So I did what I usually do, crack it open, see what’s inside and google again.

Here’s the PCB reverse engineered. It’s a small board and didn’t take too long to make.
The capacitor values might be wrong, I’m using one of those €20 component tester.
(more…)

WS2812 LED driver on a 16F876A @20MHz

Someone on the matrix multimedia forum (French) needed to drive some WS2812 LEDs and wanted to use a 16F876A at 20MHz to do so.
The WS2812 LEDs are RGB LEDs with an integrated controller chip. There’s a data input and data output so you can cascade multiple LEDs by connecting DO to DI of the next LED. Each LED reads 3 bytes, being the value of the color green, red and blue.
Once you’ve sent a color to the LED, it will stay that color until you send another code.

Driving the LEDs would require timings in the 50ns/100ns range, but you can stretch it just a bit.
This is one of those things where timing is pretty much crucial and an AVR would be a better microcontroller for this as it executes one instruction per clock cycle where the PIC needs 4 clock cycles per instruction.
(more…)

DCF77 Radio Clock

In 2009 I made a DCF77 radio clock for my final years project. I used Flowcode to program the radio clock back then.

Today, I’ve rewritten the code in C and I used the free version of the XC8 compiler to compile it.
I’m using the Winstar yellow 16×2 OLED display and my library to display the time and date.

(more…)