PS2金手指含义
金手指代码均为16进制表示,一般前段为地址,后段为数值,当然也有例外,比如4和E开头的。
代码分复号化和暗号化两种,复号化即正常的代码,前面用0~E来区别类别,RAW码就是复号化代码。暗号化就是经过加密处理过的代码,比如AR2码CB码都是加过密的,模拟器只能识别复号化的代码,所以需要转换。
了解了金手指的写法含义,如果你有一定修改游戏的能力,就可以自己增加一些代码,否则你可以直接看后面将金手指写成pnach文件的方法。
0开头:
0aaaaaaa 000000dd
aaaaaaa:地址
dd:数值(8-bit)
1开头:
1aaaaaaa 0000dddd
aaaaaaa:地址
dddd:数值(16-bit)
2开头:
2aaaaaaa dddddddd
aaaaaaa:地址
dddddddd:数值(32-bit)
4开头:由两行代码组成
4aaaaaaa xxxxyyyy
dddddddd 00000000
aaaaaaa:地址:
xxxx:数值:重复次数
yyyy:数值:跳跃次数
dddddddd:数值
00000000:跳跃距离
意思是从地址aaaaaaa开始写入数值dddddddd,再往后每跳过yyyy个00000000(4字节)的距离,写入一次数值dddddddd,并连同第一次在内,
重复xxxx次。
比如:
406924B8 00280014
FFFFFFFF 00000000
意思是从06924B8开始写入数值FFFFFFFF,再往后每跳过20(14h)个00000000(4字节)(20*4=80个字节)的距离,写入一次数值FFFFFFFF,并连
同第一次在内,重复40(28h)次。
注意yyyy的跳跃是从初始的地址开始跳跃,所以当yyyy=1写入数值FFFFFFFF的距离和跳跃的距离的相等的,所以这个时候相当于不跳跃,而是连着重复
比如
4aaaaa00 00040001
FFFFFFFF 00000000
则表示从地址aaaaa00开始,写入FFFFFFFF后跳到aaaaa04写入FFFFFFFF再跳到aaaaa08写入FFFFFFFF 再跳到aaaaa0C写入FFFFFFFF。
这样实际就相当于从aaaaa00开始连续写入FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF。
也就是说代码
4aaaaa00 00040001
FFFFFFFF 00000000
和
2aaaaa00 FFFFFFFF
2aaaaa04 FFFFFFFF
2aaaaa08 FFFFFFFF
2aaaaa0C FFFFFFFF
的实际效果是相等的,只不过4开头的码用在连续写入相等值的时候显然更方便一些。
以上所有dddddddd数值都是从右往左的,也就是说如果你用内存查看器看到的数值是
1A2B3C4D
那么金手指的写法则是
4D3C2B1A
========
手柄组合键开关金手指写法:
D开头码:开关下一行代码执行,格式:
Daaaaaaa 0000dddd
代码1
代码2
aaaaaaa:地址
dddd :地址状态
当地址aaaaaaa的状态码dddd不等时
代码1则会被跳过,相当于关
代码2正常执行
当地址aaaaaaa的状态码dddd相等时
代码1则会被执行,相当于开
代码2正常执行
E开头码:开关多行代码执行,格式:
E0nndddd 0aaaaaaa
aaaaaaa:地址
dddd :地址状态
nn :跳过的行数,也就是被开关的代码行数
E003dddd 0aaaaaaa
代码1
代码2
代码3
代码4
则是代码1-3将会被开关控制,第4行开始正常执行。
aaaaaaa地址每个游戏都各不相同,如果自己没有能力查找则使用已有代码的。dddd的状态有两种子,一种正形式,一种负形式。
按键用二进制表示:
正形式:ON = 1,OFF = 0
正形式顺序:
ON OFF
←1 0
↓1 0
↑1 0
STAR T 1 0
R3 1 0
L3 1 0
SELECT 1 0
□ 1 0
× 1 0
〇1 0
△ 1 0
R1 1 0
L1 1 0
R2 1 0
L2 1 0
同时按下SELECT+×,其值则为0140h。
0000 0001 0100 0000 二进制
0 1 4 0 16进制
负形式:ON = 0,OFF = 1
负形式顺序:
ON OFF
□ 0 1
× 0 1
〇0 1
△ 0 1
R1 0 1
L1 0 1
R2 0 1
L2 0 1
←0 1
↓0 1
→0 1
↑0 1
STAR T 0 1
L3 0 1
SELECT 0 1
同时按下SELECT+×,其值则为BFFEh。
1011 1111 1111 1110 二进制
B F F E 16进制
模拟器好像只支持负形式,不同游戏的判定地址不同,但同一游戏的判定地址是相同的,即使是不同的按键组合。
比如
D08B0882 0000F5FF
20302D9C 24020005
D08B0882 0000F AFF
20302D9C 0C0CF908
就是第1行按键判定是否同时按下R1+R2,如果按下则执行第2行代码,如果没有按下则跳过第2行,转到第3行
而第3行又是判定是否同时按下L1+L2,如果是则执行第4行,如果不是则跳过第4行,执行后面的代码。
附:
在线AR2码和RAW码转换工具:(暗号化:RAW转AR2,复号化:AR2转RAW)
https://www.doczj.com/doc/8d9827866.html,r.jp/game/ps2-3/par2enc/
https://www.doczj.com/doc/8d9827866.html,r.jp/game/ps2-3/enc4.php
以及手柄组合键代码工具:
https://www.doczj.com/doc/8d9827866.html,r.jp/game/ps2-3/pad.php
PCSX2模拟器补丁pnach文件的写法:
用模拟器打开游戏后,按ESC暂停,菜单[其它]里有[补丁浏览]和[补丁寻找]两项,如果你有能力自己寻找补丁,就用补丁寻找,如果是已有金手指代码,则直接进入补丁浏览,不要在这里输入金手指,直接点[pnach Writer]:
第一行CRC由模拟器自动识别
第二、三行是游戏名和备注,自己随便填。
第四行zerogs为zerogs视频插件补丁代码,如果你用的是GSDX,那这行可以无视
fastmemory 可以提高金手指运行的速度,但可能会产生BUG,所以可以不管
path3hack和vnnamode也都可以不管,默认就行了
最后一个Round Mode是浮点方式,和模拟器设置一致就行了,
前面一个值是EE处理器,后面是IOP处理器。
NEAR = Nearest
DOWN = Negative
UP = Positive
CHOP = Chop / Zero
默认EE为NEAR,IOP为CHOP
然后点SAVE
模拟器PATCH目录下会生成CRC代码.pnach文件,用记事本打开
可以看到
里面已有
comment=
gametitle=
两行,然后在下面添加金手指码
比如高达无双2 角色全开的代码为
406924BC 00280014
FFFFFFFF 00000000
就写成
//角色全开
patch=1,EE,406924BC,extended,00280014
patch=1,EE,FFFFFFFF,extended,00000000
这样的形式
//后面的为备注说明,后面到回车前的内容都是不执行的
patch=1为有效,patch=0为无效
所以如果暂时要禁用某代码,则写成
//patch=1,EE,406924BC,extended,00280014
//patch=1,EE,FFFFFFFF,extended,00000000
或者
patch=0,EE,406924BC,extended,00280014
patch=0,EE,FFFFFFFF,extended,00000000
则这两行代码都不会被执行
EE为处理器,有EE和IOP两种,不过一般都是EE
金手指代码中间的,extended,为类型,类型分Byte、Short、Word、Double、Extended五种,用模拟器输入金手指都会变成Word,但word只支持0、1、2开头的金手指码,且需要把开头的0、1、2都改成0才能生效。
而extended则是从0~E都支持,且不需要对代码作任何修改。
附个高达无双2日版的补丁文件,对照上面说明一看就懂了。
a6f06ed5.pnach
comment=KOEI
gametitle=Gundam Musou 2
//过关评价无伤
patch=1,EE,206D2F88,extended,00000000 //SP值不减
patch=1,EE,20243EA4,extended,10000003 //推进器值不减
patch=1,EE,20243DD8,extended,00000000 //道具时效不减
patch=1,EE,202746A8,extended,00000000 patch=1,EE,2027475C,extended,00000000 patch=1,EE,20274810,extended,00000000 patch=1,EE,20274680,extended,10000005 patch=1,EE,20274734,extended,10000005 patch=1,EE,202747E8,extended,10000005
//任务全开
patch=1,EE,201DA16C,extended,24020001 patch=1,EE,201DA174,extended,03E00008 patch=1,EE,201F4EEC,extended,10000591 patch=1,EE,201F4EF0,extended,0040C821 patch=1,EE,201F6540,extended,03201021 patch=1,EE,201F6548,extended,03E00008 patch=1,EE,201F4E78,extended,24190001 //执照全开
patch=1,EE,406924B8,extended,00280014 patch=1,EE,FFFFFFFF,extended,00000000 //角色全开
patch=1,EE,406924BC,extended,00280014 patch=1,EE,FFFFFFFF,extended,00000000 //机体全开
patch=1,EE,406964E4,extended,00420024 patch=1,EE,00010000,extended,00000000 //技能全开
patch=1,EE,206D2FC8,extended,FFFFFFFF patch=1,EE,006D2FCC,extended,000000FF
//战斗必须(1P:2A220001,2P:2A220002) patch=1,EE,200FF500,extended,2A220001 patch=1,EE,200FF508,extended,10400011 patch=1,EE,200FF550,extended,0809868A patch=1,EE,200FF554,extended,30020001 patch=1,EE,20261A20,extended,0803FD40 //装甲值不减(要必须)
patch=1,EE,200FF510,extended,8E020160
patch=1,EE,200FF514,extended,AE020164
//速度上升(要必须)
patch=1,EE,200FF518,extended,3C024000
patch=1,EE,200FF51C,extended,AE020820
//近战攻击范围扩大(要必须)
patch=1,EE,200FF520,extended,24027FFF
patch=1,EE,200FF524,extended,A602018E
//攻击防御值最大(要必须)
patch=1,EE,200FF528,extended,240202BC
patch=1,EE,200FF52C,extended,A6020176
patch=1,EE,200FF530,extended,A6020178
patch=1,EE,200FF534,extended,A602017C
//全技能特效发动(要必须)
patch=1,EE,200FF540,extended,3C020010
patch=1,EE,200FF544,extended,DC42F4F8
patch=1,EE,200FF548,extended,FE0208D0
patch=1,EE,200FF4F8,extended,FFFFFFFF
patch=1,EE,200FF4FC,extended,0000FFFF
//单人合体SP攻击(L1 + SELECT = OFF / L1 + STAR T = ON) patch=1,EE,D0469582,extended,0000FBFE
patch=1,EE,20245838,extended,1040000D
patch=1,EE,D0469582,extended,0000FBF7
patch=1,EE,20245838,extended,10000001
//远程武器乱射(L1 + L2 = OFF / L1 + R2 = ON)
patch=1,EE,E003FAFF,extended,00469582
patch=1,EE,20253420,extended,4500005F
patch=1,EE,2025343C,extended,10200058
patch=1,EE,20253450,extended,45000053
patch=1,EE,E003F9FF,extended,00469582
patch=1,EE,20253420,extended,1001005F
patch=1,EE,2025343C,extended,10000001
patch=1,EE,20253450,extended,10000001
//获得经验值时增至满级
patch=1,EE,202A2224,extended,00000000
//研究所研究后技术满级
patch=1,EE,202A4CF4,extended,3C020004
patch=1,EE,202A4CF8,extended,3442CE78
//友好度变化时增至亲密
patch=1,EE,202AB004,extended,00000000
patch=1,EE,202AB258,extended,00000000
patch=1,EE,202AB4B4,extended,00000000
//掉落部件满值
patch=1,EE,202A7280,extended,00000000 patch=1,EE,202A73AC,extended,00000000 patch=1,EE,202A70C8,extended,00000000 patch=1,EE,202A712C,extended,00000000 patch=1,EE,202A7000,extended,00000000 //掉落部件4级
patch=1,EE,202A8170,extended,24070003 patch=1,EE,202A8194,extended,24070003 patch=1,EE,201F90D4,extended,24070003 //掉落全身部件
patch=1,EE,200FF300,extended,A26307CD patch=1,EE,200FF304,extended,26100001 patch=1,EE,200FF308,extended,2A010005 patch=1,EE,200FF30C,extended,10200004 patch=1,EE,200FF314,extended,080AA066 patch=1,EE,200FF318,extended,24070003 patch=1,EE,200FF320,extended,080AA079 patch=1,EE,202A80B8,extended,24100000 patch=1,EE,202A80C0,extended,16030003 patch=1,EE,202A80D4,extended,906307CD patch=1,EE,202A80D8,extended,2861002E patch=1,EE,202A81DC,extended,0803FCC0