主题 : 【求助】刻录dc游戏时有什么办法加进垃圾文件?
级别: 模拟专家
UID: 43478
精华: 0
发帖: 307
威望: 0 星
金钱: 2582 浮游币
贡献值: 0 点
好评度: 69 点
人气: 0 点
在线时间: 58(时)
注册时间: 2005-07-11
最后登录: 2024-09-28
楼主  发表于: 2005-10-14 00:38

【求助】刻录dc游戏时有什么办法加进垃圾文件?

dc的gdrom格式是数据放在光盘外圈,如果我们能添加垃圾文件把dc游戏数据放到光盘外圈的话对读盘和光头损耗应该大有好处,不知哪位大大知道方法?
YZB
级别: 超级版主

UID: 12451
精华: 6
发帖: 19107
威望: 173 星
金钱: 2061 浮游币
贡献值: 10284 点
好评度: 54897 点
人气: 4322 点
在线时间: 19822(时)
注册时间: 2004-10-02
最后登录: 2024-12-27
沙发  发表于: 2005-10-14 01:08

估计又是懒得找的,正好,整理硬盘发现的...



以下转自世嘉中国.....

加大dummy檔(复杂版)-_-!!!


加大dummy檔重新燒錄有保護的Dreamcast X片

前言

這是網友 ibuki 所提供的心得,By ibuki (E-mail:niceguy@ms8.url.com.tw)
2000/12/20

一定有許多原本在網路上下載DC iso檔的玩家,因為連外速度太慢懶得抓,而改為直接去小賣店買X片或是跟朋友借來燒。X片的品質相信大家也是"有目共睹"的,雖然大部分都是網路上流傳的版本直接原封不動拿去壓的,不過有的片很機車,居然還有做保護!雖然這些有保護的X片可以用DiscDuggler直接對拷,不過我想一定有很多玩家會抱怨讀取速度過慢,原因就是很多X片都是壓成74min的片,所以把dummy檔增大,用80min的片去重燒一片會有更好的讀取速度,尤其是像DOA2這些遊戲的開頭demo就會順很多了。OK,廢話不多說,馬上進入我們的主題,當然,我也會提到如何重燒沒保護的片(就是重燒一般網路上流傳的可開機版RELEASE,如果以前需要開機片的版本,請參考Baronx兄寫的文章,妆Ρπ燒錄成可開機版本。)

我們要先有這些工具:
IsoBuster (請抓0.99.5以後的版本,0.99.4會讀不到)
CDRWIN
Hex Workshop (修改,比較Hex檔用)
ECHELON Dreamcast Self-Boot的工具

拷貝檔案
1.先辨認是否有保護
拿到X片後,把它放到CD-ROM,先用IsoBuster去看它的CD結構,在右邊會看到檔案與資料夾的Name,LBA,Size,Size (bytes),Modified。如果在檔案名稱前有個Macintosh的小蘋果,那這個檔就是做成隱藏檔。如果檔案的Size大的離譜,那就是做成超大檔(因為X片商改了TOC的檔案大小)。或是請以LBA排序,如果檔案大小超過(下一個檔案的LBA值 - 該檔案的LBA) * 2048就是超大檔了。有的會連檔案的LBA都改,例如Samba de Amigo ver.2000的X片,有個ver20000.adx,LBA跟Size都改掉了,它的位置正好在dummy檔的區段裡,所以這根本就是垃圾檔,可是又不能沒有,就是純粹是拿來檢查用的。

如果沒有發現這些奇怪的東東,Disc的Volume也是原本網路上看到的,恭喜,那應該就是原本網路上的Release,我們要加大dummy重燒就很簡單了。如果有這些保護(如DOA2日版,Samba de Amigo ver.2000)那也沒關係,一樣可以加大dummy重燒,只是麻煩點。

2.查看Session 2 LBA值
在IsoBuster左邊的樹狀圖中我們可看到這片CD有幾個Session,幾個track,以及Volume名稱,資料夾目錄等。可開機的版本Session 1有audiotrack,資料擺在Session 2。我們在Session 2的icon處按右鍵,選Properties,可以看到它的Address LBA是多少(或是直接把滑鼠移到Session 2的icon,下方的狀態列會有顯示)。一般來說,如果遊戲沒有CDDA Audio的話,沒保護的X片(網路流傳的版本)Session 2的Address是11700或11702,Session 1只有一個audio track,若是有保護的Session 2 Address是45000,在Session 1有一個以上的audio track。我以有保護的DOA2日版X片為例,它的Session 1有4個audio track,Session 2的LBA是45000。至於遊戲有CDDA又有保護的,我先不提,因為我手邊沒有這種片。

3.拷貝所有非隱藏,非超大檔,非dummy,非垃圾檔的檔案因為要利用ECHELON的Self-boot工具,我們用"檔案總管"或"我的電腦"把光碟機裡面看的到的東西都copy到selfboot\data下。(那個什麼R18_INFO.TXT跟ZZZ目錄就不用拷了...)

4.擷取ip.bin:
開啟CDRWIN,選上面第三個icon,Extract Disc/Tracks/Sectors。
進去後上面的Extract Mode選Select Sectors
Sector Selection處的Datatype選Data Mode2 Form1 (2048)
Start打上Session 2的LBA,例如45000
End打上Session 2的LBA + 15後的值,例如45015
Image Filename打上你的selfboot資料夾的路徑與ip.bin(因為ip.bin都是存在Session 2的最開頭部分的16個Sectors,檔案大小為16 * 2048 = 32768 bytes)其他設定可以不必動,按Start開始擷取。

5.擷取超大檔(沒保護的就不必做):
跟第4步一樣,我們用CDRWIN來Extract Sectors
Extract Mode選Select Sectors
Datatype選Data Mode2 Form1 (2048)
Start打該超大檔的LBA
End打該超大檔的下一個檔案的LBA - 1(請用IsoBuster以LBA排序來看比較方便,並注意上下兩個檔的LBA與檔案大小的關係,以確定是超大檔或是連LBA都改掉的垃圾檔)Image Filename打上我們要存的路徑selfboot\data與該檔案的名稱按Start開始擷取。
(注意:擷取出來的檔案大小會比原始檔案大,因為不知道正確的檔案大小與截止位置,所以我們只好取到最後一個sector的最後一個byte)
例如DOA2日版X片的engine.bin
Start為133277
End為140978 (engine.bin下一個檔為maigo.bin,LBA為140979)

6.擷取隱藏檔(沒保護的就不必做):
在IsoBuster中有小蘋果的檔案(Dummy檔,超大檔跟垃圾檔除外),我們把這些檔案複選起來(應該知道要按住Ctrl選吧),然後點右鍵,選Extract Files,接著選擇要存檔的資料夾selfboot\data,按確定後就開始擷取了。以DOA2日版X片為例,有1st_read.bin與2_dp.bin

7.製作垃圾檔(沒保護的就不必做):如果經辦定為LBA與SIZE都改過的檔案,就是垃圾檔了。
如森巴2000裡面的ver20000.adx,在selfboot\data目錄下,新增一個文字檔改名成ver20000.adx,
然後存檔,檔案大小為0 byte

8.製作適當大小的dummy檔到selfboot\data目錄下。(此部份不多說,請妆Ρπ參考Baronx兄寫的文章。)

以上已經把需要的檔案都準備好了。


燒製音軌(Session 1)
有把需開機片的遊戲燒成可自動開機的人應該知道,可開機的片子必須更改1st_read.bin與ip.bin兩個檔,1st_read.bin只有更改LBA值,我們不用ECHELON Self-boot工具的binhack.exe也能手動改,可是ip.bin好像改了很多東西(比較更改前後的檔案就可知差很多了)因為無法確定要怎麼改,所以我們最簡單的方法就是把Session 1弄成跟原來X片一模一樣,這樣一來Session 2的LBA就一樣,1st_read.bin與ip.bin就不用改了。

我之前利用DiscJuggler把X片做成Image檔,再用CDIRIP把X片的audio track抓出來,利用它產生的cue檔燒錄Session 1,燒出來是一模一樣,可是燒錄Session 2燒錄時會出現"Read/write error or bad medium"之類的訊息,可能是因為它有幾軌是小於四秒的音軌,所以造成我的燒錄機(RICOH MP7040S)無法燒錄的情形。沒關係,反正那些音軌是什麼東西不重要,因為我要燒的遊戲沒用到CDDA,我們在意的是如何把Session 2的LBA弄成一樣就好。因此我們自己做一個audio track,讓它的大小剛好使Session 2的LBA一樣就好,不過話說回來,我不知道音軌檔案大小與LBA關係的正確算法,可是我手邊有產生LBA為11700與11702的audio track raw檔,一個是是705600 bytes,另一個是710304 bytes,我們可以簡單的就推出兩個算式,
11700X + Y = 705600
11702X + Y = 710304
得到X=2352, Y=-26812800
雖然不知道正確算法,不過至少導出一個關係來。
現在我燒DOA2日版與森巴2000的LBA要45000
那Audio檔案要45000 * 2352 - 26812800 = 79027200 bytes
我們用產生dummy檔的工具做一個這個大小的檔案,把它命名為45000.raw
(以後看檔名就知道這是要幹麼了)

開啟CDRWIN,選上方第一個icon,Record Disc
在Record Disc視窗中選Load Tracks
在Load Tracks視窗中Disc Type為Audio
選Add,點選之前製作的audio track raw檔案 (例如5000.raw)
在 Record Disc 視窗中下方Recording Options中Open New Session要打勾
  按下Start Recording開始燒錄

現在我們已經做出一個Session 2開始的LBA與原本X片一模一樣的光碟了
可以開DOS視窗,於selfbot\目錄下
打上cdrecord -dev=X,Y,Z -msinfo
(* X,Y,Z 為該 CD-Recorder 的 DEVICE ID
進入 CDRWIN 的 Record Disc 視窗中 CDROM Recorder 選項內
X : Y : Z 這個即是 DEVICE ID)
會得到兩值 LBA1,LBA2
例如DOA2日版與森巴2000的X片為0,45000

binhack步驟不用做,因為LBA一樣,我們不需要改1st_read.bin與ip.bin
至於要不要copy ip.bin到selfboot\data下就隨便各位了,反正ip.bin
可以由session 2最開始的16個sectors取得,不過copy過去以後可以比較方便
取得ip.bin。

建立session 2的image檔
開啟一 虛擬 DOS 視窗
於 selfbot\ 目錄下
USAGE: mkisofs -C LBA1,LBA2 -V GAMENAME -l -o data.iso data
(GAMENAME 隨你高興妆Ρπ決定)
OK -- 建立一映像檔data.iso

請注意:跑完此程式後最後一行有
XXXXXX extents written (YYY MB)
XXXXXX會顯示session 1與 session 2加起來的
block(sector)大小,如果XXXXXX + 152(Lead-out所需的block數)
小於CD-R的block數(可用DiscJuggler看,一般80min的片是359999)
就能確定可以成功燒錄
(最後CDRWIN燒錄時"不要"把postgap打勾,不然會多postgap
的容量,應該是2sec * 75 block吧?)

依我的經驗session 2 LBA為11700的,selfboot\data下所有檔案最大可以679MB
45000的最大可以到614MB,自己在做dummy時可以用這個來當參考值,
不過這祇是大略而已,還是要自己去試試,如果data.iso顯示的值加152超過CD-R的容量,
請重做data.iso,讓它在可允許的範圍內,但是盡可能把它推向外圈。
(可以看超過幾個block,然後乘以2048就是dummy要減肥的byte數了)

ipins.exe
ipins.exe是用來把ip.bin擺到之前製作的映像檔data.iso的最前面

開啟一 虛擬 DOS 視窗
於 \selfbot\ 目錄下
USAGE: ipins
Enter name of bootsector : ip.bin
Enter name of ISO : data.iso

OK -- data.iso 修改完成


修改data.iso裡面的TOC(沒保護的就不必做)
本來我以為第四步產生出來的data.iso直接燒到Session 2就好,
可是事實證明是不行的,可能是X片商在1st_read.bin有裡有動手腳,
需要檢查一些檔案。
因為X片商在TOC裡有改DOA2日版engine.bin檔案大小,沒改它的檔案位址,
表示這個檔應該是有用的。只要把engine.bin的檔案大小改成跟X片一樣就好了。
(如果像森巴2000的ver20000.adx連位址都改,基本上就等於是垃圾檔了,
只是用來檢查用的,若是這樣的話,那我們也要改位址就是),

從IsoBuster裡得知engine.bin改成451981104 bytes
換算成Hex為1AF0AF30,TOC裡此檔的檔案大小會寫成30 AF F0 1A 1A F0 AF 30,
呈左右鏡射的樣子,檔案位址也是一樣8個bytes,左右鏡射。
我們需將data.iso檔裡TOC中此檔的檔案大小改成跟原來X片一樣,
我們先開Hex Workshop,在Options->Preferences->Configuation
把Enable direct file editing (do not create temporary files)打勾
否則會出現記憶體不夠無法存檔的訊息。然後去開data.iso,
找engine.bin,找到後把游標停在第一個字(E, 游標停在hex為45下方),
按鍵盤左15次,可以看到這個byte前面的8個byte呈現左右鏡射的樣子,
這個是檔案的大小,請改這邊為X片的大小,在這組8個bytes前的8個bytes則是
檔案位址,如果你確定有檔案是連位址都改的垃圾檔,也要改這邊)
可以用CDRWIN去擷取原本X片的TOC來參考,datatype選Mode2 Form1(2048),
Start打ip.bin END位置+1(如45015+1)
End打IsoBuster以LBA排序,最小的那個LBA-1即可。

基本上把握一個原則,原本LBA沒改的,表示它是有用的檔,所以我們也不能改LBA﹔
LBA與Size都有改的,是沒用的垃圾檔,我們也要改它的LBA與Size。
如果你擔心它會檢查檔案屬性與時間,那就也把這兩個給改掉吧。

例如森巴2000的ver20000.adx我就全部改成跟原本X片一模一樣。
(可以找原本X片的TOC裡的ver20000.adx,把這個檔名第一個字v前一個byte到
上一個檔名VAMOS_A_CARNAVAL.AMG最後一個字G的後一個byte間的36個byte全部copy起來,
再找data.iso裡的ver20000.adx,把之前36個byte全部改成跟TOC一樣就好了)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
3B 31 00 30 00 21 F2 00 00 00 00 F2 21 00 00 00 28 28 00 00 00 64 0B 07 10 34 3A 24 04 00 00 01 00 00 01 0E VER20000.ADX
\_____________________/ \_____________________/ \__________________/ \/
LBA SIZE TIME File Flags

(關於此部份,請參考Goldentime's 光碟資訊燒錄站的"如何製作隱藏目錄、超大檔案",
尤其是那個表格很重要,上面的編號1~33就是表格的。網址http://www.goldentimes.net/

燒錄Session
開CDRWIN
選上方第四個icon,File Backup and Tools
在彈出的 File Backup and Tools 視窗中
Backup/Tool 選項 選為 Record an ISO9660 Image File

ISO9660 Image File 中 Image 點選為 剛剛的data.iso 檔案
下方 Recording Options 中
Disc Type: CDROM-XA
Track Mode: MODE2
SPEED: 隨你高興
Finalize/Close Session: Yes
Write Postgap: No
Open New Session: No
Test Mode: No
Verify Recorded Image: No

按Start開始燒,燒完後就可以拿到DC去測試了。
[ 此贴被YZB在2005-10-14 01:14重新编辑 ]
附件: 加速文件制作器.rar (19 K) 下载次数:14