Loading time

From NeoGeo Development Wiki
Jump to navigation Jump to search

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): [[1]]

Wether on CD or CDZ there's a 4.48 seconds constant, and a 0.65 seconds overhead per file. Depending on the loading file list, the CD drive speed relates to 50~75% of the total loading time.

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 loading screen appears is intentional. The screen is turned off while the FIX file listed in the games IPL file is loaded. It's scary because there's no loading bar and the drive makes funny noises (pickup slide, chirping lens coils). It is required however as graphic corruption would be visible on screen otherwise. The IPL file contents (file list and locations) is read into memory when the game CD is first recognized by the system after it is inserted. Once recognized the press start message starts flashing to indicate game loading can begin.

All in all, on the NeoGeo CD, the CD drive speed makes up for only 50~75% of the loading time, the rest is seeking (mechanical, by design of CD technology), and 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 changing DRAM controllers too

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