GameShark 程式碼如何工作?
這一直讓我感到困惑。顯然 GameShark 和 Game Genie 從來沒有在每場比賽中加入他們自己的秘籍。我認為沒有任何開發人員給他們原始碼來獲取程式碼。而且我不認為這些遊戲的原始開發過程包括自己放置任何這些程式碼。那麼,究竟什麼是 GameShark 或 Game Genie 程式碼?
它們通常都採用相對較短的十六進製字元串的形式(或多個,如果是這種情況),所以我的直覺告訴我它們使用相同的原理。但它們只是用來翻轉的記憶體地址嗎?還是鎖定?還是用某物對一系列位進行異或?程式碼是什麼,它有什麼作用?
這個怎麼運作
當 GameShark(和其他遊戲增強器產品/自製軟體)被控制台載入時,增強器就是啟動實際遊戲的東西。這樣做時,它會在系統 RAM 中留下一個**程式碼處理程序,並“**掛鉤”遊戲的程式。
遊戲程式中大約每幀都會執行的特定位置(例如讀取控制器數據)是放置“鉤子”的位置。(因為使用了 SDK,這使得查找適用於系統所有遊戲的鉤子變得更加容易)
鉤子實際上所做的是將程式流程重定向到增強器留下的程式碼處理程序。一旦程式碼處理程序完成執行,它會將程式流程返回到劫持點。
如果您熟悉 GameShark 的“ Master Code ”,那就是設置鉤子的原因。(其他增強器——比如 Wii 的 Gecko OS——不需要主程式碼,因為增強器本身有一些基於 SDK 的鉤子,它可以在載入時在遊戲中“找到”它們。)
程式碼結構
現在程式碼本身分為三個部分:
- CodeType (這通常是程式碼的第一個字節——前 2 個十六進製字元)。CodeTypes 特定於增強器。
- CodeType 將使用的 ram 中的地址。
- 程式碼類型將在指定地址使用的值。
最常見的程式碼類型是:
- RAM 寫入(典型選項為 8 位、16 位或 32 位)
使用 RAM 寫入時,CodeHandler 將獲取值並將其放置在地址中。(改變那裡的任何東西,比如將你的生命值設置為 100!) 2. 條件(典型選項是>、<、=、!=)
使用條件,CodeHander 讀取程式碼地址處的值並將其與程式碼中的值進行比較。如果比較返回 true,則 CodeHander 將執行程式碼中的下一行。(它執行多少行取決於增強器,並且通常是程式碼類型本身的一個選項!)
我們可以深入了解更多資訊,但這應該為您提供良好的理解基礎。=)
**資料來源:**自 1999 年以來的遊戲黑客, http: //GeckoCodes.org的創始人