Pushing 8 bit to the extreme by soldering two 1284s side by side to make a hopefully pretty awesome game console.
The left one is the GPU, the right one is the Game Logic and Audio UC. The GPU has fixed firmware with no update capabilities, I already have the most essential parts of its code completed. It uses a very dirty trick utilizing the entire 128K of the 1284 to realize video modes "normally" impossible. So in essence this UC can be regarded as a crude "graphics card" with 16K Graphics RAM.
Why exactly 18 MHz? It seems to be a rather common crystal, and about the only one not directly derived from NTSC colorburst by which it is still possible to maintain exact NTSC timing. One scanline is exactly 1144 clocks, 8 * 11 * 13, which has a minor significance in that too that the base timer for it can be a 8 bit one with a prescaler of 8 (a 16 bit timer would still available, but realizing this I left the pin clear for the programmer).
The most common video modes would be a set of 1bpp and 2bpp modes at 288 pixels width (practically square pixels), and 4bpp mode at 192 pixels width (so for example Flight of a Dragon or Stormforce could be ported directly to this contraption).
Uzebox compatibility is sadly not possible for several reasons, one is that a full set of 8bpp tiles wouldn't fit, the other is that at this frequency and Uzebox Mode 3's resolution, it is not possible to create a tiled mode which fetches every pixel's colour directly from RAM.
The transfer mechanism I devised could be capable even to fill up the entire Graphics RAM in one VBlank, allowing to design a game not that tightly bounded to the frame rate (as if you skipped a frame, the GPU would keep displaying the previous one, you can render for multiple frames). This makes such things possible like more elaborate 3D or pseudo-3D (Outrun).
Audio is up to 31.5KHz stereo, the GPU providing the external interrupt for this.
For the pixel output, I considered using RRGGBBII, which would be a better colour space, but it would also make building the DAC more complex, and needing more precision. I rather chose to stick with the same BBGGGRRR layout like Uzebox (or the Enterprise 128).
For performance, comparison with Uzebox:
- Uzebox, 200 lines display: ~111000 cycles VBlank
- MicroDuo, 200 lines display: ~228000 cycles
- Uzebox, 224 lines display: ~67000 cycles VBlank
- MicroDuo, 224 lines display: ~256000 cycles
Emulation would be pretty much possible, when performance matters, the GPU could be done by native code (as it has fixed firmware), which could make it even faster than emulating Uzebox.
As it is now, mostly it needs about the same components and circuits like the Uzebox does, so I hope I wouldn't eventually send too many 1284's to the IC heavens trying to build this.