No not the game (although it was a fun game), I’m talking black and white TV, the next evolution of my console. I’d give it a name but it’s currently too close (identical?) to the Pico to be worth it.
I spent the better part of last weekend reading up on nodal analysis to be able to calculate the voltage at each junction of the R-2R ladder that I’ve added. The calculations themselves are simple, just an application of Ohms law. Simplifying the network however took most of the time, at least until the method finally clicked.
The Pico uses an R-2R ladder to convert the digital signal of the SX28 into an analogue signal ready for sending to a TV. Four pins on the SX28 allow 16 different voltages to be transmitted to the TV. The voltage levels are interpreted as intensity, however since the signal the TV uses 0.0v to sync on and 0.3v as black, that leaves around 10 voltage levels to play with.
Since the previous blog entry, I’ve reshuffled the layout with the power regulator on its own in the top left of the image. Partially cut off is the main power switch.
Looking at the main part of the image to the right of the SX28 you can see the R-2R resistor network used to convert the 4 bit digital signal into an analogue voltage which is adjusted to a 0-1.4v range via the bottom red potentiometer. Above the SX28 is the main external oscillator socket, the 80MHz oscillator is currently in the XGS. Just to the right of this, taped to the breadboard, is a switch to select between the external oscillator and the 4 pin SX-Key header.
The hardware above is still almost identical to the Pico however it won’t remain like this for long. The first divergence is probably going to come with the addition of joystick hardware. The Pico only supports a single joystick which is connected directly to the SX28. I’d like to have two ports (pong can be two player after all) so will be adding a serial interface for the joysticks.
The second area is either going to be interfacing with an SRAM chip or adding extra graphics hardware to take some pressure off of the SX28. I’m not sure which way to go with that yet, nor how problematic the pin count may be.
To test the new hardware I created a small program that outputs a white bar at the top and bottom of the screen. The code used for signal generation is the “GID j - pixel in a day” code with the colour burst generation stripped out. Nothing fancy, but at least it’s working :)