Whilst creating my Pokemon Yellow SNES cart, I noticed that the music sounded a bit strange, but not enough to immediately cause concern – once I compared it to the original played on a GameBoy, I was sure I had made a mistake connecting stuff up – the sound was just too high pitched, and even the gameplay felt slightly off. In fact, it turns out that the speed of the clock isn’t exactly the same as the original Gameboy – this is due to the Super Game Boy (SGB) using a value derived from the clock speed of the SNES itself, rather than its own internal one:
The original Super Game Boy is known to play the game program and its audio 2.4% faster than other Game Boy hardware. This is due to the use of the Super NES’s clock speed divided by 5, which ends up being 4.295 MHz instead of 4.194 MHz. The timing issue can be rectified by adding an appropriate crystal to the Super Game Boy and disconnecting the Super NES’s clock source.
Here’s a YouTube video highlighting the difference in speed between the two. This issue has been fixed in the Super Game Boy 2, however these were only released in Japan and are normally quite difficult to find for a reasonable price (at least in the UK!). Knowing this, I got to work modifying my SGB to run at the right speed. Required components are as follows:
- Super GameBoy cartridge.
- Small Gamebit screwdriver.
- Small Philips Screwdriver.
- 1x 4.194304 MHz Crystal Oscillator.
- 2x 15-33pf Capacitors (I used caps with a value of 22 picofarads).
- 1x 1M Ohm Resistor.
- Kynar wire for connecting the components to the SGB PCB – this is helpful as the pins on the SGB-CPU1 are very small. I used some light equipment wire from Maplin for the ground connection as it was a different colour, but Kynar should work fine as well.
- Hot glue and/or electrical tape for securing everything together.
- (optional) Small piece of Strip/Breadboard to assemble components on. You could also solder them directly onto the SGB PCB, but this puts more pressure on the chip legs, and we don’t want them breaking off!
All the components above can be found on eBay or your local electronics shop. The components don’t require a specific orientation, they can be soldered in either direction. I’m using the circuit design from this diagram that the ever helpful TmEE created – this was taken from a thread on the Sega 16 forum:
There are a few clarifications to make – we don’t need to cut the trace pin 3 on the KD2-R chip, as we will be lifting both pin 73 and 74 from the SGB-CPU which has the same effect. Secondly, the values of the two capacitors don’t need to specifically be 27pf, any between 15 and 33pf should work fine. I found these tips in the Sega 16 forum post linked above.
As mentioned in the introduction, there are two ways to add this fix to an SGB cart – either hooking up a small circuitboard with the needed components, or soldering them directly to the PCB/CPU pins. We’ll be using the first method since the latter puts a lot of un-needed strain on the CPU pins ,and can make it awkward to modify the speed fix circuit if anything goes wrong. As skydrops pointed out in the comments, please be aware that this fix will break the “slowdown” functionality on the Super GB Commander controller if you have one!
We only need to use a small section of the stripboard for our circuit, so be careful when breaking a piece off – you need enough space to fit all the components on, but it still needs to be able to fit inside the cart. I scored a line into the stripboard with a scalpel, around the edge of the area I needed. It’s a good idea to do this on both sides of the board so that the piece comes off cleanly. Once this is done, it can easily be removed with a pair of pliers or even bare handed (just be careful not to get any shards of stripboard in your fingers ;)..
The finished board can be seen below – the wires going to pins 73 and 74 of SGB-CPU1 connect to the two points circled in red, with the ground connection circled in blue:
Now that our circuitboard has been assembled, we can work on the tricky part – connecting it up to the Super Gameboy. It’s worth testing here that it actually fits in the SGB shell with all the components that were just added. Open the cart up with the Gamebit, and then remove the two Philips head screws that secure the PCB to its shell.
On the image below I have indicated the areas where we need to make our modifications – Pins 73 and 74 of the SGB-CPU1 need to be lifted to connect our circuit board, and we also need to make a connection to ground. This connection can be made to various points on the board, but I found the cleanest and most accessible location is the small black square just to the bottom right of SGB-CPU1. Make sure you double check you have the correct pins by counting along from pin 65 (on the left hand side of the pins indicated below).
Lifting the pins on the CPU is very tricky as they are prone to snapping off if you use too much force, or wiggle them around too much. I’m using the sewing needle + soldering iron method outlined here, however you may find some of the advice online for surface mounting chips helpful. This is definitely the hardest part of the entire process, so take your time and don’t mess it up 🙂
If you do accidentally lift the metal pads that the pins were sitting on, don’t worry! As we are completely bypassing the circuits for these pins by lifting them, there shouldn’t be any issues if either of them are removed. I recommend flattening out the pins with a pair of small pliers after lifting, as it will make soldering the wires a lot easier. The PCB should look like the below image once both pins are lifted:
Time to cut the wires to length. You want them to be long enough so that you can easily position the speed fix circuitboard around the main PCB. The end of the wires need to be stripped first and then tinned, along with the CPU pins that we lifted and whichever contact point you chose to use for ground.
I soldered the wires to the SGB PCB before connecting up the speed fix circuit board, as soldering the connections to the CPU pins is tough due to their size (you can also use some electrical tape to hold the wire in place if it’s moving around too much). If you put too much solder on your connections it can cause a bridge between the CPU pins, but this is easily fixed with the soldering iron and some desoldering braid.
Secure the wires in place with some electrical tape to stop them from moving about, and then solder them to the correct points on the speed fix circuit board as indicated earlier in the guide.
Once you have verified that all your solder joints are clean and have no unintended connections to any other parts of the PCB, the cart is ready to test! You may see a black screen when switched on, which normally indicates that one of the connections to SGB-CPU1 has come loose. Check all your soldering if this happens.
Assuming everything went well and your SGB is now working at the right speed, it’s recommended that you add a few finishing touches to make the mod a bit more robust. I applied some hot glue to the CPU/ground points to insulate the pins and stop the wiring moving about. Be aware that this is effectively irreversible as the glue is very difficult to remove once set.. If you don’t have a hot glue gun, it’s a good idea to place some electrical tab underneath the lifted CPU pins so that there is no chance they can come into contact with the others and cause a short-circuit. As you can see from the picture below, I also used a bit of electrical tape to keep the wiring from floating around inside the shell.
Now we have a finished product! Another bit of electrical tape was added to secure the speed fix circuit to the inside of the SGB shell. From the outside it should look exactly as it did before, and if you’ve stuck the speed fix circuit board to the inside of the shell, you won’t have any rattling noises when picking it up..
The next step is to add this fix to my Pokemon Yellow cartridge. Thankfully the job is slightly easier since I pre-made a few of the speed fix circuit boards, so it’s just a case of lifting the CPU pins and soldering the wires in.
If you have any feedback or questions please leave a comment below, and tips are appreciated if this post helped you!