How to correctly document a PCB: Difference between revisions

From Citylan
Jump to navigationJump to search
mNo edit summary
mNo edit summary
Line 1: Line 1:
I started this article many years ago.<br>
As of today, it's been integrated and amended many times, by various dedicated folks which I have to thank for their passion and help.<br>
The always-up-to-date version is hosted at MAMEDevs wiki: [https://wiki.mamedev.org/index.php/How_to_correctly_document_a_PCB How to correctly document a PCB].
PCBs (Printed Circuit Boards) are the source and the goal of the whole MAME project.<br>
PCBs (Printed Circuit Boards) are the source and the goal of the whole MAME project.<br>
They are the goal, because emulating their behavior and their working mechanism is what MAME does.<br>
They are the goal, because emulating their behavior and their working mechanism is what MAME does.<br>

Revision as of 06:41, 15 July 2019

I started this article many years ago.
As of today, it's been integrated and amended many times, by various dedicated folks which I have to thank for their passion and help.
The always-up-to-date version is hosted at MAMEDevs wiki: How to correctly document a PCB.


PCBs (Printed Circuit Boards) are the source and the goal of the whole MAME project.
They are the goal, because emulating their behavior and their working mechanism is what MAME does.
They are the source, because every information in a MAME driver comes directly from them; and because the driver itself is a "virtual" PCB, mimicking the real one.

We'll focus therefore on how to correctly extract information from a PCB, and how to organize them in such a way that this information will be useful to MAMEDevs when they'll code a driver.

Documenting a PCB is a 3 step job:
1) taking pictures
2) dumping ROMs
3) writing documentation.

Each of the 3 steps will have a separate article in the near future, detailing everything that is needed to know; for the moment let's just have a quick look at them.

1) Taking pictures and other medias (like recording sounds and filming videos) is usually the first and easiest thing you can do with a PCB; no special expertise is needed for this task, just a little bit of patience and care. With a digital camera you should take pictures of the whole PCB, both front (component) and back (solder) side. If the PCB consists of different boards packed one over the other, separate them and take pictures individually. If you can connect the PCB to a cabinet or to a test rig, do it; and take pictures of the game at boot up, at title screen, at intro and attract mode, and during game as well. If your camera is capable of recording videos, film some seconds of the game during title / attract mode and in game. This task is needed if your PCB is particularly rare and good videos of the game are not available; filming kof2k is usually not needed ;) Same goes for game sound recordings, they could be needed by MAMEDevs if your game is rare or with a discrete sound board or unusual custom sound chip. A game generating sounds out of an AY-3-8910 usually doesn't require any recording.

2) Dumping ROMs is somewhat considered the "cool" part of the documenting process; it isn't. It's a long and tedious task requiring dedicated equipment, extreme accuracy, electronics background and a forgiving better-half! ;) The minimum equipment required is an "EPROM programmer": that is a dedicated hardware and software appliance, where you will put the EPROMs extracted from the PCB and "read" them. The software will then save the content in a file on your PC. Obviously, an EPROM programmer capable of reading 10.000+ different kind of chips is better than one reading only some hundreds; and the cost for it will be proportional. You will probably also need one or more soldering irons, a hot air reworking station, some desoldering tools, pliers, screwdrivers, chip removers, etc. You will need to dump EVERYTHING that is dumpable on the PCB, so it will be PROMs, EPROMs, EEPROMs, maskROMs, flashROMs, PLDs, PALs, GALs, and everything else which contains a memory like MCUs and the like. You will need to dump every single chip a minimum of 3 times (possibly with different current/voltage levels), and compare the 3 reads to check if they match. If they don't you will have to figure out why, solve the problem and read them 3 times again. You will need to compare the files you dumped with already known files and check if there is any match.

3) Writing documentation is the last task for you, and it's even more tedious than dumping. All important parts of the PCB need to be listed and their function explained. Worth documenting in particular are the frequencies of the crystal or ceramic oscillators, whose values are essential for determining proper timings and are all too frequently obscured by glare on photos. Also, the pictures you took in step 1 must be listed, as well as files you dumped in step 2. A meaningful description of the PCB is extremely important for MAMEDevs, they will only have it as a guide while coding a driver, so the more accurate you are the more likely there will be a working driver sooner or later.


Isn't documenting PCBs tedious? Well, it's also extremely satisfactory and ego-building; when you correctly document a PCB, and in a few days you have it emulated in MAME, you can proudly pat yourself on the shoulder: a piece of the arcade games history has been preserved for the future, and you were part of it!