------------------------------------------------------------------------
 CD_TOOLS
------------------------------------------------------------------------

- ADDSBI.EXE

[What?] sbit@Csubt@Cɓ
[How?] gqȊOt@Csbit@Csubt@CpӂAsbit@Csubt@Chbv

- CCD2CUE.EXE

[What?] ccdt@Ccuet@Cɕϊ
[How?] ccdt@Chbv

- CCDDAP.EXE

[What?] ccd`CD-DÄt
[How?] ccdt@Chbv

- CCDDAR.EXE

[What?] ccd`CD-DÄ𒊏o
[How?] ccdt@Chbv

- CCDPACK.EXE

[What?] ccd`pbNEApbN
[How?] ccdt@Cpcct@Chbv

f[^ZN^vZŋ߂镔ȗA
ZN^k₷悤ɕό`A
ɂ܂Ƃ߂lzma.exeɈkĂ炤B𓀂͋t菇ŁB

CCDPACK.EXEړƂlzma.exeꏏɈړ邱ƁB

- CCDRIP.EXE

[What?] ccd`ŃbsO
[How?] Drive Letter͂Whole{^NbN

ASPI̓T|[gĂȂ̂ŁA9xn̐l͈XEBRA@\gp̂ƁB
Compare̓͂A2Aňv܂ł̌JԂ񐔂ŁA
0̏ꍇ͔r̂̂sȂB
񐔂ɓBĂvȂꍇAMessagẽ`FbNȂ΃XLbvB
`FbN΁AēxJԂsxIłB
Sub-channel̃`FbNꍇArΏۂɃTu`l܂ނA
Tu`l̃G[ϐƁA2AŊԈlɂȂ邱Ƃ̂
Cx߂ɂȂȂƎvB
Part{^NbNꍇAStartStop܂ł̎w͈͂bsOB

- CUE2CCD.EXE

[What?] cue`ccd`ɕϊ
[How?] cuet@Chbv

MCN,ISRĆAƒfŁALBA=1045ZN^ɔzu

- IMGCRC.EXE

[What?] imgt@C()̃nbVl(CRC32)vZ
[How?] imgt@C()hbv
[l] CD-DÄ̍ŏƍŌ̖𖳎邽߁Ȁꍇ
郊bsOItZbgɈˑȂB

- IMGMOV.EXE

[What?] imgt@C()CD-DÄړ
[How?] ړ(Tv)͂Aimgt@C()hbv
[l] ItZbg␳
[hC4ZN^E[hAEg4ZN^I[o[[h
ovrt@C΁A𔽉f

- IMGPS1.EXE

[What?] CD-DÄPS1imgt@Cړ߂
[How?] CD-DÄPS1imgt@Chbv

(COł͗O悤)啔PS1CD́A
AccurateRipItZbg+2APlextorItZbg+32
Ȃ̂ŁAړ-2Aړ-32Aꂼ̕␳lƂȂ

- IMGWAV.EXE

[What?] imgt@Cwavt@C𑊌ݕϊ(RIFFwb_̒ǉƍ폜)
[How?] imgt@Cwavt@Chbv

- RECCD.EXE

[What?] imgt@Csubt@Cccdt@Cč\z
[How?] imgt@Csubt@Chbv

[hC̈撆CD-TEXT́ARsubt@CɊ܂܂Ȃ̂
͌ccdt@CRsyKvB

- RESUB.EXE

[What?] ccdt@Csubt@Cč\z
[How?] ccdt@Chbv

MCN,ISRĆAƒfŁALBA=1045ZN^ɔzu

- RUNPCC.EXE

[What?] pcct@Cꎞt@Cɉ𓀂AAvɓn
[How?] pcct@Chbv

RUNPCC.EXEړƂlzma.exeꏏɈړ邱ƁB

- VOTEBY9.EXE

[What?] 9̃t@CrbgPʂő1̃t@Cɂ
[How?] gq'.1''.9'9̃t@CpӂÂ̂ЂƂhbv

v̓G[āArǂݍ݃[hł̓C[WoɂȂ̂ɑ΂A
łm炵̂𓾂邽߂̂́B
GfBbg̐lŁAt@Č3,5,7ɂςB

------------------------------------------------------------------------
 PCC(Packed CloneCD) Format ver 1.02
------------------------------------------------------------------------

#pragma pack 1

(1) pcc_file[]

BYTE    pcc_file[FILESIZE] = {
    BYTE    magic[4]        = "PCCD"
    WORD    minor_version   = 2
    WORD    major_version   = 1
    BYTE    encoded_file[FILESIZE - 8]
}

(2) decoded_file[] (extracted from encoded_file[])

BYTE    docoded_file[] = {
    BYTE    ccd_file[] = {
        do {
            BYTE    block_type
            if (block_type == 0xFF) break
            DWORD   block_size
            BYTE    block_data[block_size]
        } while()
    }
    BYTE    sub_file[] = {
        do {
            BYTE    block_type
            if (block_type == 0xFF) break
            DWORD   block_size
            BYTE    block_data[block_size]
        } while()
    }
    BYTE    img_file[] = {
        do {
            BYTE    block_type
            if (block_type == 0xFF) break
            DWORD   block_size
            BYTE    block_data[block_size]
        } while()
    }
}

(3) block_data[]

BYTE    block_data[block_size] = {
    BYTE    sect_data[block_size / SECTSIZE][SECTSIZE]
}

(4) block_type

block_type  SECTSIZE    
0x10        ----        Not sectorized. SECTSIZE = block_size
0x11        ----        Not sectorized. SECTSIZE = block_size, For sub file(Differentiated Q channel)
0x21        2353        Differentiated audio sector
0x22        4           Silent audio sector(first 4 bytes)
0x23        2048        MODE1(user data)
0x24        2336        MODE1(exclude header)
0x25        2336        MODE2(exclude header)
0x26        2052        MODE2(sub header + program data)
0x27        2328        MODE2(sub header + media data)
0x28        2048        MODE2(program data)
0x29        2340        Unknown mode(exclude sync)
0xFF        ----        Terminator

(5) block_type : 0x21 Transformed audio sector

BYTE    sect_data[count][2353] = {
    do {
        BYTE    flag
        if (flag & 0x80) {
            BYTE    lobyte_diff_left[588]
            BYTE    lobyte_diff_right[588]
            BYTE    hibyte_diff_left[588]
            BYTE    hibyte_diff_right[588]
            pred_mode_left  = (flag >> 0) & 7
            pred_mode_right = (flag >> 3) & 7
        } else {
            BYTE    lobyte_diff_mid[588]
            BYTE    lobyte_diff_side[588]
            BYTE    hibyte_diff_mid[588]
            BYTE    hibyte_diff_side[588]
            pred_mode_mid   = (flag >> 0) & 7
            pred_mode_side  = (flag >> 3) & 7
        }
    } while(--count)
}

(6) pred_mode

pred_mode   pred
1           1 * v1
2           2 * v1 - 1 * v2
3           3 * v1 - 3 * v2 + 1 * v3
4           4 * v1 - 6 * v2 + 4 * v3 - 1 * v4

------------------------------------------------------------------------
 CD̃ItZbgƂ
------------------------------------------------------------------------

CD܂薳k̉f[^̓G[ӏȌdݕtςŖ߂Ă
pɂȂȂƂĂB
̐ɂ́AG[̔єтłKv邪
ۂ̃G[͘AIɔB
f[^̕єтŔzûłB

{IɃhCu͎nŕ񂾃f[^擾łȂ킯A
ۂCD̕̕т́AƂ͊|ꂽ̂ɂȂĂB
nI1ZN^𓾂ɂ́AI3ZN^f[^ĂKvB

ƁAႦΎnIȑ150ZN^𓾂ꍇA
Iȑ148,149,150ZN^f[^Ă̂A
Iȑ150,151,152ZN^f[^Ă̂A
Ƃ肪B
ǂ150܂ނ̂ŁA͓B

܂AZN^\łAꂼ̍\̈ႢƂ邾낤B

ɁA͌l̊oɉ߂
Iȑ0,1,2ZN^f[^ĂĂ\ȂB
150܂񂾏ꍇA[hCand,or[hAEgZH邱ƂɕςȂ
50100B܂펯ł͂邪B
[hC⃊[hAEg̉Tu`lɂȂ̂
邩łB

͂AKiōSȊOɎEȂ^łA
ہAKiōSȂ̂ŎEĂȂB

ł́AEAC(AccurateRip)vNX^[̃[̒n_͉Ȃ̂낤H

擪EƂɑSȂCD̏ꍇA
ǂɃYĂłȂf[^Ă܂A
ʓIɊJnʒuSɓłĂ܂B

EAC(AccurateRip)̃[n_
uEAC̍҂ɂƂď߂ẮACD̊JnʒuvƂ̂ƂȂ̂B

ăvNX^[̃[n_
̌Ս쐬@Aݒ肩SύXɉғƂ̊Jnʒu
Ƃ̂ƂȂ̂B

ǂAJnʒuCD݂邵A
ǂAJnʒuCDɑm͋ɂ߂ĒႭAD͂ȂB
O҂҂ڎwĂ킯ł͂ȂAuYĂvƕ]͓̂IOłB

ItZbg[n_t@C̐擪ɂȂ悤ɃbsOƂ
琳mコ̂ł͂ȂB
D̎mƓƂAъ𓾂Ăɉ߂ȂB
ItZbg[ɊSȃRs[咣̂́A
m̎v݂琶Ȁ@łB

ACD-DA͋CtȂƁAG[Ԃ
q̂悤ɑȌdݕtςŖ߂f[^ԂƂ̂ŁA
̂̔rE}A܂PureReadIȂ́Eǂ݂
mc_̂Ȃ痝ł邪AItZbgŐm̂̓iZXłB

APS1PC-Enginê悤ɁAJnʒûɂẮA
ɂ킹̂Aׂp낤B

PS1̊Jnʒu͌Œ肾APC-Engine̊Jnʒu̓oGeBLł낢B
ȂJnʒu邩ƂƁAf[^Ɖ̋Eَȃf[^ɂȂ邩炾A
PC-Enginȅꍇ́AɉāA1gbNɂ߂ēIȂƂB
1gbŃAQ[f[^ł2gbNĐȂ߂̌xbZ[WȂ̂A
T[rX_ȌQ[ȊO͑ŜpĂ̂B
A̗p͐擪ɖȂƂĂ邩A
擪̖̕AړΗǂB
AႦ΃C[X1+2AccurateRipItZbg-800炢ōĂA
PIONEER̃hCu(+637)łȂ̓r炵ǂ߂ȂB
1989N̒iKŁACD̊Jnʒu̓ooł邱Ƃ̏؍ƌ悤B

------------------------------------------------------------------------
 tkɂ
------------------------------------------------------------------------

tkA\FLACɂĈꌾB

FLACɕϊ邱ƂŁA򉻂ƂlB
ŉtȂ񂾂ς킯ȂƎvސlB

܂uo͂悤Ƃvf[^͑S򉻂ȂƂ́AfĂB
̏ŁA̓IɗႦ44.1Kwc̎_ōlĂ݂悤B

̂Ƃ1000NbNԊuŏo͂łď߂ēɂȂ邱Ƃ
̐lYĂB
ԊuƂƂŏȗĂ邪AԎYĂ͂ȂȂB
āAԊu̎́Aɂ͊ȒPȂ̂ł͂Ȃ̂B

EϓIɂׂ͍ǁÂׂ΂͏
EϓIɂ͒ᕉׂǁAuԓIȕׂ͗yɑ傫A܂蕉ׂ̂΂͑傫
̍LZłĐVXe͌ĈʓIł͂ȂB
ɕȂlĂA̓IJgłȂłȂB

A򉻂ǂ͎ς̖łB
^1000NbNԊuŎ{łĂۏ؂܂̂B

------------------------------------------------------------------------
 XEBRACD-ROMC[Wt@C쐬@\ɂ
------------------------------------------------------------------------

`CloneCDƓ́B

ǉō쐬t@C͈ȉ̂悤ɂȂĂB
suat@C ... TOC֘AƐ̃Tu`lf[^
subt@C ... ʒuCTu`lf[^ 
suct@C ... subt@CPQ`lC
sudt@C ... suct@CRSTUVW`lNA
suet@C ... G[Ot@C
ovrt@C ... [hC4ZN^A[hAEg4ZN^̓ǂݍ݂gC

 - f[^gbNł́AC`lɋL^ꂽʒu񂪗D悳̂ŁA
̃Tu`lf[^́Avʒu炸ĂB
C`l̃f[^́ACIRCɂA1ZN^̃f[^3ZN^͈̔͂ɕUĂA
2ZN^܂œǂ܂ȂƁAf[^łȂB
ŁATu`ĺAƂȂ߁A
C`lɑ΂đ2ZN^s邱ƂɂȂB

 "C[Wۑ"{^1ׂ̃GfBbgɂ

ɂ͔r[h̃tO816iœ͂

ëӖ

11FFFFFF
||||||||
||++++++-- 1-6 r̍ő僊s[g 16777215
||
|+-------- 7 Tu`lr邩ǂ 0:rȂ
|
+--------- 8 ő僊s[g񐔂ɂȂƂIbZ[W\邩ǂ 0:\Ȃ=ɒ߂Ď

 "C[Wۑ"{^2ׂ̃GfBbgɂ

ɂ́AItZbg␳̕␳l10iœ͂

IMGMOV.EXEƂēƗĂ̂ŁAI~bgĂǂA
TCY͋͂Ȃ̂ŁAcĂB
imgt@Ĉ悤ɁAkŖȗŕsȃC[Wł΁A
ItZbg␳ȂǁAォǂƂłȂ̂
߂KvɔꂽƂɁAKpΗǂ̂łB
Oq̂悤ɃItZbg[ɓʂȈӖȂǂȂB

 CTu`l̃t@Cɂ

suet@C̃TCY0ɂȂƂl͑ȂƎvB
S̗ʂ炷΃R}p[ZgAEFMϒł́A
ꂾG[fʂ肷Ƃ̂邾낤B

悭CD-DAŃG[@\ȂƂl̂A
suet@CŎxŃG[fʂ肷ƁA
ƂĂ̂ł͂ȂȂ̂ŁACD-DAɂAȂ
G[@\邱Ƃ邾낤B
ėpf[^tŐgčoG[֌W̗ʂɔׂΏ
CD-DAłf[^24oCgɑ΂AG[֌W8oCgpӂĂB
CD-DÁ̖A\Ńf[^AG[młȂꍇ邱ƂȂ̂A
PS1CD-ROM̃vXl΁A
2񓯂C[W쐬łCD-DAȂƂ݂ėǂ낤B

suet@CāARSTUVW`l̃f[^PȂmCYƊmFł
sudt@Csubt@CɃl[Â͎Ăėǂ낤B
ďosub(sud)t@ĆAwǂ̃hCu
ɓt@CɂȂ͂B

Ȃ݂ɏC@A
P`l͑S0x00S0xFF̂ǂ炩Ȃ̂ŁA
0xFFߔȂ0xFFAłȂ0x00Ŗ߂ĂB
Q`lɂCRC邩A
CRCvȂꍇǍ̌̂ǂ炩vCRCԈĂƍlA
łȂ΃f[^ԈĂƍlA߂̐ȃf[^琄sB
CĂCRCvȂꍇ **** L^Ă̂ŁA
ڈɂƗǂ낤B܂CRC̏̌Ɖ̌ƂɊԈĂ邾
ǃf[^͊ԈĂ炸ACRCvȂꍇB
m΁ACAłȂ
**** ȂȂ܂ōĒo낤B

------------------------------------------------------------------------
 \tgEFAƂĂCloneCDɂ
------------------------------------------------------------------------

CD̃C[W̃tH[}bgƂāACloneCD`͑IɍłDĂ
ƕM҂͍lĂ邪A\tgEFAƂĂCloneCD́AӂKvƂ
lĂB
yCD̃Rs[ɂĂ Audio CD [hgȂ̂l낤B
AbZ[WOƕ悤ɁAGame CD [hȊÓA
Tu`lۂɂ͓ǂłȂB
Protected PC Game Ƃ̂Aǂʂȑ[uuĂ̂A
CD-ROM@̂ŕȂA
āASĂCD Game CD [hŒoׂƍlB
