Overclocking

This page is a draft :)

Talk about the impossibility of killing 68k's due to heat ?

The principle of overclocking is to make electronic chips (not only CPUs) run at a clock frequency higher than usual.

=Why overclock ?=

Fanatics may not want to read this, but the NeoGeo can have slowdowns. Games known for lagging are:
 * Aero Fighters
 * Blazing Star
 * Metal Slug 2
 * Shock Troopers...
 * Twinkle Star Sprites

As the GPU runs in real time and has no frame buffer, slowdowns on most 2D consoles are CPU slowdowns. This means that they are caused by long calculations and not graphical complexity (we're not talking about polygons !). For example: 20 animated sprites could cause slowdowns, but 300 static sprites won't.

=Slowdowns=

Slowdowns are perceived during gameplay as slow picture updates (frameskip), this is only caused by the CPU not being able to update VRAM often enough to animate sprites smoothly.

If a game wants to run at a constant 60 FPS (no frameskip), the calculations for a frame need to last less than 1/60 = 16.7ms. For 30 FPS (1/2 frameskip), they need to last less than 1/30 = 33.3ms.

If calculations are too long and "overflow" to the next frame, it will be skipped. For example, if calculations last 16.8ms, a whole frame will be skipped (16.7ms) because the CPU was 0.1ms late.

In the following graphs:
 * The vertical lines are frame ticks given by the GPU, they always occur every 16.7ms (60Hz)
 * Black lines are updated frames (different from the last one)
 * Red lines are skipped frames (same as the last one)
 * Cyan areas are the vblank periods, during which the CPU updates VRAM
 * Green zones are CPU calculations not causing frameskip
 * Yellow zones are CPU calculations causing unwanted frameskip

No slowdown


If CPU calculations are always shorter than 16.7ms, each and every frame is updated.

Slowdowns


If CPU calculations are longer than 16.7ms, the next frame is skipped. Multiple consecutive frames can be skipped (see Perceived slowdown).

30 FPS engine
The game's engine voluntarily updates one frame out of two, making the game run at 30 FPS at best. Note that the GPU always runs at 60.

Has the advantage of giving a more consistent framerate if the game tends to often exceed the 16.7ms limit, at the expense of more pronounced slowdown if it occurs.

No slowdown


If CPU calculations are always shorter than 33.3ms, one frame out of two is updated.

Slowdowns


If CPU calculations are longer than 33.3ms, one or two frames are skipped. Multiple groups of frames can be skipped (see Perceived slowdown).

Some game engines might be smart enough to "resync" and skip only one frame if they detect one was already accidentally skipped (doesn't rely on the LSB of a frame counter).

Perceived slowdown


Skipping one or two frames from time to time is rarely perceived or felt by the player. Annoying slowdowns occur when the video appears to stall.

Perception of slowdowns depends on the spreading of updates:


 * #-#-#-#-#-#-#-#- is 30 FPS, acceptable.
 * ######## is also 30 FPS, but very bothering.

Game engine logic


Are there game engines stupid enough to try catching up on each and every frame, instead of skipping some ? Poor CPU, poor player :(

=Overclocking which chip ?=

Overclocking the makes it execute instructions (gameplay code) faster.

Overclocking the is completly useless, as it only takes care of music and has plenty of time for that.

Multiple forum discussions (links ?).

The stock 68000-12 can often work up to 14MHz (17% overclock) without crashing, but don't expect going above safely. Crashes are due to gate delays ? Crippling ?

Some people (often in the Atari or Amiga community) know that the high-end 68000-16 can work way beyond 16MHz. Reports of stable operation at 30MHz (150% overclock) can be found.

24MHz (100% overclock) might not be safe for all memory access ? 68k RAM is 100ns, normally needs <166ns, would need <83ns. Max would be 19.8MHz ? Palette RAM is even slower: 120ns. Max would be 16.6 ?

To do: Notes about taking care of clocking NEO-C1 or any other chip that generates the wait states with the original 12M signal.

=Video glitches=



When increasing the CPU clock only over 13.5MHz, some games start having video glitches. This is because the game code has tight access timings to the GPU.

The problem arises from the fact that the CPU talks to the GPU faster, but the GPU still runs at 12MHz. This makes it skip writes or reads, making a mess in VRAM.

So why not also overclock the GPU ?

Simply because the GPU generates the video sync. If it is overclocked, the framerate will rise accordingly. This will not only make the snake bite its own tail, but also make the video signal go out of range for most TVs and monitors (14MHz would give 69Hz).

That's why most modification write-ups describe a way to switch between 12Mhz and 14MHz+ manually.

How about 120Hz TVs ? Do they have 120Hz analog inputs ?

=Quartz swap mod=

To do :)

=Gearbox mod=

To do :)