Message You guys have brought up some good points... So... for those of you that care, I'll share a little of my database schema and explain the few pitfalls I currently have. If you can bear through reading this, and offer suggestions, it may help clean up a few points. [Brief background: ggdb.com was originally created because we were taking a lot of pictures and writing lots of descriptions on the same game over and over again. We also wanted a way to record game specific technical information, we I created a way to reference that information from our inventory system. It started from that, but I have always wanted to build out the technical side of it.] In the database there is a primary record called simply "A Game". A Game is something like "Pac-Man", "Galaxian", even "Mars God of War." Off of that, there are associated records called "Game Entries" that have properties like Class and Sub-Class, Manufacturer, Year, and so on. For example, there may be 1980, Bally Midway, 'Coin-op', 'Arcade' that relates to the Pac-Man main entry. The picture looks a little like: [Game] 1 --- oo [Game Entry] + 1 ------ oo [Game Images] + 1 ------ oo [Game Links (manuals, etc)] + 1 ------ oo [Game Articles (tech)] Game is used to associate different, be related items. For the purpose of this discussion we can just refer to the Game Entry because that is what everything keys off of. Before I attempted to merge in the MAME code, I was building out a database that could be used to manually build data maps. I was working on something a little like: [Game Entry] oo ----- oo [Game Board] + 1 ----- oo [Memory Map Entry] + 1 ----- oo [Chip List] + 1 ----- oo [Pinout] Take an example like Q*bert. The entry for Q*bert would refer to the "System 80 Sound Board" that may in turn be referenced in other games (Krull, other system 80 pins, etc.). That board would have entries for the memory map, and (if I was crazy enough), it would have the part list for cross reference/documentation purposes. It would look like: http://ggdb.com/tech/Board.aspx?g=2221&l=6&b=6 And now I'm trying to match my Game/Game Entry (all of the "Coin-op" entries) to what is in MAME. Part of the problem is that MAME is ROM centric. All of the machine & driver information is set up and duplicated for each and every game. So I have a few choices in matching MAME information to what I was currently working on. They include choices like: METHOD A: Just keep MAME separate anyways because it won't always match reality. May be a little confusing, but very accurate. A separate "ROM Set" table would exist and reference a given Game Entry. Besides, keeping it separate reinforces the fact that this is what MAME does, not necessarily what the real world does. METHOD B: Attempt to find the "best match" for a game and use that to build the memory map. For example, pick the best "Pac-Man" driver and match it to the corresponding entry in the ggdb. Problem: will drop a lot of ROM variants (NOTE: a stand alone ROM table could be added on, and be made to work like the "cloneof" works in the code.) I am leaning towards Method A right now because it keeps the most data, and is the easiest to match up (mostly by name). Anyway, that is the gory details of the problem. There is just a lot of data and people think of it in a lot of different ways, depending on your goals. --James Bright www.QuarterArcade.com Restored Arcade Games for your Home