2016-12-16 73 views
1

我的目標是使用Android模擬器(例如Snes9x EX +)模擬遊戲(例如,Super Bombliss),並在遊戲進行時捕捉遊戲指標(例如分數和等級)。如何從模擬(SNES)遊戲捕獲指標?

我假設我需要修改開源模擬器和/或修改ROM​​來做到這一點,但我需要一些關於最佳方法的指導。謝謝!

回答

1

回答「我如何從模擬(SNES)遊戲捕獲指標?」您需要先回答「我在哪裏可以找到SNES遊戲中的指標?」。後者的答案是「這取決於遊戲」。

想想GameShark代碼,它們會爲內存的特定位置寫入一個值。

  • 它可以不斷寫入一個值到內存位置。例如,爲了讓你的生活酒吧總是充滿真人快打。
  • 它可以只寫一次值到內存位置。如果你想跳到Sunset Riders的最後一級。

但是他們怎麼知道他們應該寫入哪個內存位置?這是一個很難的問題。通常它歸結爲逆向工程ROM。您可以創建一個與您正在查找的每個度量標準對應的內存位置的地圖。

讓我們假設你想在超級馬里奧世界找到你當前的分數和你當前的水平。一個可能的解決方案是不斷掃描RAM內存,查找已知值並創建匹配地圖。

知道你的分數是321,你可以轉儲內存並查找包含321的內存位置。如果只有一個匹配,那麼很有可能是內存位置表示你的分數。如果你有更多的比賽,你應該保持所有比賽的列表,並繼續玩,直到你的分數改變。如果它現在更改爲567,則從以前的列表中檢查是否有任何內存位置現在的值爲567.

它並不總是直截了當的,例如,對於階段級別6-3。你應該在內存中分別查看6和3嗎?如果遊戲只將一個變量存儲在BCD 63表示的變量中,那麼你將不得不尋找完全不同的東西。

確保100%的唯一方法是對ROM進行反向工程,以這種方式知道遊戲在哪裏獲取屏幕上顯示的內容。

現在回答你原來的問題「我怎樣才能從仿真(SNES)遊戲捕捉指標?」你必須首先找出每個遊戲ROM中這些指標的位置,一旦你知道你只需要建立一個模擬器來偵聽這些內存位置的修改,那麼你就可以捕獲這些指標。

你可以找到許多致力於反向工程ROM的網站。我建議你看看在http://www.romhacking.net/上完成的工作。

+0

謝謝你的所有有用的信息! – Uritziel