天天看點

PS2漢化1 字庫處理引語字模替換字庫擴容字庫減色(有損壓縮)字庫壓縮結語

引語

其實字庫處理很難說有一個統一的方法,不同的程式都需要不同方法來處理。

關于常見位圖字庫的詳細資訊。

下面是字庫存在于ELF/ERX檔案時的處理思路。

字模替換

最天真樸素、最通用的處理方式。适用于原字庫大小能夠塞下漢化所用的全部文字的情況。

這種情況隻要對碼表進行整理,完成碼點的重映射即可,可以說非常的簡單。

但是,如果漢化用字超出了……呢?

字庫擴容

如果遊戲利用的是ROM媒介,比如古早的遊戲機将ROM映射到記憶體位址上那樣的話,由于ROM本身的特性,在遊戲原始ROM尾端附加字庫是可能的。那麼隻要移動字庫到尾端,然後維護字庫的指針即可。

然而,PS2上,由于程式是被加載到記憶體中,而且各個記憶體都有被利用的可能性(通過堆配置設定等),如果真的要移動到尾端,你還需要繼續維護成噸的代碼,確定字庫占有的記憶體不被利用掉。你可能需要修改malloc(甚至可能是開發商自己實作的)等一系列函數。然後才能将字庫移動過去。

字庫減色(有損壓縮)

如果原始字庫不是單色(1bpp)而是4色甚至16色的話,犧牲一些精度來保證容量是完全可以接受的。

難點在于,這次需要修改從字庫取字的例程了。

而根據遊戲的不同,取字例程要改到什麼程度是不一定的。有的遊戲可能擁有不止一個取字例程,那麼也都需要改變。

以GUST的遊戲為例,除了主字庫之外,遊戲還有一個小号的字模“緩沖區”。程式首先在緩沖區中找字,找不到的話再去字庫取字,并儲存到緩沖區。之後再從緩沖區中複制到其他各種地方染色、縮放等。是以,最簡單的方法就是修改從字庫複制字元到緩沖區的例程。将取得的1bpp字模加色到4bpp後貼回去即可。

字庫壓縮

将字庫資料壓縮,然後運作時解壓到壓縮時騰出的空間中,然後再令取字例程從那裡取字。代價是會帶來巨大的運作時開銷。壓縮率高時尤是。

結語

大概,就這些吧?

PS2