Loading time

Aka "the juggling monkey", loading times are a (shamefully) well known issue of arguably all the NeoGeo CD systems.

Comparition of loading times in various games (French): []

Why ?
Loading in CD systems is an inavoidable step. It allows the system's CPU to access all data randomly, from a media which can only be read in long, contiguous streams.

CDDA tracks are not loaded or even loadable, since they are read like a regular music CD while the game is running.

Back when the NeoGeo CD was designed, common CD drives used x1, x2 or x4 speeds for the most expensive ones. The base speed (x1) is 150kB/s, x2 is 300kB/s...

To make it clear: the NeoGeo CDs loading time issue is caused by large game data loaded by a slow CD drive.

To fill up all the NeoGeo CD's DRAM, which corresponds to the largest loading possible, it would ideally take 7MB/150kB = 47 seconds, and 7MB/300kB = 24 seconds on the CDZ.

Comparison with the Sega MegaCD
This is like comparing a Megadrive cart with a NeoGeo cart: one's bigger than the other.

The MegaCD also has a x1 drive, but only 0.75MB of DRAM (to check), which means around 9 times less loading memory than the NeoGeo CD. The games are just way bigger (code, graphics, sound...) on the NeoGeo.

Ideally and reality
It is commonly assumed that the "x" speed indication of a CD drive is directly related to the loading time.

Actually that is the ideal speed, which would correspond to loading a unique 600MB file into a zero-lag memory with infinite speed copy. This does not happen in reality.

Seeking
A CD is made of an unique, continuous track containing all the data. Seeking in this track can take a huge amount of time because it requires the CD drive to mechanically move the laser pickup head and wait for the required data to "pass by" while the CD is spinning. For example, seeking from the first to the last sector of a CD can take up to 4 seconds, regardless of the drive's data speed.

Since there are numerous files in a typical game CD, seeking times add up when multiples files need to be loaded.

The seeking times depend on the physical relative position of the file's data on the CD.

This also means that the crapload of files in Samurai RPG makes it the most innefficient game regarding loading times (not necessarily the longest).

Error correction
A "CD host chip" decodes and error-checks and corrects data from the (possibly scratched) CD in real time (no delay), but buffers the data in cache memory waiting for copy. This adds a small but frequent overhead on every CD sector loaded.

Copy
Each CD sector is then copied to the appropriate DRAM chip. The copy procedure is handled by the NeoGeo CPU itself (DMA sometimes ? Still slow...), which is slow (TODO: need average data throughput).

Razoola indicated that his CD Unibios optimized the copy procedure, reducing the total loading time a bit.

The initial black screen
The long, scary black screen before the initial loading is caused by the CD drive initialization and reading of the IPL file. It's scary because there's no loading bar and the drive makes funny noises (pickup slide, chirping lens coils).

All in all, on the NeoGeo CD, the CD drive speed makes up for only 60% of the loading time, 20% seeking (mechanical, by design of CD technology), and 20% buffering/copy (NeoGeo CPU and DRAM speed).

TODO: Match that with the CD to CDZ ratio.

How to improve

 * Use a faster CD drive, which implies changing the CD host chip for a faster, compatible one (good luck !)
 * Kick the 68k's butt so it goes faster: overclocking, using a 16MHz+ grade one
 * Use faster DRAM, probably implies chaning DRAM controllers too

Basically: Redesign 1/3 of the console :) Buy a damn MVS board.