Over the summer, you might recall seeing a homebrew 6502 game console called the GameTank grace these pages. The product of [Clyde Shaffer], the system was impressively complete, very well documented, and even had a budding library of games.
Recently, [Clyde] took to the r/electronics subreddit to show off the latest improvement to the GameTank: a revised removable cartridge. The biggest change this time around is the addition of 32 KB of battery-backed SRAM that gives games (or any other software that might be on the cartridge) some persistent storage to work with.
By utilizing the eighth output bit of the cartridge’s shift register, software can switch between accessing the Alliance Memory AS29CF160B 2 MB NOR flash chip (which is taking the place of a traditional ROM) or SRAM. The upper half of the cart’s address space is always available, as it contains the 6502’s reset vector. But once the system is up and running, the lower half of the flash can be accessed by a sliding “window” in memory that’s controlled by the shift register.
Adding the backup power source only took the addition of a coin cell and a couple diodes to make sure it doesn’t interfere with the power being provided from the system when the cartridge is in use. Interestingly [Clyde] notes that if a cartridge is installed in the GameTank when the power is switched off, it can provide enough juice to preserve the system’s RAM — so removing the cartridge when not in use is probably a good idea.
The GameTank is a fantastic example of a well-executed homebrew 6502 computer, but of course the beauty of working with the iconic 8-bit microprocessor is how little it really takes to get a system off the ground. So if you’re looking to start with something a bit less complex, take a look at this single breadboard implementation we covered recently.
I love it and it’s super cool, just wondering why they went for 6502 instead of the superior 65c816? Struggling to see what is gained by losing address modes, having undefined instructions, etc. If it’s just nostalgia for 8-bit registers or NES development, and that’s what the gadget is for, then by all means, carry on. If there’s another reason to favor 6502, though, I’m interested to hear it. Either way, big achievement, well done, all that.
Well, to be honest I went with the 6502 because I’d just graduated from plugging Arduino shields together and it looked like an interface I could easily wrap my head around. I also found a lot more resources, information, and tooling for the 02 than the 816 at the time. Similar to why I picked the 02 over the Z80.
Now that I’ve spent a bunch of time writing software for this platform, I do often find myself thinking things like “Gee, I sure wish I could move the zero page.” or “16 bit math is such a pain”.
Your comment in particular has me now strongly considering upgrading to the ‘816. It’s looking like it might not be so hard to mod the existing copies of the hardware and maintain software compatibility due to emulation mode. A simple socket adapter could do the job, but maybe a couple of carefully chosen bodge wires could really let the GameTank leverage the additional features.