Game console prototype "GameTank"

For discussing the 65xx hardware itself or electronics projects.
User avatar
BigEd
Posts: 11463
Joined: 11 Dec 2008
Location: England
Contact:

Re: Game console prototype "GameTank"

Post by BigEd »

I suspect it's the latter. Lower bandwidth for chroma is a good match to the human visual system - we don't need every pixel to have a different colour. Some nice optical illusions make use of this. (See also Bayer filter)
barnacle
Posts: 1831
Joined: 19 Jan 2004
Location: Potsdam, DE
Contact:

Re: Game console prototype "GameTank"

Post by barnacle »

Bit of both. The spec says that the colour signals shall be bandwidth limited to that value. The intent is that the colour information doesn't take up too much of the bandwidth of the overall system. There has to be a notch filter in the luminance signal to avoid luma information of the correct frequency being decoded as false colours - you've probably seen horrible crawling yellows and blues on checked or striped clothing on old TVs.

Another reason though is that it doesn't need to be any greater bandwidth; the human eye is very good about telling different colours apart, but not in noting exactly where these colours are. Since bandwidth is equivalent to the size of a coloured blob on screen (horizontally), increasing the bandwidth doesn't do anything for the picture other than increasing the cost to transmit it.

There's a good link here about how the frequencies were selected for NTSC to fit everything in the 5MHz bandwidth without causing nasty surprises. https://msys-mv.blogspot.com/2011/01/wh ... uency.html

But as Samuel Johnson said (of dancing dogs) the wonder is not that it does it so well but that it does it at all.

Neil
Martin_H
Posts: 837
Joined: 08 Jan 2014

Re: Game console prototype "GameTank"

Post by Martin_H »

barnacle wrote:
So if you have a convenient 3.58MHz signal, you can generate a clock for that and use that as the burst. The phase of the colour signal itself says what colour should be displayed; the amplitude says how bright it should be. You can generate that signal by phase delaying the clock... say, eight steps into the 3.58MHz gives eight colours.
That part of the explanation helped. But the Atari 800 had over 256 colors, so they must have incredibly fine control over that phase delay.
barnacle
Posts: 1831
Joined: 19 Jan 2004
Location: Potsdam, DE
Contact:

Re: Game console prototype "GameTank"

Post by barnacle »

Two ways to do that: either, as you say, very close control over the phase delay, or more likely, RGB output and an analog NTSC coder.

e.g. https://linearparts.com/documents/ASTEC ... e_Info.pdf I think that one is NTSC

Neil
User avatar
BigDumbDinosaur
Posts: 9425
Joined: 28 May 2009
Location: Midwestern USA (JB Pritzker’s dystopia)
Contact:

Re: Game console prototype "GameTank"

Post by BigDumbDinosaur »

barnacle wrote:
But as Samuel Johnson said (of dancing dogs) the wonder is not that it does it so well but that it does it at all.

NTSC reflected the electronic capabilities of the latter 1930s. and the color hack (and it definitely was a hack) reflected what electronics could do c. 1950.  Dancing dogs indeed!
x86?  We ain't got no x86.  We don't NEED no stinking x86!
barnacle
Posts: 1831
Joined: 19 Jan 2004
Location: Potsdam, DE
Contact:

Re: Game console prototype "GameTank"

Post by barnacle »

A most impressive hack was the way that Sony avoided the license fees to use the default PAL decoder: rather than referring the colour burst phase, they observed the eight-field frame sequence... and derived the correct reference phase from there.

Neil
User avatar
Agumander
Posts: 129
Joined: 17 Jul 2018
Location: Long Island, NY
Contact:

Re: Game console prototype "GameTank"

Post by Agumander »

I wanted to share a technical victory I just had on this project: I've finally designed the IDT7007 dual-port SRAM out of the system by replacing it with a pair of single-port SRAMs.
My solution takes advantage of one side being read-only: Writes immediately take effect on the "system side" RAM, and the data+address are latched. This write will then be mirrored onto the "video side" RAM chip when the video circuit isn't busy reading.

This was actually somewhat tricky, and my initial prototype didn't work because at first I tried performing the write on the opposite phase of my pixel clock that latches the current color. Unfortunately I'd forgotten that the pixel latching signal is suspended during blanking intervals, so the writes during that time weren't going through. I ended up hacking in a shift register to create controlled delays of the pixel clock, and OR'ed together the original with a delayed copy to determine when it was safe to perform the copy.

The 7007 wasn't the only dual-port RAM I was using, but I found a drop-in replacement at a good price and enough quantity to make quite an absurd number of GameTanks. I think I'll still try to solve that puzzle as well, though it'll take a bit more research as my approach to share a single RAM between two busses using a FET switch didn't work at 3.5 and 14MHz.
Attachments
20251126_024816.jpg
User avatar
BigEd
Posts: 11463
Joined: 11 Dec 2008
Location: England
Contact:

Re: Game console prototype "GameTank"

Post by BigEd »

So, you had one pending write for some small number of clock cycles? Something like a writeback queue, but very short? Nice idea!
User avatar
Agumander
Posts: 129
Joined: 17 Jul 2018
Location: Long Island, NY
Contact:

Re: Game console prototype "GameTank"

Post by Agumander »

BigEd wrote:
So, you had one pending write for some small number of clock cycles? Something like a writeback queue, but very short? Nice idea!
Indeed! The access pattern is highly regular. The clocks involved are small number fractions off of each other, so there's only really five potential offsets between a data write and a pixel read.
For arbitrary usage rates it might need a deeper FIFO, but in this case the mirror writeback is faster than writes can happen so only the one queued element is needed.
User avatar
AndrewP
Posts: 368
Joined: 30 Aug 2021
Location: South Africa

Re: Game console prototype "GameTank"

Post by AndrewP »

Agumander wrote:
I wanted to share a technical victory I just had on this project: I've finally designed the IDT7007 dual-port SRAM out of the system by replacing it with a pair of single-port SRAMs.
Very cool!

What are the chips sitting on the bodged in breadboard? The two SRAMs and the shift register? (I've never used DIP SRAMs before so whilst they look physically small to me I don't have a point of reference).
User avatar
Agumander
Posts: 129
Joined: 17 Jul 2018
Location: Long Island, NY
Contact:

Re: Game console prototype "GameTank"

Post by Agumander »

AndrewP wrote:
What are the chips sitting on the bodged in breadboard? The two SRAMs and the shift register? (I've never used DIP SRAMs before so whilst they look physically small to me I don't have a point of reference).
The SRAMs are already on the board, I had orderd a PCBWay assembled prototype of my RAM replacement scheme but forgot about certain conditional clock suspensions. The chips in the breadboard are the shift register, a 74HC32 OR gate, and a 74HC04 inverter. Besides power and ground the connecting wires expose my 28MHz clock, the pixel clock, the latch signal for outgoing pixel color, the load signal !OE for fetching that pixel from RAM, and a masking signal for writebacks.

At first I'd gotten it working just using the inverter for delays, but when I swapped in different inverters from my bin the variation in prop delay was enough to break the timing. One chip would give a delay of 50ns while the other only 25ns. Which makes sense, the datasheet gives a range from 8-16ns and I was stacking all six.
Last edited by Agumander on Fri Nov 28, 2025 5:42 pm, edited 1 time in total.
sburrow
Posts: 833
Joined: 09 Oct 2021
Location: Texas

Re: Game console prototype "GameTank"

Post by sburrow »

Glad that you are making progress on the GameTank! Does this solution cost less? Or was there lacking inventory on the dual-port RAM?

Do you hand solder each GameTank yourself? Even the surface mount version?

Saw one of your latest videos on the GameTank Youtube Channel, I love the camera work and audio 'features', hilarious :) Keep them coming! Promoting your channel here: https://www.youtube.com/@gametank-console It seems you have more subscribers than me already, and way more views on individual videos! I probably aught to stop the teaching and posting math lecture videos, and switch over to homebrew 8-bit game development full-time ;)

Thanks!

Chad
User avatar
Agumander
Posts: 129
Joined: 17 Jul 2018
Location: Long Island, NY
Contact:

Re: Game console prototype "GameTank"

Post by Agumander »

sburrow wrote:
Glad that you are making progress on the GameTank! Does this solution cost less? Or was there lacking inventory on the dual-port RAM?

Do you hand solder each GameTank yourself? Even the surface mount version?
The dual-port RAM got hard to find anywhere but AliExpress, but it also does cost less to do it this way.

I've been letting PCBWay solder the surface mount GameTanks. It takes me a whole focused weekend to do the through-hole version, and my error rate with hand soldering this pitch of SMT is so high it would probably take a whole week to do one. :P

Though lately I've been considering the Lumen PnP machine to speed up my prototyping process.
User avatar
Agumander
Posts: 129
Joined: 17 Jul 2018
Location: Long Island, NY
Contact:

Re: Game console prototype "GameTank"

Post by Agumander »

More updates- finally started the crowdfunding campaign on Crowd Supply (basically Kickstarter for open source hardware)
Campaign:
https://gametank.zone/crowdsupply
Announcement video:
https://youtu.be/Zg9weWX294c

Still waiting on one more board revision from PCBWay to send off a representative unit for EMI testing. I'm gonna try sending it to Sunfire Testing, who gave a rather modest quote AFAICT for FCC SDoC and CE testing.
barnacle
Posts: 1831
Joined: 19 Jan 2004
Location: Potsdam, DE
Contact:

Re: Game console prototype "GameTank"

Post by barnacle »

Which regions will you be certifying for? As I recall, there were slightly different requirements for different global regions, and meeting all of them (for our commercial product) was a real head-bender... and not cheap.

Neil
Post Reply