Alegend45 wrote:
Yeah, but I'd try to emulate as many different video cards and sound cards and chipsets as I possibly could.
Assuming we're talking about all aspects of PCs here (that's what your OP implied) and not just classic DOS-era hardware:
I don't think you understand the situation in full (I'd border on saying you definitely don't understand the situation in full). Emulating mainstream video cards made after roughly 1996 (around the time the 3dfx Voodoo was introduced) is amazingly difficult without someone who can actually sit down and reverse-engineer the device at the hardware level. Why the complexity? Because all product documentation was (and still is -- the situation has only gotten worse) under NDA.
I speak the truth and from personal experience as well. Short story: in 1993 I wanted to give a shot at using actual hardware-accelerated features of the video card I happened to own (a VLB card using the
ET4000/W32 chipset). However, as I expected, there was no documentation for the acceleration features of this card. Sure, the card manufacturer offered 3D Studio drivers (whoop dee doo), but most every other application I found (including X drivers) just used VESA -- i.e. no actual hardware acceleration capabilities of the card. I knew the card had features like smooth screen panning, hardware sprite support, masking, and some basic 3D capabilities (reminder of what year this story takes place), and I wanted to tinker with those, yet I had no idea how. I was used to classic 320x200x256 (segment A000) mode.
I decided to contact Tseng Labs directly -- I did this because in the past I had contacted companies (specifically Zilog) to get information on their chips and was greeted by folks who sounded thrilled that I wanted docs, so I moronically assumed that it'd be the same with PC hardware manufacturers. My first call with Tseng consisted of telling them the truth: I was just a generic hobbyist wanting to tinker. I still remember the call: I was handed to some manager somewhere and was politely yet very directly told "sorry we don't do that". A few weeks later I tried a different approach: I explained to the gal at the front desk that I was working on a combination of a hardware/software project and that I needed product documentation since we were considering the ET4000/W32 chip for our device. I was handed to some other manager, who asked me to explain in detail the project and how many chips we'd be looking at using, so I made some shit up on-the-fly (I said for starters a few hundred chips). After an uncomfortable delay the person responded that they could ship technical documentation to me, assuming -- and I quote -- that "I gave them my word that I would not distribute or copy it". A week later I had the documentation (around 40 double-sided pages if I remember right).
Was I able to accomplish anything? Not really -- the documentation was mainly for hardware implementation (i.e. stuff someone designing a circuit or card would need for interfacing with the chip), and the software side of things was tiny (a few pages at most). The software bits were obviously translated and badly at that (that year I was a 3rd-year Mandarin student and was fairly certain the conversion was from Chinese to English, but I still remember second-guessing myself sometimes). I wasn't going to get any actual support from Tseng -- think about what schmooze I had to go through just to get what I did? -- so I was out of options. I gave up. The end.
Fast forward to today and think about NDA, IP, and DMCA. Now ask yourself the question: do you really think it's possible for you to "emulate as many video chipsets as possible" when you have access to absolutely no official documentation? If you think the answer is "yes", you've got your head buried deep in the (hopefully sweet-tasting) sand. Reverse-engineering is a very lengthy process, and is in no way/shape/form easy. Hell, you're on a nesdev forum, where all public documentation for the console itself has consisted of reverse-engineering efforts -- that console came out in 1983 and
folks here are STILL trying to figure out its behaviour. Even open-source operating systems like Linux end up getting handed binary blobs from companies like nVidia (graphics chips) and Broadcom (wireless NICs and switching fabrics), citing IP. AMD has pulled PR stunts insisting they "want to help Linux and provide the documentation" yet the documentation they've given has been sub-par (from what I understand). OpenBSD has
tons of songs talking about this predicament (see the descriptions for songs "100001 1010101", "Puffy Baba and the 40 Vendors", "Blob", "Hackers of the Lost RAID", and "Wizard of OS").
So how's that sand? :-)
Now, assuming we're talking about DOS-era hardware: above still applies, just to a lesser degree; see below.
Drag wrote:
Surprisingly, the vast majority of them seem to boil down to VGA compatible or Soundblaster compatible. Provide generic VGA and generic Soundblaster emulation, and you'll support a very large portion of PC software right then and there.
Assuming we're still talking about classic DOS-era stuff -- correct, but don't forget about
VESA/VBE. I feel sorry for anyone having to emulate that.