SEGA SC-3000, Repairing of the TMS-9929 VRAM
Co-Founder, (NZ)
This is a walkthrough of a recent problem I had with the VRAM on my SC-3000 test rig and how I solved it. The process is what is important here - figuring out what is wrong so we can fix it.
My test rig is just an SC-3000 motherboard without a keyboard. I had already pulled the case off and disconnected the keyboard so I could attach my breadboard setup for the Survivors Multicart Project (coming soon). You can see the way the power switch is hanging loose :) That was working well and had taken a lot of abuse from me over the past couple of months.
A couple of weeks back it suddenly started to give me some ugly display glitches. Check out the following shot of the Borderline title screen.
The photo isn't great, but you can see how the screen tiles are screwed up. Here's what it is supposed to look like (screenshot taken from MESS/MAME).
Now what has gone wrong? Lets try to narrow things down a bit.
The CPU and RAM seems to be working ok, because the game loads fine. I can start playing and I get sound and movement with the joystick (although things quickly screw up and you drive into an invisible wall). I test other games carts and they have similar display problems. I check those games carts on another known good SC-3000 and they work fine.
That leaves me with the Video RAM (VRAM). I confirm that by plugging a Basic IIIB or IIIA cartridge into the system. That is handy because it runs some system checks on startup. If it detects a RAM failure then you get two beeps per second. If it detects a VRAM failure then you get three beeps per second. Sure enough, beep beep beep - it's the VRAM.
The SC-3000 has 8 seperate memory chips that gives a total of 16KBytes of VRAM (each chip holds 16KBit or 2KBytes). One or more of those chips has probably died and is outputting garbage to the Video Display Processor (VDP). I could start replacing those one at a time (and re-testing the system after each replacement) until I found the faulty one(s). But lets see if we can figure out which chips are affected before we start.
Take another close look at the bad Borderline title screen. If you look carefully you can see a vertical line that repeats every 8 pixels. That suggests that just one of those 8 VRAM chips has died. I don't want to have to replace all 8 chips if I can avoid it so I carefully compare the photo I took of the bad title screen to a screenshot from MESS. That tells me that every 3rd pixel in each 8 pixel block is stuffed. ie. positions 2, 10, 18, 26, 34, 42, 50, 58, 66, 74 etc.
That's very helpful, because I know how the SC-3000 display works. The VDP breaks the display down into 8 x 8 pixel blocks in the graphics mode (these are often called tiles). Within that, the VDP deals with lines. So each 8 pixel line takes up one byte of memory in the VRAM, and the pixels are either on (1) or off (0). So it looks like the third pixel in each 8 pixel line is returning the wrong value.
But I also know that the leftmost pixel in each 8 pixel line is the most significant bit (D7), and the rightmost pixel is the least significant bit (D0). So I'm looking for the VRAM chip that handles D5 (the 3rd most significant bit). I'll have to see if I can make up a little diagram to try to make that clearer :)
That means that is likely that only ONE of the VRAM chips is broken because each pixel in an 8 pixel line is actually stored as a bit on a different one of those 8 VRAM chips. Check out the following picture. IC10 holds the most significant bit (D7), IC11 holds D6, IC12 holds D5, IC13 holds D4, IC14 holds D3, IC15 holds D2, IC16 holds D1, and IC17 holds D0 (the least significant bit).
TMS 9929A VDP Pin Out |
How do I know that? Those VRAM chips could be wired up in any order, right? Well luckily, the datasheets for both the VDP (TMS 9929A) and the VRAM (MCM4517) are available online (just search on google). Here are the relevant pinouts. (Note that the pin numbering is reversed on the VDP, so RD0 goes to D7 and RD2 goes to D5 and RD7 goes to D0 etc.)
So I just have to test each of the 8 VRAM chips to see which Q pin connects directly to the RD2 pin on the VDP (pin 30). By using my multimeter I can confirm that IC12 is the one that connects to RD2 and this is the VRAM chip I need to replace.
So I whip out my trusty soldering iron and desoldering braid and carefully remove IC12. I then solder a 16pin socket in place. If you go to the trouble of removing a chip, always stick a socket on the motherboard to hold your replacement. That will save you a lot of grief if you discover that your replacement chip is also faulty :)
MCM4517 Pin Out |
You can buy replacement MCM4517 chips on eBay for about $3-5USD per chip. Luckily I had another dead SC-3000 sitting in the cupboard, so I removed the IC12 VRAM chip from that, plugged it into the new socket and voila - the SC-3000 works perfectly once more.
So, what are the lessons?
- Vintage computers like the SC-3000 are repairable when they break
- Understanding how the Sega hardware works may let you fix some problems yourself even if you have little or no electronics experience.
- Approach the problem methodically. Try to understand what isn't working and why, and you will solve the problem a lot faster.