TShopping

 找回密碼
 註冊
搜索
查看: 60358|回復: 1
打印 上一主題 下一主題

Wii硬碟常識(一)三種硬碟格式:WBFS / FAT32 / NTFS

[複製鏈接]
跳轉到指定樓層
1#
發表於 2011-2-17 17:07:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
現在破解後的Wii可以使用WBFS / FAT32 / NTFS 三種移動硬盤分區格式,經常聽到很多玩家在詢問這三種格式有什麼區別、哪個格式最好,在此就對這三種格式做個說明並比較一下優劣。
1、WBFS
WBFS是最早出現的一種Wii硬盤分區格式,是由國外高手Kwiirk發明的並提供了WBFS格式相關的開發包,後續所有的USB Loader,包括CFG USB Loader、USB Loader GX、 Wiiflow等都是基於WBFS格式開發的,甚至後續出現的支持NTFS、FAT32格式的USB Loader也都是基於WBFS改造的。
WBFS分區當初發明的初衷(或者說優點),是為了盡可能高效地存儲Wii遊戲。何為「高效」呢?大家知道,Wii使用的是DVD光盤存儲遊戲,標準容量4.37G(D9光盤翻倍),但是大部分情況下每個Wii遊戲都沒有完全佔滿這4.3G的存儲容量,比如Wii遊戲《動物之森》只佔用了350M左右,《超級馬裡奧25週年紀念合集》只佔用了18M的空間。那麼這些數據在光盤上是怎麼存儲的呢? 首先,每個遊戲都會有一個頭(Header),包含了Wii遊戲6位碼ID和遊戲名Name,ID和Name是以2進制字節的形式固化存儲在每張光盤的最開頭部分,大約占100個字節左右。為了加快讀盤速度,真正的遊戲數據部分則是從光盤末尾開始存儲(至於為什麼要這麼做請研究光驅讀盤原理,在此不多說了)—— 好了,問題來了:一張光盤容量4.37G,但是實際遊戲數據容量只有300M,分佈在光盤一頭一尾的位置,那麼中間這段空餘的4G多空間幹嗎去了?答案是用0填充了,也就是所謂的「空隙」、「垃圾數據」,這部分數據是Wii遊戲不需要的,去掉沒有任何影響。WBFS格式就利用這個原理,把垃圾數據去除,只保留了真正實際有效的遊戲數據存儲在WBFS分區中,把4.37G的標準光盤「轉換」成實際大小只有300M的遊戲,以此提高硬盤存儲空間的使用率。
上一段已經介紹了如何把光盤(或者 iso)存儲進WBFS分區,但那是針對單獨的一個遊戲而言,如果我有多個遊戲存儲在WBFS分區上,USB Loader或者WBFS管理軟件怎麼才知道哪個遊戲存放在WBFS分區上哪個位置呢?這個問題就牽涉到WBFS分區的結構了。WBFS分區的具體結構比較複雜,普通用戶不必瞭解而且講了也聽不懂,想瞭解WBFS具體結構的想必都是懂破解和編程的高手,想要這些資料很容易,也不用我在這裡多說了。在這裡我只簡單提一下WBFS分區存儲遊戲的大概形式:WBFS分區會有一個分區頭(Header),這個分區頭的記錄中包含WBFS分區大小以及一個Table表,Table中記錄了這個WBFS分區有多少個遊戲以及每個遊戲的Index索引號,程序會根據每個遊戲的索引號計算這個遊戲在WBFS分區中的存儲位置偏移地址,進而讀取遊戲信息(ID/Name )和遊戲數據。這樣設計有一個好處:程序只要讀取WBFS的分區頭,馬上就可以計算出每個遊戲的偏移地址,一定程度上可以加快讀取速度。 —— 為什麼講這個存儲方式呢?是為了下面分析FAT32和NTFS做準備的,留後再議。
當然,WBFS分區並不是最完美的,它也有缺點:WBFS分區不可以直接被Windows識別,無法像管理普通磁盤文件那樣管理WBFS分區,當把WBFS分區格式的硬盤接在電腦上時,系統會提示「無法識別的格式,請格式化」,這時千萬別確認格式化,否則你幾百G的遊戲都沒了!Windows不識別WBFS分區不是它的錯,而是WBFS分區本身特殊必須借助第三方軟件或者驅動才能管理。舉個例子:假設我有一個500G的硬盤,但是只有10G的遊戲,如果採用WBFS格式存儲,由於Windows不識別WBFS,所以剩下這490G空間是處於浪費狀態不能使用的;但是如果採用FAT32或者NTFS分區存儲,剩下這490G空間還可以被Windows利用,而且可以自由存放其他文件,比WBFS分區好太多了。另外,仍然是由於WBFS不能被Windows識別,如果WBFS分區出現損壞,調試、修復分區將會是一個非常複雜的過程,所以,經過一段時間的發展,出現了下面的FAT32分區格式。
2、FAT32分區
這個格式想必大家都知道了,Windows下標準的磁盤格式之一,Windows默認就可以直接識別,如果可以在FAT32下管理Wii遊戲將會非常方便。不過,WBFS分區的數據怎麼放在FAT32上去讀取呢?想到這裡,聰明的程序員當然有辦法 —— Ghost大家都用過吧?可以把整個C盤分區做成一個*.gho的鏡像文件備份在另外一個分區上。沒錯!我們可以把WBFS分區整個dump出來,變成一個*.wbfs文件,存放在FAT32分區上,這個*.wbfs文件就是WBFS分區的「鏡像」了,其二進制存儲格式與WBFS分區沒有任何區別,這樣無論USB Loader還是WBFS管理軟件,基本上不用改什麼代碼就仍然可以按照原來讀取WBFS分區的方式來讀取*.wbfs文件,是完全兼容的。甚至,從API函數調用上講,無論讀區WBFS分區還是讀取*.wbfs文件,都是調用的同樣一個CreateFile API函數,只不過傳入的參數不同而已,讀取WBFS分區時是傳入磁盤設備編號,讀取*.wbfs文件時是傳入文件路徑——這樣可以在改動最少編碼的情況下保持最好的兼容性!
此外,由於FAT32格式簡單,目前有一些Wii端的軟件(如wad manager等)已經支持FAT32分區的USB設備了,這就意味著一定程度上可以把移動硬盤、U盤等USB設備分出一個FAT32分區來當作SD卡設備讀取,一定程度上可以取代原有的SD卡了,可以把wad、usb-loader配置文件、封面等數據存放在FAT32分區上。但還是建議玩家準備一張SD卡,畢竟Wii默認是讀取SD卡的數據不需要像讀取USB硬盤那樣需要額外的配置,再者某些情況下(比如破解、用bootmii備份/還原系統)必須插入SD卡沒有其他選擇,另外SD卡現在也比較便宜,一張2G的SD卡才2、2百塊錢,既然幾千多元的Wii買了、ㄧ千多塊的硬碟也買了,也不差這點錢了。
不過,FAT32分區格式也不是完美的,FAT32最大的缺點是有4G文件容量的限制:所有存放在FAT32分區的數據,最大不可以超過4G,否則無法拷入。這樣一來,如果某些Wii遊戲比較大,比如D9格式的Wii遊戲容量多達7G多,是無法存放在FAT32分區的,甚至連一個普通的4.37G標準的Wii光盤鏡像iso文件也無法存放在FAT32分區。 當然,也不是完全沒有辦法解決FAT32的這個問題,可以對過大的遊戲文件進行分割存儲,把一個大於4G的文件切割成多個小於4G的小文件放在FAT32上就可以解決這個問題,但是文件太多管理麻煩,並不完美。所以,接下來就有了NTFS格式,NTFS將會是Wii遊戲硬盤格式的終結者。

3、NTFS分區
這個分區格式大家應該很熟悉了,不多說,目前最完美的,既可以高效存儲遊戲,也可以被Windows識別不會像WBFS分區浪費空間,而且可以管理超過4G的文件。

目前所有的USB Loader都已經支持NTFS格式硬盤上的*.wbfs遊戲文件讀取,雖然同FAT32一樣暫時也還無法取代SD卡,不過菠蘿堅信,技術是不斷進步的,在以後的發展過程中總有一天NTFS會變得完美,NTFS將會是Wii硬盤格式的終結者!

綜上所述總結一下:
WBFS/FAT32/NTFS優缺點分析

WBFSFAT32NTFS
壓縮遊戲數據,高效利用磁盤空間支持支持支持
Windows系統下直接讀取硬盤數據不支持支持支持
直接讀取大於4G的遊戲或數據文件僅支持大於4G的遊戲不支持支持
可否取代SD卡完全不可以一定程度可以一定程度可以
CFG/Wiiflow/GX   USB Loader支持支持支持
WiiCCD 5.0支持支持支持
分區損壞或遊戲數據損壞後修復非常複雜簡單(直接刪除)簡單(直接刪除)


文章最後,再來說一下WBFS / NTFS的兼容性和讀取速度。老是聽到一些小白到處宣傳WBFS穩定、NTFS不穩定,或者WBFS讀取快、NTFS讀取慢…… 呵呵,其實無論在兼容性和讀取速度上,WBFS和NTFS幾乎沒有任何區別,下面菠蘿就從程序理論上給你解析一下:
首先談兼容性,上面說了,所有的USB Loader、IOS在讀取硬盤時都調用的是CreateFile這個API函數(因為對於Wii來講它只知道你接上去的是個硬盤設備,不管它是什麼分區)只是傳入的參數不同:讀取WBFS分區時,傳入的是WBFS分區設備名;讀取*.wbfs文件時,傳入的是*.wbfs的文件路徑 —— 從兼容性上講是一模一樣沒有任何區別的,區別在於WBFS是最早開始發展的,讀取WBFS的IOS249比較完善,而後出現的讀取NTFS的IOS222相對慢點,所以發佈之初確實有點不穩定。 但是時至今日,支持NTFS的IOS和USB Loader已經非常完善了,可以這麼說:只要WBFS支持的遊戲,NTFS一定也同樣支持,不存在兼容性問題。
再來談談速度,同樣的,前面分析了WBFS分區在讀取遊戲列表時,是根據WBFS分區的遊戲頭中各個遊戲的索引號直接計算遊戲的偏移地址,只要做1次磁盤IO讀寫操作就可以計算出所有遊戲的地址;而NTFS在讀取100個*.wbfs文件時,由於對每個*.wbfs文件都模擬成WBFS分區格式去讀取,所以要調用100次CreateFile對磁盤進行100次磁盤的IO操作,這個時間消耗就非常大了,對性能影響非常嚴重。 —— 那是不是就沒有辦法解決這個問題了呢? 呵呵,當然不是。。。還記得它是NTFS分區嗎?NTFS分區下每個*.wbfs遊戲文件都是有文件名的,如果不做磁盤IO讀取每個*.wbfs文件的二進制內容,而只是掃瞄磁盤獲取文件列表名的話,那速度就快多了,好吧!那怎麼確定每個遊戲文件對應的是哪個遊戲呢? 問得好!每個遊戲是有一個唯一6位ID編號的,只要拿到這個ID編號就可以知道它是什麼遊戲了!所以,這就是為什麼現在所有NTFS硬盤下的*.wbfs 遊戲文件都要求必須以ID.wbfs或者ID.iso命名的原因,目的就是為了加速讀取遊戲列表!從磁盤IO角度分析,WBFS做一次磁盤IO的確比NTFS做100次磁盤IO要快得多,但是如果NTFS不做100次磁盤IO,而只是掃瞄文件名的話,那情況就不同了,兩者幾乎沒有任何區別。 不信?去試試唄~ 呵呵。
友情提醒:NTFS分區格式下遊戲文件必須以ID.wbfs或者ID.iso命名,只有這樣接在Wii上之後USB Loader才會識別出各個遊戲!否則以其他文件名命名的話,接在Wii上是無法顯示出任何遊戲的!當然,如果你不接在Wii上,而是在PC電腦上使用WiiCCD 5.0管理軟件的話,都沒問題,無論你把它改成什麼文件名,只要文件本身沒有損壞都可以被WiiCCD 5.0識別出來。

 

臉書網友討論
2#
發表於 2011-8-27 03:17:27 | 只看該作者
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-5-23 05:17 , Processed in 0.104902 second(s), 18 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表