SFC中文化經驗談(三)—指標篇— - 模擬器

Iris avatar
By Iris
at 2012-11-16T21:50

Table of Contents


【雜言】

我會做中文化主要還是松野的錯.....。

FF12讓我跑一次很high的低等級攻略後,我就很難從一般的玩法獲得滿足了。
後來因為一直提不起玩遊戲的興致,就開始看起我最喜歡的皇騎2的Rom data。
那時什麼都不懂,所以遇到一堆問題都要半猜半想、硬著頭皮解決。

然後.....就解析->翻譯->刻字->解析->loop n次....花差不多一年休閒時間做完了。
雖然那一年沒玩多少遊戲,但滿足感倒是前所未有的。
(日文拖U君等人的福,進步了一些XD)


【正文】

所謂的指標就是Rom裡指向圖片/字庫/文本起始位址的數據
每個指標通常佔用2~3個bytes,遊戲會透過指標來快速載入這些資料。

由於中文化所需的字數通常比原日文遊戲使用字數多,
所以字庫大小與文本長度經常會比原本的長。
如果硬填回原位置的話,勢必會覆蓋掉後面的資料,
因此需要修改指標,將指向原字庫的指標指向一個放新字庫/文本的空間位址,
也就是所謂的"擴容"(註一)

指向單一種未壓縮圖或字庫的指標通常只有單獨一個。
有時候,我們可以用"猜"的猜出這類指標位置
特別是當你知道字庫的開始位置時。

例如我們可以YY-CHR看出0x4bdd9 (04 BD D9)的位址開始有指令名稱的圖,
用Lunar Address可以算出對應的SFC位址是0x9bdd9 (09 BD D9),
又因為SFC位址是高位byte在後面,
所以可以猜測SFC位址在Rom裡的數據也許會是D9 BD 09 (註二)

於是我們用UltraEdit搜尋絕對位址D9 BD 09會發現.....沒這數據XD。

沒關係這常有的事,我們可以再用相對位址D9 BD去找.....發現有34筆。
我們試著把每一筆輪流改成D9 BE,也就是把指標指向的位址延後0x100
希望將原本指向第一筆指令名稱圖的位址改成指向第二筆。
如果我們改到的是指標,原本畫面該顯示第一個圖就會改為顯示第二個圖。
最後我們在改0x4a390的數據時,發現改到指標了:

http://ppt.cc/OJIZ (又拿到奇怪的短網址...之前是o~mg)


事實上,運氣好的話我們可以在附近找到bank值(註二),也就是上述例子中的09
我們將0x4a39c的09改成0A會發現指令名稱圖亂掉了,
這是因為它跑去0xabed9 (0A BE D9)的SFC位址。

如果我們再把0x4a390的數據改成20 92,就會存取到0xa9220 (0A 92 20)的SFC位址,
用Lunar Address可以算出該SFC位址對應的實際Rom裡位址是0x51220
也就是下圖裡的あいうえおかきく圖像(因為調色盤不同,所以顯示出的文字顏色很暗)。

http://ppt.cc/~04w


以上就是不用反組譯,用猜就猜出指標的方法概念。
好,有多少人看到這裡放棄SFC中文化了(笑


劇情文本指標通常囉唆些(壓縮圖或字庫、名詞文本的指標有時也會這樣)。
以皇騎1為例,用了三層指標來存取劇情文本(對!三層!)
先用一個總指標(第一層)指向連續存放的第一個章節指標(第二層),
再用各章節指標(第二層)指向某章節連續存放的的第一個對話指標(第三層),
最後用各對話指標(第三層,就是上一篇紫色的代碼)指向該對話的實際劇情代碼

如此遊戲在進行時,只要知道進行到哪一章第幾段對話,就能透過多重指標快速存取。
(不過老實說,皇騎1把對話指標也壓縮進去沒有意義,甚至還拖累了一點存取時間。)

雖然我覺得大部份指標,只要知道資料起始位址就能反推出來,
因為壓縮的關係,不少時候是根本不知道圖片、字庫、文本的開頭位置。
這時,就只好靠反組譯來知道指標位置跟壓縮方法了。
有趣的是,其實真正有必要知道壓縮方法的只有劇情文本,
圖片跟字庫的壓縮方法對反組譯來說.....根‧本‧不‧重‧要。
找塊空間放要取代的未壓縮新圖片跟字庫,用指標改連過去就好了。


下回開始就要進入胃痛的反組譯篇(不知道3篇能不能講完=___=|||),
對中文化有興趣的人.....請準備胃藥!


============================================================================
(註一) 事實上,擴容包含兩種層面,一種是上述的Rom裡原空間不足
另一種是可使用的文本代碼範圍不足。例如皇騎1的劇情文字只允許
20 ~ FF, 19 00 ~ 1B FF ,接近1000個不重複代碼可供使用,
也就是只能定義最多不到1000個字,這種問題就只能靠反組譯解決,
透過修改原程式來增加更多可用代碼。

(註二) SFC的Rom\Ram裡任何位置都能用3個byte的絕對位址去存取。
但SFC是16 bits主機(簡略的說法),所以會把Rom裡空間拆成幾十個bank,
每個bank都有0000~FFFF的相對位址空間(2個bytes=16個 bits存取範圍)。
SFC位址09 BD D9也就代表第09個bank中相對位址為BD D9的地方。
遊戲程式執行時,bank其實不太常換,大多在處理同一bank裡的資料。
所以有時只會用兩個bytes來當指標,因為bank可能之前就指定了。
============================================================================

--

All Comments

Linda avatar
By Linda
at 2012-11-18T07:19
專業好文推,長知識!
Andy avatar
By Andy
at 2012-11-23T00:48
真神人也!!!!!!!!!!!
Kama avatar
By Kama
at 2012-11-27T22:14
なるほど、わからん。大丈夫だ、問題ない。
Agnes avatar
By Agnes
at 2012-11-28T11:38
瓊安軟體那幾款經典作品 從沒看過漢化 是根本上做不到嗎
Eartha avatar
By Eartha
at 2012-11-29T09:57
好文章,特來拜讀!!
Ingrid avatar
By Ingrid
at 2012-11-29T15:37
我覺得理論上都可以中文化 只是要"改多大"的程度
Victoria avatar
By Victoria
at 2012-12-03T05:18
只是SFC技術較麻煩 中文化圈有在弄反組譯的大概就那幾個人
Sierra Rose avatar
By Sierra Rose
at 2012-12-06T05:20
不知道這邊提的經典作品是....?
Jake avatar
By Jake
at 2012-12-09T10:11
瓊安軟體的遊戲幾乎每片都是經典之作,在超任上的有
弟切草、恐怖驚魂夜、特魯內克和風塵英雄
Victoria avatar
By Victoria
at 2012-12-14T05:58
風塵英雄有中文化唷...破解我還認識...=__=|||
Faithe avatar
By Faithe
at 2012-12-16T13:40
推lulaptt專業!我超喜歡弟切草的說~破了不下30次呢~
Rae avatar
By Rae
at 2012-12-19T03:46
專業好文推一個~
Erin avatar
By Erin
at 2012-12-21T20:12
修改一項錯誤 之前BD D9跟BE D9寫反了....
Yuri avatar
By Yuri
at 2012-12-22T22:11
推專業文~
Hedwig avatar
By Hedwig
at 2012-12-27T08:54
不得不感謝松野的錯 XDD
Steve avatar
By Steve
at 2012-12-31T02:22
感謝好文
Victoria avatar
By Victoria
at 2012-12-31T12:15
推推推
Megan avatar
By Megan
at 2013-01-01T17:58
中文化是個「厚工」的工作~有愛有推~
Ida avatar
By Ida
at 2013-01-04T10:37
神文推!
Dinah avatar
By Dinah
at 2013-01-05T03:14
有看有推!
Erin avatar
By Erin
at 2013-01-07T01:37
路人推專業好文!

任天堂紅白機遊戲-宇宙巡航艦

Ina avatar
By Ina
at 2012-11-16T10:29
最近自己其實還蠻迷這系列經典遊戲的.. 宇宙巡航艦(Gradius)是1985年由KONAMI在AC上發行的射擊遊戲, 自己最初是在115合一的合卡上玩到1986年發行的紅白機(FC)版本。 宇宙巡航艦的最大特色在於遊戲提供了武器升級模式, 藉由遊戲中打敗敵人所取得的膠囊,針對游標停的位置可以進行升級。 ...

JPCSP Launcher [v1.8.0.2]

Olga avatar
By Olga
at 2012-11-15T22:45
http://www.emunewz.net/forum/showthread.php?tid=977 v1.8.0.2 [11-13-2012] -Support for the new option and#34;Save Stencil to Memoryand#34; -Added anisotr ...

女神異聞錄DS-7- 聖者之國 (EX-LAW)

Edith avatar
By Edith
at 2012-11-15T20:27
進入屬性分歧後,不管選什麼都只會有對話差異。 所以之後就全部不會列出要選什麼,全部憑自己高興吧? ═══════════════════════════════════════ ˙大前提,如果考慮要最快合出魔王ルシファー, 建議是第一輪就打天音路線,第二輪打直哉路線。 這樣在直哉路線第七 ...

ClassicSegaOnline.com

Rosalind avatar
By Rosalind
at 2012-11-15T13:41
這是一個把 Sega Master System 與 Sega Game Gear 遊戲線上化的網站, 玩家可以直接在網站上執行兩個平台的經典遊戲,無需使用任何模擬器。 網站目前建構了百分之七十左右的遊戲,其中甚至包含了一些未發行的作品 ,有興趣的玩家可以去看看。網站目前也還在尋求小額贊助與未上線遊戲的 軟 ...

RPG最終BOSS戰大排名(BEST 25)

Quintina avatar
By Quintina
at 2012-11-15T12:46
http://news.gamme.com.tw/385383 25. 天魔アスラ王 真・女神転生 25. セラフ ミカエル 真・女神転生 23. 大魔王ルシファー 真・女神転生III 23. サタン ...