Re: [問題] 電玩模擬器是怎麼寫出來的?
> ==>發信人: TKyo.bbs@ptt.cc (闇黑貴公子), 信區: programming
> ※ 引述《powerguy (小P)》之銘言:
> : 這個問題讓我好奇很久了,而且也不知道能去哪問
> : 想來想去,我想還是這兒最適合吧,畢竟能寫出模擬器的都是程式高手.....
> : 我想過
> : 方法1:廠商有公佈or流出電玩的spec.
> : 聽說當年GBA模擬器能那麼快寫出來,就是規格外洩
> : 但那些規格未知的電玩模擬器是怎麼寫的?
> 有種東西叫做示波器, 它可以探測訊號
> 有種東西叫做三用電表, 它的好處我舉例不完
> 硬體高手可以藉著這兩種基本工具和其他測試工具
> 畫出大概的圖或是 spec.
> 舉例:
> 破解光碟保護不挑片的破解晶片就是這樣來的
光靠這兩個東西沒那麼容易出名堂來
還有一個動轍百萬台幣起跳的東西叫做邏輯分析儀 (Logical Analyzer)
這東西才是真正破解硬體的好幫手
光是廠商公布的或外流出來的硬體規格而沒有線路圖的話, 是半個影都
不可能生得出來的. 光知道 CPU, GPU, Audio Processor 等主要晶片的
型號而不知道其它輔助晶片有哪些, 要猜出線路是怎樣兜出來的恐怕比
中樂透頭彩或被閃電擊中的機率還低
> : 方法2:拆解硬體,然後寫出模擬器
> : 覺得這方法根本是天方夜譚 = =
> 拆解硬體是一樣要的
拆電路板量線路重建線路圖也還只算是基本功
MAME team 在解保護 ROM 有一個方法是把 ROM chip 拆開拿到高倍顯
微鏡下去解讀矽晶上的線路邏輯
> : 方法3:軟體逆向工程
> : 例如藉由廠商公佈電玩支援的指令集、API....等
> : 然後分析這些指令、API對應到的機碼,藉此寫出模擬器
> : 不過這方法是我亂想到的,不知道可行嗎?
> : 請鄉民補充,還有有錯請更正
> : 謝謝 <(_ _)>
> 基本上, 經由 1, 2 的步驟就可以得知大致上的規格 (CPU/訊號 ... 等)
> 如果不知道, 換找一個硬體工程師來幫你檢測
> 而 CPU 的指令碼資料, 要弄到不是難事, 大部分資料網路上都有
沒那麼簡單. 尤其是某些遊戲大廠特別愛用特製型的 CPU 來設計硬體
平台以提高某些特定部份的執行效率, 或是加入某些原 CPU 所沒有的
特異功能. 那些特異化的部分雖然不多, 可也不是那麼容易就找得到
資料的, 甚至都是根本就沒有資料的 undocumented function
再說如果板子上有用到 FPGA/CPLD 這一類的可程化邏輯陣列, 那要猜
出裡面怎麼運做可就更是難囉
> 沒有的話, 最好可以找到有在 "遊戲開發產商" 內部工作的人
> 因為他們都會有 "整包的開發工具"
這個也沒有那麼簡單. 第一, 要找得到在遊戲開發廠商內工作有交情的
人不是那麼容易, 更何況他們當初被雇用時一定會簽保密合約. 第二,
就算透過種種正式授權之外的管道取得了開發包, 也不可能直接用, 因
為有法律問題. 而且寫模擬器頂多拿這開發包當做模擬正確度的驗證工
具, 不可能拿開發包來寫模擬器. 第三, 就算取得開發包沒有法律上的
問題, 開發包裡面可能也只給你 object code library 而沒有附上這
些 library 的 source code
> 等到這些都完備後, 基本上, 就可以開始寫模擬器
其實, 寫模擬器通常都是先寫或找一個可運作的 CPU 模擬核心, 然後
再慢慢的把週邊的支援晶片的模擬建立起來. 至於模擬器的正確度, 則
是手上有多少資料能有多少正確度就算多少, 不正確的部份再邊猜邊改
--
** 版權聲明 **
本篇文章歡迎轉載收錄,無須為任何用途支付任何費用。
本文一經轉載收錄引用,本人即無須對其內容負責。
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 218-168-57-215.dynamic.hinet.
→
09/02 02:04, , 1F
09/02 02:04, 1F
→
09/02 06:12, , 2F
09/02 06:12, 2F
討論串 (同標題文章)