魂鬥羅超級跳具體原理分享
阿新 • • 發佈:2022-04-03
從最初發現超級跳的原理到現在已經三年了,最近一次做TAS時為了更好地操縱第三關的縱向位置,我再次仔細研究了一下超級跳的原理,經過比上次更大量的資料統計和分析:
以及通過記憶體修改確認各種邊界值,我確認了超級跳的具體原理:
首先分享一下魂鬥羅常用的記憶體監控地址:
1、和上次的一樣,向右的跳躍在拉螢幕的第一幀會出現螢幕Y座標和人物Y座標一起變化的現象,於是人物會獲得兩倍的Y值變化。
2、當人物有向左的X速度或者沒有X速度時,Y座標的變化量就是簡單地等於Y速度的值(即大值減去大值,小值減去小值,不夠的進位。其中拉屏時大值變化的是螢幕位置大值,小值為人物位置小值)
3、當人物有向右的X速度時,如果人物不在可拉屏的範圍內,那麼Y座標的變化量和向左時是一樣的,若人物在可拉屏範圍內,則情況較為複雜:
螢幕Y的變化量基礎值=256-Y速度大值-1
人物Y小值變化量=Y小值×2,若超過256,則直接減去256且不進位
若前一幀人物的Y位置小值在這一幀Y速度小值的一倍到兩倍之間(若兩倍的值超過256,則減去256,且範圍變為Y速度小值-256,0-Y速度小值×2),則螢幕Y變化量+1,否則螢幕Y變化量不變。
正是由於向右跳躍時Y位置變化的不確定性,跳躍才能操縱出非常大的高度差。而且可以發現,雖然已經完全瞭解了計算公式,但是由於不確定性較大,除了窮舉依然沒有很好的方法可以操縱出理想的情況。但是既然知道了原理,至少我們可以進行有目的的窮舉並且找到相對合適的目標。