Specs:
- 128x128 framebuffer, 128x100 visible onscreen
- NTSC Composite video output
- Fast 1 cycle per byte hardware blitter
- 8KB of RAM
- CPU clock at 3.5MHz
- Audio Coprocessor controlling an 8-bit DAC (second 6502 running at 14 MHz)
- Cartridge/expansion port that exposes the system bus, as well as a SPI port
- 32KB of address space allocated to the cartridge port
- Controller ports compatible with Genesis controller
Much of the GameTank is fairly typical of a W65C02-based retrocomputer project, but it does have a special trick up its sleeve. The composite video signal generator uses a dual-ported RAM as a framebuffer, and between the CPU and framebuffer sits a dedicated memory copy controller that can copy bytes into VRAM without the overhead of a software-defined copy loop.
Additionally, sound is now generated by a second 6502 programmed through dual-ported RAM, which controls an 8-bit DAC. A programmable interrupt generator and a latched buffer allow this coprocessor to generate samples with consistent timing.
The third prototype is on its way, and is designed to fit a case with a proper game console form factor. Once that is tested and working I plan to write up a detailed programming manual along with tutorials and a comprehensive software development toolchain.
At this time an online version of the emulator is now available, along with an example project written in C using the cc65 compiler.
The online emulator includes four hosted demos, and can also load ROM files from the local machine:
https://clydeshaffer.com/builds/GameTankEmulator/wasm
The EAGLE design files, the emulator, some software for the system are on my Github:
https://github.com/clydeshaffer/gametank
https://github.com/clydeshaffer/GameTankEmulator
Platforming game written in assembly:
https://github.com/clydeshaffer/cubicleknight
Tetris clone written in C: