以下内容完整转载自:Eiffel2018 原创发布的:给初学者寻找 登月跳 Moonjump 金手指教程
前言:
英文版原文链接:https://gbatemp.net/threads/finding-moonjump-tutorial-for-beginners.608977/
以下将以洛克人7 这经典动作游戏作为例子,简单介绍 月亮跳跃 Moonjump 的金手指开发过程
20180522 [洛克人 遗产合集2] Mega Man Legacy Collection 2 [0100842008EC4000] (US中文) 动作,过关
配合工具:https://github.com/tomvita/EdiZon-SE/releases
EdizonSE内建自动升级功能,建议大家保持最新版本。
在短短一年半期间,经过作者 TomSwitch 的努力,EdizonSE 已更新了很多很多个版本,添加了很多很多的功能,成为了最好用的金手指开发工具,以后有机会再为大家一一介绍。
基本概念:
一般来说,针对角色跳跃相关的金手指可分为三类:
- A. 无限跳跃(即在空中不着地再次跳跃,针对那些游戏内置二段跳的,改成无限制多段跳跃)
- B. 修改跳跃高度(即是把初始加速率增大,或是把地心吸力9.81减少)
- C. Moonjump 登月跳(跳跃很流畅,把速度锁定为正数,不停上升直至放开按键让角色自然降落)
前两种是修改程序,破解了编码,就可很容易改到。
最后一种是利用 金手指程序,例如 EdizonSE 把内存锁定。
本文介绍的就是最后这个 MoonJump 登月跳跃。
它的好处是 制作简单,使用起来也很流畅,开发者可以很轻易的改变上升速度,配合不同游戏,微调跳跃效果,达到自然流畅。
虽然游戏开发员制作 跳跃 时,可能有多种不同的编程手法,但比较普及的是一种物理公式固定加速率(地心吸力 -9.81)使速度从正数减小到负数
也有可能是 相反的 地心吸力 9.81,速度从负数增加到正数
当玩家按下跳跃按钮时,速度变量将被设置为一个较大的初始值,例如 +2000,(我看过有些用到七位数,相当大)
并且操作的角色将开始向上跳跃,然后,这个速度变量不断减少,
直到达到速度变量为零(或者用户中途松开跳转键的情况时),
角色的高度便达到最高点,角色的移动方向开始变为向下。
不过这个速度变量到了0之后,即使变成了负数仍会继续减少,直到角色接触地面为止。
速度变量 0 就是一个 turning point 转折点,角色跳跃时的最高点
我们能做的就是:
角色在跳起上升时,找出一个正数值
然后当角色下降时,找出一个负数值
找出了这个 速度变量 的内存位置,便可以锁定它为正数,使角色不断上升
还有一点要补充:
这个 速度变量 的内存位置 的形态 常用两种,
一种是 32位元的有向整数,另一种是 32位元的浮点数
本文用前者作为简单介绍,配合不同游戏,
很多时需要改变查找形态,
或是正负数反转
具体做法:
首先,为了方便判定现在速度变量是正数还是负数,
我必须要把游戏添加冻结暂停的功能。
新版本的 EdizonSE 已提供了,可以很方便的自动加插两个金手指到游戏中,
但我会再修改一下,改变按键,使它更好操作,
这是冻结游戏的代码,所有游戏适用 (只限大气层,SXOS的金手指没有这功能的)
[Freeze Game (L)]
80000040 FF000000 20000000
[Resume Game (R)]
80000080 FF100000 20000000
现在正式开始了,当角色跳起之后下降到半空中时,按L暂停游戏
由于角色正在下降中途,我预计速度的值是在 -10000 和 0 之间,
但我不打算使用 -1,0,1 这些值,因为内存中有太多这样的值,如果略过它可以使搜找时间大大减少。
所以,我使用 [A..B] 范围搜索(输入S32形态)从 -10000 到 -2
得出结果,不会得到太多候选值
进入第二轮插索,先回到游戏中,准备另一个跳跃。
当按下跳跃后,立即冻结游戏
然后退到EdizonSE ,继续用正数范围搜索,这次我用了 2 .. 10000
太好了,竟然只得 1 个侯选结果!
现在开始测试一下这个侯选值是否正确
把游标移到侯选值上面,使它变成浅蓝色,然后按 X 锁定它
然后回到游戏,再尝试跳跃
不错,跟预期一样,角色起飞了。
再一次退到 EdizonSE 按 + 并给这 速度变量 一个名字,就叫它 Moonjump (登月跳跃)
地址便可添加到书签页。 我们可以按 L 来检查它。
现在,再按一下 ZL+A,便能够自动添加新的金手指,
然后,指到这个新金手指上,按 R3(即是按压右摇杆)为其添加一个激活按钮,我使用X,(X为登月跳跃,B为正常跳跃)
也就是说,当玩家按下X,金手指才会激活(锁定内存),放手就可以解除锁定。
最后,按 ZL+L3(即是按住ZL再压下左摇杆),使金手指代码自动写入作弊文件。(这真够方便,连一句代码也不用亲自书写)
这就完成了,可以把文件用FTP抄到电脑打包,然后分享到 91
希望大家学识以后,多多尝试及分享,如果想学习制作金手指,绝对不用找师父!
只有不断做各色各样的金手指,才能知道怎样去做的.
只需要帮别人的金手指升级到最新版本,你就可以学到了。
一切方法,是靠人模索,想像出来的。
假如没有想像力和恒心努力,你有师父也不可能大成。
特别鸣谢
Eiffel2018 原创发布:给初学者寻找 登月跳 Moonjump 金手指教程
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。