天天看點

PS2漢化2 - 自制程式的運作與調試運作調試的坑點之類的

自制程式的運作與調試

  • 運作調試的坑點之類的
    • SDK
    • 運作與調試
      • 通過PS3
      • 通過PS2
        • 神(昂)奇(貴)的DTL-10000!
        • 貧窮者的零售機器
      • 通過PCSX2仿真器

運作調試的坑點之類的

本文為了自制程式(或者修改後的某些程式)而撰寫,記錄一些筆者踩過的或者看别人踩過的坑。

SDK

我相信大多數人都有能力搞定MIPS的交叉編譯環境,不過,直接使用PS2SDK是更簡單的做法。

無論是找到了索尼洩露的官方PS2SDK還是玩家自制的PS2SDK,選擇你喜歡的就好了。

運作與調試

通過PS3

對于持有PS3向下相容型号/軟破機的人來說,利用SWAPMAGIC啟動OPL,并通過SMB運作是最簡單的方法。因為PS3仿真的限制,如果每次修補CD光牒鏡像/程式都要重新傳輸到硬碟/虛拟記憶卡是非常不明智的做法。

由于PS3的PS2仿真器隻提供必須的功能仿真,你無法在PS3上建立監聽套接字(即使仿真的網卡會回報操作成功完成),是以所有PS2上的服務端軟體(RDB、PS2FTP,PS2LINK,LaunchELF、deci2服務等)都不能正常運作。

不用抱着僥幸心理,筆者已經在CECHA00上,通過Rebug DEX/CEX下進行測試,包括了OPL(github最新版,debug_deci2建構),EXECFTP,PS2LINK,RDB在内,并得出此悲傷的結論。nmap也全掃過了,沒有就是沒有,一個開着的端口都沒有。

通過PS2

PS2的硬碟破解已經非常成熟,我們早已不需要用什麼直讀晶片改機了。關于PS2的破解不做贅述。

神(昂)奇(貴)的DTL-10000!

當然,如果你有一台DTL-10000開發機的話(就是那個PC-PS2縫合怪;對對對,就是那個把一台完整PC當通訊處理器用的白癡設計),用那個調試必然是最好的方法。然而,它的價格就沒有多好看了……(一台過時的隻能用IDE硬碟超級古董電子垃圾怎麼好意思賣那麼貴啦!(╯‵□′)╯︵┻━┻)

注意和PS3的開發機分類一樣,PS2開發機中的TEST型(DTL-T****)隻是個不做正版校驗的普通機器,隻有TOOL(我隻知道DTL-10000)才能做調試用途。

貧窮者的零售機器

如果你有PS2實機(有網卡的那種)的話,RDB或者使用debug_deci2配方()編譯的OPL(make debug_deci2)就是很好的選擇(注意OPL會駐留在程序裡,分析代碼時可能會把OPL和要調試的程式的代碼弄混)。它們都能啟動DECI2/TCP(索尼官方的PS2調試通訊接口)服務主機,這樣你就能通過DECI2進行調試了(别忘了-nr選項,重置EE或IOP都将使RDB或OPL提供的DECI2服務暴斃)。至于PC上的用戶端的話,除了RDB文章裡提到的工具(Linux用)外,還可以考慮看看能不能找到洩露的官方工具,比如ProDG、CW什麼的,不過不建議這麼幹啦。

或者,其他hacker做的遠端調試器也能用。

缺點當然就是這麼幹超級麻煩啊……

通過PCSX2仿真器

通過PCSX2仿真器時,請記得一定要把EE和IOP改成解釋器。重編譯器會掩蓋掉一些程式設計上的錯誤,最終可能導緻PS2實機運作時崩潰。

要舉例子的話,比如PCSX2能夠容忍非對齊記憶體通路,然而在PS2實機上會直接引發異常;更重要的是,PCSX2的重編譯器不會報告“發生了非對齊記憶體通路”這一錯誤,而這個對于最終的成品來說是很要命的纰漏。

此外PCSX2對于DMA也沒有嚴格的限制,這也可能使得最後的成果出事。

而且由于仿真器的特殊性(翻譯的目标代碼因機器而異),不同的人可能在不同的地方甚至是随機出事。是以如果要利用PCSX2進行調試,請小心而慎重地進行。

優點嘛……貌似也沒有就是,畢竟用PCSX2的前提是已經有了一台PS2,不是麼?(笑)當然有的人PS2壞了不舍得花錢買新的也是可能的,嗯。

PS2