首先把金手指代码输入到PCSX2模拟器的方法见:
http://tieba.baidu.com/p/1223745237
注意在PCSX2模拟器中使用金手指是不需要主识别必须码的。
另外在PCSX2模拟器中只能使用未经加密的金手指,加密金手指必须先用金手指转换工具解密成一般形式才能被模拟器识别。
怎么来区别金手指码是否加过密,比较常见的RAW/XP这种码就是没有经过加密的,对十六进制数比较熟的话就很容易看出来,比如:
Max Orbs
2078EF44 000F423F
这条金手指码,就是未加密的,代码的前段为地址,后段为数值,对十六进制比较熟悉的一眼就能看出来代码后段的000F423F就是十进制的999999,像这样地址和数值都是实际数值的金手指码就属于未经加密的。而:
Max Orbs
1CEF706C 144F25CC
这条金手指码则是经过加密处理的,这样的金手指码通常是看不出其数值的含义,AR2、CB码等等都属于加密金手指,像这类金手指码只能用转换工具解密后才能在模拟器中运行了。
金手指码的含义,当然是未加密的,通常前半段为地址,后半段为数值。其中数值为正常高低顺序,而不像在内存中高低位顺序要反过来。比如:
Max Orbs
2078EF44 000F423F
其中PS2的地址实际上只有7位数字,也就是在上面这条金手指代码中,078EF44才是地址,而最前面一位的数字2则是金手指类别码,常见类别有以0、1、2、4、D、E开头的。
0开头,表示代码后半段处理数值为1字节
0aaaaaaa 000000dd
其中a为地址,d为数值
比如:
0078EF44 000F423F
其代码实际有效数值只有最低位的3F
1开头,表示代码后半段处理数值为2字节
1aaaaaaa 0000dddd
比如:
1078EF44 000F423F
其代码实际有效数值只有低位的423F
2开头,表示代码后半段处理数值为4字节
2aaaaaaa dddddddd
比如:
2078EF44 000F423F
其代码实际有效数值就是后面000F423F全部有效
4开头,表示重复循环处理数值
4aaaaaaa xxxxyyyy
dddddddd 00000000
其中x为重复次数,y为跳跃距离
比如:
406924B8 00280014
FFFFFFFF 00000000
含义为从06924B8开始写入数值FFFFFFFF,再往后每跳过20(14h)个00000000(4字节)(20*4=80个字节)的距离,写入一次数值FFFFFFFF,并连同第一次在内,重复循环40(28h)次。
D开头,为条件判定码
Daaaaaaa dddddddd
代码一
代码二
表示如果在地址aaaaaaa处,数值=dddddddd,那么就执行代码一,否则就跳过代码一运行下一条代码二。
比如
D078EF44 00000000
2078EF44 000F423F
其含义就是如果地址078EF44这里如果等于0了,那么就写入000F423F,否则就没有变化。
这类金手指也通常用来判定按键来开关金手指代码。
E开头,为条件判定码多条版
E0nndddd 0aaaaaaa
其中n为判定开关后面代码的条数。
比如
E003dddd 0aaaaaaa
其含义为如果地址aaaaaaa处的数值等于dddd,那么运行后面3条代码,否则则跳过后面的3条代码。
话说上面这些金手指代码说明我以前在emu-zone论坛发过教程,还是手柄按键开关代码的方法,可以自己找一下,下面是用CE自己来找代码的方法。
用CE选定PCSX2模拟器进程,其内存地址范围固定在20000000~2FFFFFFF,以前老版的模拟器地址是随机分别的,现在新版都固定在这个地址了。
上面已经说到,PS2的内存地址实际上只有7位,所以就正好放在20000000~2FFFFFFF这一段内存中。
简单的说就是用CE搜到的地址-0x20000000就是其实PS2的内存地址。比如:
用CE找到鬼泣3特别版的红魂数量地址为0x2078EF44,那么实际PS2的地址就是0x078EF44,注意这里的首位2和上面金手指类别码首位2的区别。然后根据上面金手指的规则,就可以自己写金手指一些代码了。
但是这仅限于动态数据类的修改,而修改PS2程序本身用CE就不行了,因为CE反汇编的结果是模拟器把PS2处理器指令翻译成PC处理器指令之后的结果,而并不是PS2本身的指令。所以想要修改PS2的程序指令,就只能用专门的PS2反汇编工具了。这个我试过一个,只能静态分析PS2的可执行程序,不能像CE这样动态分析指令,而且PS2的汇编指令和PC也不一样,完全的看不懂……
http://tieba.baidu.com/p/1223745237
注意在PCSX2模拟器中使用金手指是不需要主识别必须码的。
另外在PCSX2模拟器中只能使用未经加密的金手指,加密金手指必须先用金手指转换工具解密成一般形式才能被模拟器识别。
怎么来区别金手指码是否加过密,比较常见的RAW/XP这种码就是没有经过加密的,对十六进制数比较熟的话就很容易看出来,比如:
Max Orbs
2078EF44 000F423F
这条金手指码,就是未加密的,代码的前段为地址,后段为数值,对十六进制比较熟悉的一眼就能看出来代码后段的000F423F就是十进制的999999,像这样地址和数值都是实际数值的金手指码就属于未经加密的。而:
Max Orbs
1CEF706C 144F25CC
这条金手指码则是经过加密处理的,这样的金手指码通常是看不出其数值的含义,AR2、CB码等等都属于加密金手指,像这类金手指码只能用转换工具解密后才能在模拟器中运行了。
金手指码的含义,当然是未加密的,通常前半段为地址,后半段为数值。其中数值为正常高低顺序,而不像在内存中高低位顺序要反过来。比如:
Max Orbs
2078EF44 000F423F
其中PS2的地址实际上只有7位数字,也就是在上面这条金手指代码中,078EF44才是地址,而最前面一位的数字2则是金手指类别码,常见类别有以0、1、2、4、D、E开头的。
0开头,表示代码后半段处理数值为1字节
0aaaaaaa 000000dd
其中a为地址,d为数值
比如:
0078EF44 000F423F
其代码实际有效数值只有最低位的3F
1开头,表示代码后半段处理数值为2字节
1aaaaaaa 0000dddd
比如:
1078EF44 000F423F
其代码实际有效数值只有低位的423F
2开头,表示代码后半段处理数值为4字节
2aaaaaaa dddddddd
比如:
2078EF44 000F423F
其代码实际有效数值就是后面000F423F全部有效
4开头,表示重复循环处理数值
4aaaaaaa xxxxyyyy
dddddddd 00000000
其中x为重复次数,y为跳跃距离
比如:
406924B8 00280014
FFFFFFFF 00000000
含义为从06924B8开始写入数值FFFFFFFF,再往后每跳过20(14h)个00000000(4字节)(20*4=80个字节)的距离,写入一次数值FFFFFFFF,并连同第一次在内,重复循环40(28h)次。
D开头,为条件判定码
Daaaaaaa dddddddd
代码一
代码二
表示如果在地址aaaaaaa处,数值=dddddddd,那么就执行代码一,否则就跳过代码一运行下一条代码二。
比如
D078EF44 00000000
2078EF44 000F423F
其含义就是如果地址078EF44这里如果等于0了,那么就写入000F423F,否则就没有变化。
这类金手指也通常用来判定按键来开关金手指代码。
E开头,为条件判定码多条版
E0nndddd 0aaaaaaa
其中n为判定开关后面代码的条数。
比如
E003dddd 0aaaaaaa
其含义为如果地址aaaaaaa处的数值等于dddd,那么运行后面3条代码,否则则跳过后面的3条代码。
话说上面这些金手指代码说明我以前在emu-zone论坛发过教程,还是手柄按键开关代码的方法,可以自己找一下,下面是用CE自己来找代码的方法。
用CE选定PCSX2模拟器进程,其内存地址范围固定在20000000~2FFFFFFF,以前老版的模拟器地址是随机分别的,现在新版都固定在这个地址了。
上面已经说到,PS2的内存地址实际上只有7位,所以就正好放在20000000~2FFFFFFF这一段内存中。
简单的说就是用CE搜到的地址-0x20000000就是其实PS2的内存地址。比如:
用CE找到鬼泣3特别版的红魂数量地址为0x2078EF44,那么实际PS2的地址就是0x078EF44,注意这里的首位2和上面金手指类别码首位2的区别。然后根据上面金手指的规则,就可以自己写金手指一些代码了。
但是这仅限于动态数据类的修改,而修改PS2程序本身用CE就不行了,因为CE反汇编的结果是模拟器把PS2处理器指令翻译成PC处理器指令之后的结果,而并不是PS2本身的指令。所以想要修改PS2的程序指令,就只能用专门的PS2反汇编工具了。这个我试过一个,只能静态分析PS2的可执行程序,不能像CE这样动态分析指令,而且PS2的汇编指令和PC也不一样,完全的看不懂……