However, I have yet to find any 9918A project that actually got to the production phase and become available ...
Been reading this VHDL code, and it ain't that bad.
Oh yeah, I've spent a *lot* of time on FPGA Arcade and reading Mike's code. That site is one of the main reasons I bought the devboard I did (it is the same one he was prototyping with.) The first thing I did was download the PACMAN code, compile and load it. It is pretty awesome to run the *real* game on *real* hardware.
However, all the stuff on that site is source code only, which is good, but it is not an end user product such that I'm planning for the F18A. Also, Mike seems to not really update the site much other than the news, and he's pretty focused on some new uber hardware MAME kind of thing. It would be awesome to talk to him about FPGA development and such, but the few times I've emailed he has never replied.
As for the 9918A implementation used in that ColecoVision project, I have that code and initially based some of my design around it. However, there are a few problems with the 9918A they designed and used:
1. It was very much designed to be use in a SoC (system on a chip) kind of environment. Getting it to actually plug into the socket in a real computer would take some modifications. That was my initial plan, get that 9918A code running, the hack it to add the features I wanted. There were problems.
2. It was designed to run at the original 10MHz, and thus has the same limits as the real 9918A. While that is fine and all, I wanted to add enhancements, and at 10MHz you just really can't do much more than the original.
When you jump up to higher frequencies, like the 100MHz I'm running at, things change. Stuff they are getting away with in that 9918A design simply won't synthesize at 100MHz, too much propagation delay in what they are doing. At 10MHz they have time, but not at 50MHz or 100MHz. So, I wound up not being able to use anything except some ideas about how to cut up the parts of the system and such, and even then my design was so different that it does not always work out. You learn a lot from reading other people's code though, so don't get me wrong, I'm grateful to have their VHDL to see how they did certain things.
You also get a really good idea about what designers of ICs go through. I'm earning my education for sure at 100MHz, but I can't even imagine trying to get something to run at 1GHz or more like modern CPUs. That stuff is insane. I have found that some of the best information has been from computer architecture and design books from the mid 70's. The information still applies and has helped me design and write better VHDL, plus understanding what I have to do to keep things running at 100MHz.
Of course you've already heard of this one
I did not know about that project, and I have never seen that website! Thanks for the link. I do have something to complain about though. The specs on that new system don't match the 99/4A. Gigabit Ethernet... 64MB of RAM... 18-bit color... Those are all way overboard for the 99/4A, IMO. Tursi and I have had this conversation numerous times, about what we *can* do vs. what we *should* do to stay true to the original machine. If you change too much, or add things that go way overboard, then the computer ceases to be a 99/4A and no one has any interest.
The common factor here is the fact that we all had a 99/4A at some point in our past and we each have an attachment to it. There currently is exotic hardware (AMS cards, Geneve stuff, etc.), but it draws a very small subset of the userbase because so few people have the stuff, and it is no longer generally available for purchase.
In designing the F18A one of my primary goals was to provide features that match the system (i.e. 512 colors max, etc.), yet provide enhancements that don't make new or existing software unique to the new hardware. I'll probably never have more "specs" than the 9958 provided, since those existed in the MSX2 systems which were 3.5MHz Z80 based, so that seems applicable to the 99/4A as well.
As for the sprite issue, I figured displaying all 32, no matter what row they were on, would not affect existing software or add anything that the original 9918A could not do, except fix the flickering when 5 or more sprites are on a line. Based on the feedback so far I now know I need to consider a 4-sprite limit as the original 9918A had.
Edited by matthew180, Fri Sep 10, 2010 3:28 PM.