• AnyStream is having some DRM issues currently, Netflix is not available in HD for the time being.
    Situations like this will always happen with AnyStream: streaming providers are continuously improving their countermeasures while we try to catch up, it's an ongoing cat-and-mouse game. Please be patient and don't flood our support or forum with requests, we are working on it 24/7 to get it resolved. Thank you.

Question about LBA value computing in CLoneCD CCD file.

DocMX7

Member
Thread Starter
Joined
Jul 26, 2018
Messages
8
Likes
0
Hi,

Those days, I try to code a little thing to parse a .CCD file.
I am sure that people here are very comfortable with some definitions
I am about to tell : it is only to clarify the subject of my question.

I start from the fact that time in CCD file is indicated by 3 fields :

- Minute
- Second
- Frame

These time information is present twice on a section called "Entry".

An example below :

[Entry 8]
Session=1
Point=0xc1
ADR=0x05
Control=0x00
TrackNo=0
AMin=4
ASec=152
AFrame=96
ALBA=29346

Zero=0
PMin=0
PSec=0
PFrame=0
PLBA=-150


AMin, ASec, AFrame to indicate Absolute time (I think).
PMin, PSec, PFrame to indicate Point time (I think).

In a theoretical point of view, there are means to translate a time to an address.
The address is called LBA (Logical Block Address) and there are ALBA to indicate Absolute address and PLBA to indicate Point address.

As I want is to deal with the less fields and datas in my code, I take only Minute, Second, Frame values
and later use means to compute address value.

I know two means to compute it :

- a translation table between LBA and MSF found in a file called "SCSI-3 – Multimedia Commands" from "American National Standards Institute" page 115.

- a formula from ECMA-394 Chapter 13: Attachment 11 :
LBN = (((MIN*60)+SEC)*75+FRAMES)-150

But quickly I face very confusing LBA values that do not match any known means result.

Let's concentrate about Absolute time and Absolute address.

I have selected three (from many) examples where I could not understand
how CloneCd figure it out.

Problem 1

[Entry 8]
Session=1
Point=0xc1
ADR=0x05
Control=0x00
TrackNo=0
AMin=4
ASec=152
AFrame=96
ALBA=29346

Zero=0
PMin=0
PSec=0
PFrame=0
PLBA=-150


AMin=4
ASec=152
AFrame=96
ALBA=29346

Using LBA to MSF transaltion table :
29346<=> 60:00:48
Using ECMA formula :
(((4 * 60) + 152) * 75 + 96) - 150 = 29346

Problem 2

[Entry 10]
Session=2
Point=0xb0
ADR=0x05
Control=0x04
TrackNo=0
AMin=255
ASec=255
AFrame=255
ALBA=716730

Zero=1
PMin=79
PSec=59
PFrame=73
PLBA=359848


AMin=255
ASec=255
AFrame=255
ALBA=716730

Using LBA to MSF transaltion table :
impossible because 255 is out of range
Using ECMA formula :
(((255 * 60) + 255) * 75 + 255) - 150 = 1166730

Problem 3

[Entry 5]
Session=1
Point=0xc0
ADR=0x05
Control=0x04
TrackNo=0
AMin=160
ASec=0
AFrame=48
ALBA=269898

Zero=0
PMin=97
PSec=26
PFrame=66
PLBA=-11634


AMin=160
ASec=0
AFrame=48
ALBA=269898

Using LBA to MSF transaltion table :
269898 <=> 60:00:48
Using ECMA formula :
(((160 * 60) + 0) * 75 + 48) - 150 = 719898

How CloneCd compute ALBA in those case (PLBA should have same issue) ?

Thanks in advance for any help.
 
I think the Min/Sec/Fra fields are taken 1:1 from the TOC of the source disc. I don't think they are used by CloneCD, except when writing a raw copy to create a TOC most similar to the source. (It may be a copy protection?)
E.g.
AMin=255
ASec=255
AFrame=255

are 0xFF, 0xFF, 0xFF in hex and have some special meaning....? (which I forgot).

I believe the lba values are not calculated from the min/sec/fra values, but the drive is asked with a different command.
 
I think the Min/Sec/Fra fields are taken 1:1 from the TOC of the source disc. I don't think they are used by CloneCD, except when writing a raw copy to create a TOC most similar to the source. (It may be a copy protection?)
E.g.
AMin=255
ASec=255
AFrame=255

are 0xFF, 0xFF, 0xFF in hex and have some special meaning....? (which I forgot).

I believe the lba values are not calculated from the min/sec/fra values, but the drive is asked with a different command.

Thanks for your answer.

Did you have an idea about the command used to ask the drive LBA ?
It should be a standard command and standard command are documented on MMC.
It will help me figuring out algorithm used in LBA computation.

Regards.
 
Thanks for your answer.

Did you have an idea about the command used to ask the drive LBA ?
It should be a standard command and standard command are documented on MMC.
It will help me figuring out algorithm used in LBA computation.

Regards.
I would guess READ TOC/PMA/ATIP is the only possible command (op code 0x43)

EDIT: I don't think it uses read track information (op code 0x52).
 
If the TOC is like the Q subcode channel then
* The ADR 5 is not a standard mode (1-3)
* Tracks are numbered in BCD and so any value > 0x99 is a special value, for example A0 appears to refer to session entries.
* It's possible that it was corrupted.
 
Back
Top