CheatMaker 论坛

注册

 

发新话题 回复该主题

浅谈ePSXe金手指码 [复制链接]

1#
ePSXe目前的版本是支持直接的txt格式的金手指
这个是非常方便的
修改项目的代码格式是:
  1. #金钱最大
  2. 8003EA74 E0FF
  3. 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】
但是这个键值判断实际测试时并没有起效,所以这里还需要更多一些资料来参考
订阅号.gif (, 下载次数:0)

(2018/8/16 22:29:42 上传)

订阅号.gif

最后编辑银河漫步 最后编辑于 2018-08-16 22:29:42
本主题由 超级版主 银河漫步 于 2014/8/11 7:20:13 执行 提升/下沉主题 操作
分享 转发
TOP
2#

现在缺的就是这种技术资料,好文收藏以示支持。
TOP
3#

教學好文支持
另外希望能有些各種模擬器基地址、特徵碼的查找教學
TOP
4#

一般模拟游戏的金手指都有这种类似的功能.但格式不统一.繁杂呀...
希望CheatMaker帶給你樂趣
 
TOP
5#

一般模拟游戏的金手指都有这种类似的功能.但格式不统一.繁杂呀...
天枫十一郎 发表于 1/30/2014 10:19:27 PM

金手指码的条件码cm还不能支持
其实也就是缺一个时钟周期的东西

比如
{
Call.ReadData(checkbox1);
If checkbox1.checked == true
checkbox2.checked = true;
Call.SaveData(checkbox2);
EndIf
}

这种脚本其实可以完成金手指中的条件码功能
但是因为无法定义脚本的周期性调用
比如500ms调用一次
所以cm一直无法兼容这种条件码的金手指
最后编辑银河漫步 最后编辑于 2014-01-31 00:04:15
TOP
6#

其实早在很早做那个cht转cmf工具时就有想法把它做成各种类型的模拟游戏码转换工具.
但一直没能去实现.要做也不会使用脚本.应该是原生支持.大后期再看吧...
希望CheatMaker帶給你樂趣
 
TOP
7#

看见PS的金手指码了  呵呵
NDS的金手指码可以指点一二么?
其他模拟器的呢?
TOP
8#

看见PS的金手指码了  呵呵
NDS的金手指码可以指点一二么?
其他模拟器的呢?
arrowm 发表于 7/1/2014 10:38:27 PM
http://gamehacking.org/faqs/hackv500c.html#playstation_code_types
TOP
发新话题 回复该主题