Nightmaretony wrote:
Am outputting to plain RGB at NTSC frequencies. Such a unit outputting NTSC and VGA will get higher marks from hobbyists instead of locking into one or the other.
Your best bet would be to just output at NTSC, and then include a scan-converter circuit for VGA then, because I'll be honest -- NTSC and VGA are so far apart that they're not even considered remotely compatible. The only thing they share in common is vertical sync frequency.
Quote:
The C64DTV does it with a 4-bit luma and 4-bit chroma DACs, so a 5-bit DAC is all that is really required for this type of stuff.
Never heard of the C64DTV. Throw a link?
http://www.hackaday.com/entry/1234000153073548/http://en.wikipedia.org/wiki/C64_Direct-to-TVto name just a few.
Quote:
Simpler interfacing to use such a graphics board with an SBC.
You send 2 bytes in a row
Byte 1: register addres
Byte 2: register data
and use those in a variation thereof.
OH -- I see what you're talking about. Yes, the program I had in mind for the ATmega32s were going to rely on the 6522's port-A automated handshake mode. The data-available and data-ack signals were going to be sampled every 8 pixels, so it would support 144KBps best-case data transfer throughput. Since video RAM is 2K per chip, the need for the more dynamic features doesn't exist, since the CPU can (in theory at least) bit-bang video memory with plenty of time to spare.
A similar interface would be relatively easily achieved with an FPGA as well, but to be honest, you can't do it with a simple alternating address/data/address/data sequence, because you run the risk of losing synchronization. therefore, I'm using a 9-bit port, where the 9th bit indicates that you're loading an address versus transmitting normal data.
Quote:
None of the above. Back when I was designing on this game system called Neo Geo, all graphics where sprite based as 16 by 16 tiles. You could select from 65,356 of these tile graphics.
You and I need to exchange notes. I had no idea you were on the NeoGeo's hardware design team. All of my experience comes from Commodore hardware (and limited Atari hardware, but only indirectly, via the Commodore-Amiga).
The idea that I had for the FPGA-based solution was that I was going to have a 12.8MBps bus, so that I could deliver a real 640x480 16-color display, or 320x480 256-color display. Inspired by Jay Minor's work, the display data was going to be broken up into 8 bitplanes, each of which is independently enabled, with unique DMA fetch pointers for each plane. When an idle "time slot" is encountered, the CPU is allowed access to the frame buffer. Obviously, the CPU has access during all sync/retrace periods too. Thus, enabling all 8 planes results in the slowest CPU access rate, while a monochrome display results in the fastest. (Well, while still being able to display something.)
But here is where my idea differs from most:
each bit plane is its own monochrome sprite. Each sprite contributes a different weight to the color look-up tables -- hence, sprite 0 contributes bit 0 of the pixel number, sprite 1 contributes bit 1, etc. Therefore, you can have 8 monochrome sprites per line with no discernable playfield, OR, you could have 4 monochrome sprites per line with a 16-color playfield, OR you could have 2 monochrome sprites, an 8-color sprite, and an 8-color playfield (3 playfield bits + 2 monochrome sprite bits + 3 8-color sprite bits = total of 8 bits to CLUT), etc. Sprite depth priority is, therefore, controlled exclusively by how the CLUT entries are loaded.
Also unlike Atari and Amiga-style video chips, I was planning on supporting having sprites be able to be retriggered on a single scanline. Hence, though you have only 8 hardware sprites, you're allowed more than 8 sprites on a single scanline,
IF your CPU is fast enough to keep up (which a 4MHz 65816 ought to be, especially if a 1.19MHz 6507 can do it in the Atari 2600).
Quote:
The idea being the 27C801 would store all the graphics you want, then you can simply call them up.
PutSprite(Graphic#325,Xpos320,Ypos2)
But, how many sprites are allowed on a single horizontal scanline at once? How is this communicated to the graphics chip? It sounds very much like a display list (a la GTIA or Amiga's Copper) would have made much more sense. Indeed, the Atari 7800's display list system is *dang* slick, and I've also strongly considered that approach as well.