遊戲漢化

幾種遊戲文件格式

1.tab文件格式

是存放遊戲所有英文腳本的文件,文件內容是加密存儲的,用一般文本編輯器打開是看不到任何可用信息。解密內容的方法是對文件所有字節與0xDD進行異或操作。
以下是解密文件的源碼(C#)

 

sito030 Oh yeah, yeah. Yeah. That is what I told him.

sito031       Are you kidding me?

sito032 gave him the idea in the first place!

可以看出左邊是說話人的名稱標識,右邊是說話的內容,分割這兩者的是看似一個空格,其實是ASCII碼錶中的製表符Tab16進製表示是0x09

對遊戲角本的漢化修改此文件的內容爲中文就可以了,還有一點值得注意,修改完此文件後無需再對其反加密,只要將解密的文件保存成以前加密文件的文件名覆蓋即可。應該是遊戲運行時候會對文件是否加密進行判斷

2.lab文件格式

是遊戲的資源文件格式,遊戲所有的資源聲音、圖片、動畫、全存於此。它很類似於常用的壓縮文件的格式,如ziprar,作用是把很多文件壓縮成一個文件,需要用的時候再解壓出來供使用。Lab文件也是這個用途,它把很多用到的聲音、動畫等文件放到一個lab文件中,供需要時調用。Lab文件不對文件進行壓縮,只是簡單地把所有文件頭尾相連,保存成一個文件而已。

Lab文件由文件頭、文件偏移量表、文件名列表、文件物理存放塊組成。以下內容選自LucasHacks的文檔

(1)    文件頭

 

字段

數據長度

描述

Id

Long(4字節)

文件頭標識LABN

Version

Long(4字節)

文件版本號

Files

Long(4字節)

lab文件內包含資源文件的個數

a

Long(4字節)

未知

b

Long(4字節)

未知

(2)    文件偏移量表

字段

數據長度

描述

Ofs

Long(4字節)

文件名偏移量,用來找到資源文件名稱

Offset

Long(4字節)

文件偏移量,用來找到資源文件在lab文件中的相對位置

Size

Long(4字節)

文件大小

U

Long(4字節)

總是0

(3)    文件名列表

所有在lab文件中的資源文件的文件名,每兩個文件名中間用0x00分隔。

(4)    文件物理存放塊

所有資源文件在此塊中存放,首尾相連。

 

 

 

private void button1_Click(object sender, System.EventArgs e)
        
{
            
// Create the reader for data.
             FileStream   fs = new FileStream("c://grim.tab", FileMode.Open, FileAccess.Read);
             BinaryReader r
= new BinaryReader(fs);

             FileStream fs2
= new FileStream("c://text.txt", FileMode.Create);
             BinaryWriter w
= new BinaryWriter(fs2);
             fs.Position
= 4;
            
while(fs.Position < fs.Length)
            
{
                 w.Write((
byte)(r.ReadByte()^ 0xdd));
             }

             r.Close();
             w.Close();
             fs.Close();
             fs2.Close();

         }


解密後的文件內容就是一般的文本,可以看到所有遊戲對話都在其中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章