ePSXe目前的版本是支持直接的txt格式的金手指
这个是非常方便的
修改项目的代码格式是:
- #金钱最大
- 8003EA74 E0FF
- 8003EA76 05F5
复制代码然后金手指文件命名与游戏【编号】相同即可
那么怎么知道游戏的【编号】呢?
一般用以下两种方式
1.直接用光盘工具打开镜像文件,如下图可以在光盘根目录找到一个【SXXX.XXX.XX】的文件,这个就是游戏编号
2.用ePSXe载入游戏,然后按F1即时存档,即可在sstates生成存档文件,这个文件名同上【SXXX.XXX.XX】,只是在后面会多出一个.00X后缀
按照游戏编号命名后的txt文件放到模拟器的cheats目录,之后载入游戏后按ESC暂停游戏,即可在模拟器的这个选项中开启修改功能
那么ePSXe目前支持哪些代码格式呢?
一.直接写入码
单字节:
30XXXXXX 00YY
双字节:
80XXXXXX YYYY
这个【XXXXXX】是地址,【YYYY】是要写入的数值,地址只有6位的原因是,PS游戏机的Ram大小只有200000
这种代码其他所有代码应用的基础
二.运算写入码
单字节:
20XXXXXX 00YY
21XXXXXX 00YY
这里表示把地址【XXXXXX】的数值增加或者减少【YY】,【20】表示增加,【21】表示减少
双字节:
10XXXXXX 00YY
11XXXXXX 00YY
作用同上,只是操作是从【XXXXXX】开始的两个字节的数据
运算写入码用得不是很多,一般情况都与内存判断码结合起来使用
三.复制写入码
C2XXXXXX YYYY
80ZZZZZZ 0000
这里【XXXXXX】是地址,【YYYY】是字节数,【ZZZZZZ】是目标地址,表示从【XXXXXX】复制【YYYY】个字节到【ZZZZZZ】
例如把最大HP的数值复制给当前HP的地址,以动态锁定HP始终为最大HP状态
四.循环写入码
5000XXYY 00ZZ
TTTTTTTT VVVV
【XX】表示写入多少次,【YY】表示每次写入后偏移多少地址再写入,【ZZ】每次写入后下次写入的数值的递增量
例如:
50000801 0001
30097982 0080
表示从地址【97982】开始写入数值【80】,然后写入8次,每次写入后地址+1,且数值也+1
这个执行后,可以看一下地址【97982】,对应这个地址开始的内存数据变成了:80 81 82 83 84 85 86 87
五.内存判断码
单字节:
E0XXXXXX 00YY
E1XXXXXX 00YY
E2XXXXXX 00YY
E3XXXXXX 00YY
表示判断地址【XXXXXX】的数值与【YY】的数值,【E】后面跟随的数值表示逻辑关系
【0】表示【=】等于
【1】表示【<>】不等于
【2】表示【<】小于
【3】表示【>】大于
双字节:
D0XXXXXX YYYY
D1XXXXXX YYYY
D2XXXXXX YYYY
D3XXXXXX YYYY
作用和逻辑判断方式同上,只是做双字节的校验判断
内存判断码的应用很广泛,特别是对于反汇编代码的修改,PS存在很多临时存取汇编程序的Ram,这些Ram代码的修改经常要用到内存判断码
六.按键判断码
(这个PEC金手指后续版本有支持,但ePSXe是否支持不确定,反正我没用出来)
D4000000 YYYY
D5000000 YYYY
D6000000 YYYY
表示当按键值为【YYYY】时,执行相关代码
【4】表示按住不放执行
【5】表示按一次执行一次
【6】表示按住松开后执行
这里有关【YYYY】缺少相关说明,故我一般还是采用内存判断码
我不确认这里取YYYY的值是内存数值还是端口数据,但是一般情况认为游戏中按键地址的映射如下
第一字节:
10000000 □
01000000 ×
00100000 ○
00010000 △
00001000 R1
00000100 L1
00000010 R2
00000001 L2
第二字节:
10000000 ←
01000000 ↓
00100000 →
00010000 ↑
00001000 Start
00000100
00000010
00000001 Select
例如,判断当按下Start+Select的话,则对应的数值为【0900】
但是这个键值判断实际测试时并没有起效,所以这里还需要更多一些资料来参考