Overclocking Your Sega Genesis/MegaDrive
Deven "Epicenter" Gallo writes "I've recently been working on a project to alleviate the slowdown inherent in older game systems. How you ask? By overclocking them! I've managed to perfect overclocking the Sega Genesis / MegaDrive. The processor (a Motorola 68000, running at a stock speed of 7.6 MHz) can be pushed to 16.0 MHz in my experience, and I am still working on higher. The machine doesn't overheat and is entirely stable at these higher speeds."
If you can overclock it so much with a noticeable performance, then why didn't Sega set it like that already, if it's so stable? Certainly it would have given them an edge...
Pushing a 7.6 --> 16MHz is over 100% more than the original! I have yet to see most people get anywhere near that on normal processors.
---
Never criticize religion on Slashdot. You will be modded down for "Troll" no matter how factual it is.
Whenever I would play Road Rash 2 in split screen mode, the Genesis was noticeably slower. I was always disappointed with this, shame I don't have it anymore.
- Sherman
There isn't enough correction in the world. A lot of games get released for consoles with noticable periodic slowdown - the classic example is the Metal Slug series. Still happening today too, I notice the occasional wad of dropped frames playing my XBox or Gamecube.
One god, one market, one truth, one consumer.
keeping up with Sonic ;)
That may be justification alone for why the systems were underclocked at the factory. The clock in many games is based not on an actual clock but the speed of the processor... speed things up and you speed everything in the game up, and that's not very playable.
Unless somebody's found a way to get this thing to run Linux and other non-cartrige programs, this isn't going to be very useful.
You'd think it would be most, but that doesn't appear to be the case:
I've written my own Nintendo Emulator. Just modified it to execute 5000 CPU instructions per scanline instead of the typical 114. Fired up Super Mario Brothers, Contra, and a few other games and they all appear to work fine.
I suspect (and I would've thought otherwise before this test) that many games are sychronized with the v blank interval or interrupts. I haven't tested sound, however, since I haven't written that part of the emulator yet.
get nemulator
Now here's an interesting thought. What would happen if you hooked one of these overclocked Genesis into the Sega CD or 32X attachments? As I recall the whole process of getting the Genesis and Sega CD to work together in parallel was a challenge to begin with because of different clock speeds between the two CPUs in each device.
My guess is he hasn't tried it or it doesn't work, as he doesn't elaborate on it.
Meanwhile, anyone in the Perth area that wants a Mega Drive to try this on, you can have one of mine if you'll convert a second for me.
The Sega Genesis is a dual processor system containing both a 68K and Z80. Some games are sensative to the timing between the two processors. If you overclock one and not the other some assumptions about the timing is going to break. In the cases of his tests it appears to produce problems with the music since that is what the Z80 gets used for in Sonic. But in other games the Z80 is also used for video effects such as flashing icons. Even if you can get the 68K another 50% faster, you still haven't gotten the entire system correctly clocked at the new rate unless the Z80 can also handle being clocked another 50% faster.
The factorial function is about the most intensive thing you can do on a little scientific calculator. 69! is ~1.711E98, which is the largest most calculators can go, as 70! factorial has an exponent of over 100. Unless your calculator can handle 3 digit exponents, then you can compute 449!
Ahh... the memories... back in middle school we used to glitch our solar powered calculators by doing 69! then covering the solar cells, which sometimes resulted in some pretty weird stuff (we could make TI-30's go into some kind of octal mode, also the calculator could sometimes go into some kind of trippy looped animation on the display, or it could change layouts to another TI model, like the TI-30STAT).
To bring things kind of back on topic, I once overclocked my TI-85. And some of the games did break, though the good ASM programmers didn't rely on the CPU speed, as it would slow down as the batteries wore out, even if you didn't overclock.
A game with a varying number of on-screen objects which achieves consistent speed without relying on an external timebase is somewhat difficult to code because the execution time of every routine must be taken into account to determine the proper delay until the next frame. It's unlikely that the overall frame rate of a game would be normally determined by CPU cycles used (it will be when there is too much to process in the usual frame interval). In addition, video hardware on some consoles only allows access between frames (during vertical blanking). Even where it doesn't, if the game's frame rate isn't synchronized with the video frame rate, when updates are made in the middle of the video frame, the next completed video frame will have a split across the middle with the old frame on top and the new frame on the bottom.
Depending on the CPU speed for short self-contained routines which access hardware in a time-critical way is probably more common, and not bad practice, since the older consoles were kept compatible at the hardware level. Keeping hardware the same across board revisions allowed elimination of a cycle-consuming software abstraction layer.
I used to work the help desk at microsoft. (Ok, it was another company, I was never employed by microsoft, thank god.). Anyway, there was this problem when Links 2003 came out, with pretty much any Dell laptop. The problem was, the golfer would swing about 10x fast as normal. After infestigating the problem, we found out that these specific dell laptops would not keep track of windows uptime correctly. We would reboot the laptop, and bring up a program that showed windows uptime, and it would give us completely wrong times. As an example, we would reboot, and the dell laptop would show 48 days uptime. Now, as a "microsoft employee", we didn't have a lot do to, when it came to fixing that particular problem. (it only happened on dell laptops, and we could use windows to verify the uptime was not being recorded correctly. Links 2003 would use that uptime figure to calculate how fast the golfer should swing). In any caes, I was never able to get a straight answer from either Microsoft or Dell as to why the newer dell laptops would not keep the Windows uptime correctly. It was kinda one of those issues that was swept under the rug. So, I can atest to the games out there that use the system clock as a timer to find out how fast to play certain things (probably mainly with animation). This is probably something that is used quite often, especially in a situation (like the xbox)where every system is the same. Oh ya, and I hope the Xbox dies a miserable death.