Skip to content

Accelerated scan of CD audio tracks doesn't work in the Multiplayer  #29

@fafling

Description

@fafling

What game is it?

Title: any game with CD audio tracks, for example Sonic R

Region: Japan

Serial: GS-9170

Where did you get the image?

Redump

What is the behaviour you observe?

In the Multiplayer screen, the accelerated scan doesn't work when maintaining the skip forward or backward buttons. The CD audio track playback continues at normal speed, and when the skip button is released, audio playback skips back to the point of the track were the button started to be pressed.
Tested with firmware 159 or satiatormshvsf-0, and menu 67.

What is the behaviour you expect?

When the skip forward or backward button is maintained, the track should be read at an higher speed, and when the button is released, the soundtrack should play at normal speed from the point reached by the scan.

The Sega Saturn documentation doesn't have much detail about the scan function. All that I've found is in the System library's user guide, in the CDC_CdScan function (p. 84), and that doesn't tell how the accelerated scan works.

During the scan, the CD is still read at single speed as the rotation doesn't accelerate when pressing the scan button. So the scan reads short audio bits at normal speed and moves the laser head slightly between each audio bit to skip part of the CD. During the scan, you can hear small rapid clicks from the drive which are probably produced by the laser head when it does each skip. Also the backward scan doesn't change the rotation direction, so the audio bits are still read forward at normal speed while the laser head travels from the periphery to the center of the disc.

This is a video of a complete accelerated scan forward then backward on 2 CD : https://www.youtube.com/watch?v=0w2vtQkafLA

The 1st CD is Deep Purple's In rock anniversary edition (because it's the longest CD audio that I have, 78 mn total time).
The 2nd is Sonic R (Japan) as it's one of the longest CD soundtrack on a Saturn game.

At the beginning of the video, the time display is set to total time to be able to measure the speed of the scan. The scan speed increases from the beginning of the soundtrack to the end. For the Deep Purple CD, the first 10 mn of the track, located at the center of the disc, are scanned in 18 s, while the last 10 mn, located in the periphery, are scanned in 9 s. The timings are the same backward or forward. The total time of the scan of that CD is 94 s.

This suggests that the laser head could be travelling at constant speed during the scan, skipping a constant number of groove loops between each audio bit. Since those skipped groove loops are about like circles, the skipped length is approximately a multiple of 2πr, with r between 23 mm in the inner of the CD, and 58 mm in the outer. So the skipped parts length increases linearly with the distance to the center, and make the scan more than twice faster in the outer of the CD than in the inner.

With a laser head travelling at constant speed during the scan, it probably spends the same time on each groove parts that it goes over between each skips. So the audio bits that are read should have always the same length since a CD is read at constant linear speed.

When listening to the audio track of the Youtube video at a very slow playback rate, I tried to estimate the length of the audio bits that are read. That length appear to be about 0..04 s. That would make them 3 sectors long since each sector contains 2352 bytes, so 588 16 bit stereo samples, and at a 44.1 kHz frequency, 588 samples last 0.013 s.

Since adjacent grooves centers are spaced by 0.0016 mm (https://www.britannica.com/technology/compact-disc#ref92845), and they cover 35 mm in width, there's 21875 grooves loops on a CD. With audio bits of 0.04 s between skips, 8 loops of the groove out of 9 would have to be skipped to give a scan time of 97 s for an 80 mn CD, matching the 94 s scan time for the Deep Purple CD.

The audio track of the video :
CD audio accelerated scan.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions