关于ps2的金手指我们网上搜索能搜到很多种游戏的,但是我们个人可能玩很多冷门游戏,而这种冷门游戏一般网上搜不到金手指,于是这时候就需要自己做了。而关于ps2游戏的金手指制作教程网上寥寥无几,和修改镜像一样快到失传的程度了。。因此本人今天打算分享自己知道的所有ps2游戏金手指类型和制作方法。
我们需要以下工具:熟悉的ce修改器(主要用来找地址),pcsx2官方模拟器(看过我上一篇静态修改教程的人都知道他有一个强大的debugger功能,我们这里主要用他的debugger来做调试类型的金手指)
然后接下来就是我们的教程了
教程
这里本人依据自己的认知给金手指分为三类:地址类,判断类,调试类
首先由于我们大部分都没有主机都是电脑玩家,因此我打算就说一下关于做pcsx2金手指的方法。
指令含义
在这之前我们都得先知道一个pcsx2模拟器金手指的标准格式
patch=1,EE,xxxxxxxx,extended,xxxxxxxx
这指令是啥意思呢?我们逐一分析,patch=1的含义就是开启的意思,有了这个就相当于告诉模拟器我这里启用了一条金手指代码,如果patch=0的含义自然就是关闭的意思,也可以在金手指最前面+两条//意思就是把这金手指给注释掉。
第一个逗号后面的是处理器类型,一般分为EE处理器和IOP处理器。这里不管他默认EE就行了。
而第二个逗号后面的就是地址,一般地址第一个可以是0,1,2,4,D,E开头,各有不同的意思,这里就搭配extended后面的数值详细说明了。
地址后面的extended为数据类型,分为byte,short,word,double,extended五种。一般都用word(这个只支持0,1,2开头)或者extended(这个0-E开头全支持)类型
举个例子
patch=1,EE,2067DA9C,word,100
patch=1,EE,2067DA9C,extended,100
这两个效果是一样的,都是奥3的1p剧情满血,共同点是后面数值都必须填写16进制
地址和数值详解
首先需要说明的是ps2游戏的地址都只有7位
0,1,2开头
0开头的地址格式一般这样:0xxxxxxx(x代表地址),则数值填写000000xx(这里的x就是1字节的数值)
1开头的地址格式跟上面差不多:1xxxxxxx(x代表地址),则数值填写0000xxxx(这里的x就是2字节的数值)
2开头的地址格式还是跟上面差不多:2xxxxxxx(x代表地址),则数值填写xxxxxxxx(这里的x就是4字节的数值)
那按理来说3开头的就是8字节,4开头的就是16字节了么?可惜不是这种规律,因为这里只讨论模拟器的金手指的制作所以这里只看4开头的情况。。
4开头
4开头的有两行代码,一般都得写两条语句,这里举个例子方便看明白,拿奥3举例
patch=1,EE,403D4BDC,extended,00030001
patch=1,EE,00000002,extended,00000000
比如这个金手指的意思就是重复三次,把ce里找到的地址203D4BDC,203D4BE0,203D4BE4全部改成2
4后面的是地址,03D4BDC熟悉的人应该都知道他是剧情的1p人物,后面的数值分为两部分,前四位代表着重复次数,0003的意思就是重复三次,后面是跳跃的距离,0001也就是每次跳过1h个4byte距离然后写入一次00000002也就是杰克的人物代码,这个金手指就是把剧情三人物全部改成杰克奥特曼。至于第二行最后一个extended后面的00000000数值一般不用修改,个人认知是每次修改后数值增加多少,如果后面改成1的话进入杰克剧情就是杰克(2),艾斯(3),泰罗(4),也就是2p和3p的人物代码都递增1了,改成2的话就是杰克(2),泰罗(4),佐菲(6)。(这应该很好理解吧)
因此上面的金手指还等价于
patch=1,EE,203D4BDC,extended,00000002
patch=1,EE,203D4BE0,extended,00000002
patch=1,EE,203D4BE4,extended,00000002
上面4开头的金手指看起来没啥用,比起下面的就少一条而且还比下面的难理解。。但是如果要修改39条地址呢(比如说人物的跳高距离,CPU技能列表)这时候上面的金手指就明显比下面的方便多了。
D开头
现在继续看D开头的地址,D开头负责判断是否执行下一行代码,一般格式为
patch=1,EE,D067DA9C,extended,00000100
patch=1,EE,2067DA9C,extended,00000500
这个金手指的意思就是判断剧情1p血量的地址的数值是不是256,如果是的话就执行下面1条指令(剧情1p血量变成1280滴血)否则就什么都不执行,这种类型金手指就比较适合做按键判断的,比如看下面
patch=1,EE,D042E848,extended,00000200
patch=1,EE,2067DA9C,extended,00000200
这个金手指的意思就是判断有没有按下L3,(L3的键代码为512也就是十六进制的200)如果按下了1p剧情血量直接变成十六进制的200(十进制的512),其中042E848是1p的按键地址,每个ps2游戏都会有一个专属的按键地址,默认什么都不按的时候是0,每次按一下都会改变数值,不同按键一起按的数值都不一样,比如说R3的键代码为1024也就是十六进制的400,如果L3+R3一起按的话那键代码就是1536也就是十六进制的600,按键无穷乐趣可以自己探索一下。
E开头
E开头的地址和D开头的地址区别是E能进行多行判断,一般的格式为
patch=1,EE,E0030200,extended,0042E848
patch=1,EE,2067DA9C,extended,00000200(剧情1p血量512)
patch=1,EE,2067D678,extended,00000000(剧情1p眩晕0)
patch=1,EE,2067DC04,extended,00007FFF(剧情1p攻击力32767)
这个先看第一行,第一行前面的格式是E0nndddd,其中nn代表这跳过的行数,dddd则代表这地址的数值为多少,后面的0042E848则变成地址了,这一句的意思就是判断玩家1p有没有按下L3,按下后就执行后面3行语句,不按的话直接跳过下面三行语句然后执行第四行(如果有的话)
分类
如同我上面准备事项里说的,我依据个人理解把金手指分为三类,地址类,判断类,调试类。
地址类
这是最简单的一种金手指了,只需要ce找到地址然后就能做金手指了,比如说通过ce找到了1p的ce地址为2067DA9C,然后金手指就这样写
patch=1,EE,2067DA9C,extended,00000100
这就是剧情1p锁定满血的金手指了,需要区分的是ce地址里的2和写金手指里的2的含义是不一样的,我上面含义也说明了,ce里找到的是2067DA9C,实际上游戏里的地址是067DA9C,因为ce是找的模拟器地址,不能和金手指的2混为一谈。
判断类
其实判断类也在上面说了,这里我单独把他归成一类是觉得他判断数值的功能很强大,如果同样判断有没有按下L3,用调试类金手指写的话不可能一个语句就搞定的,他的这个优点是我最喜欢的。
调试类
这个金手指之前在我一篇静态修改教程里也提到的,具体制作方法不说了详情可以看之前的教程,调试类金手指有一个优点,那就是静态修改的时候很方便。毕竟他和静态修改只差有没有写入引导文件的区别了。
实战
这里可以做一个很综合的金手指,我将结合前面三个分类,做的金手指如下
patch=1,EE,E0030200,extended,0042E848(判断)
patch=1,EE,20272AA4,extended,00000000(调试)//无限时间
patch=1,EE,202B3ED4,extended,00000000(调试)//揍死(我上一篇教程的金手指)
patch=1,EE,2067DA9C,extended,00000200(地址)//剧情1p512
patch=1,EE,E0020400,extended,0042E848(判断)
patch=1,EE,20272AA4,extended,AC8F0010(调试)//还原时间代码
patch=1,EE,202B3ED4,extended,ADCF0004(调试)//去掉揍死
这个金手指就很好玩了,按下L3代表暂停时间,然后可以揍死,并且1p血量改成512,然后按下R3就是还原,刚才按下的L3是修改的程序指令,这回按下的R3就把修改的程序指令还原了。
最后,金手指无限乐趣,各位可以综合上述的金手指自行研究。