谁能帮我解释一下psp中FC金手指的一些问题,我自己的理解加上平常遇到的问题。
在FC的CODE夹里面放的是.txt的金手指代码,打开代码一般都会有_S,_G,这俩一个是游戏标号一个是游戏名称(我自己理解,不对的帮我纠正一下)。_CO类似于一个标识,...
在FC的CODE夹里面放的是.txt的金手指代码,打开代码一般都会有_S,_G,这俩一个是游戏标号一个是游戏名称(我自己理解,不对的帮我纠正一下)。_CO类似于一个标识,在游戏中代表着接下来的一段代码。我要问了,_L是个什么意思,它做的是什么样的操作?例如:_L 0x203F8DC8 0x003000A6,这意味了什么?我有点记不清了,但我记得0x20..超过了FC16进制自带内存搜索值的上限。还有就是我偶然间发现还有_C1和_N1这俩又是个什么?和_CO又有什么区别?不过我知道,加上_N1之后,这段代码在游戏开始的时候被强制执行了。请高人指点!
如果有个达人上面的问题都解决了,深深感谢的同时我希望再加上个80分求教另一问题,就是如果给我个游戏,我需要通过什么办法寻找这些关键的内存值?因为我记得曾经在《寄生前夜3》中我试图去锁定搜索到子弹的内存地址,锁定住后FC变得很不稳定,有时候根本呼叫不出来,有时候锁定还失效。但是用代码去锁定的话却非常的稳定,这又是个什么原因呢?我不确定了,但是我记得我们锁定子弹数目的内存地址还不是一样的,这又是为什么?求解!
这里还能写几个字,我继续说了:例如
_L 0x2016D3D4 0xC48E0370
_L 0x2016D3E0 0xE48E036C
这是个血槽的地址,D4和E0不是挨着的,能说明这两个值是独立的吧,那为什么在写代码的时候后面的赋值不一样?其实这个我并不是太在意,下面
_L 0x017294E0 0x00000063
_L 0x0172A0D4 0x00000000
这个代码的作用是把子弹提高到99,上面很直观,下面那个0x0又有什么意义呢?
不过这些问题应该需要你对该游戏有些了解或者研究才能作答,所以不强求要答案了,而且我只是一直没时间,我想尝试把一些代码删去或者更改数值看看会出现什么样的效果,比如说这条我就试图把下面的0x0去掉。还有就是哥们我的Q是4317014,如果你不介意加个好友一起探讨吧 展开
如果有个达人上面的问题都解决了,深深感谢的同时我希望再加上个80分求教另一问题,就是如果给我个游戏,我需要通过什么办法寻找这些关键的内存值?因为我记得曾经在《寄生前夜3》中我试图去锁定搜索到子弹的内存地址,锁定住后FC变得很不稳定,有时候根本呼叫不出来,有时候锁定还失效。但是用代码去锁定的话却非常的稳定,这又是个什么原因呢?我不确定了,但是我记得我们锁定子弹数目的内存地址还不是一样的,这又是为什么?求解!
这里还能写几个字,我继续说了:例如
_L 0x2016D3D4 0xC48E0370
_L 0x2016D3E0 0xE48E036C
这是个血槽的地址,D4和E0不是挨着的,能说明这两个值是独立的吧,那为什么在写代码的时候后面的赋值不一样?其实这个我并不是太在意,下面
_L 0x017294E0 0x00000063
_L 0x0172A0D4 0x00000000
这个代码的作用是把子弹提高到99,上面很直观,下面那个0x0又有什么意义呢?
不过这些问题应该需要你对该游戏有些了解或者研究才能作答,所以不强求要答案了,而且我只是一直没时间,我想尝试把一些代码删去或者更改数值看看会出现什么样的效果,比如说这条我就试图把下面的0x0去掉。还有就是哥们我的Q是4317014,如果你不介意加个好友一起探讨吧 展开
1个回答
展开全部
_S是游戏编号,游戏需要注册成功才允许被发布,你当做日本游戏发布的许可证编码就行了。
_G是游戏名称,不解释
_C0(这个是数字0,不是字母O)我认为是指condition 0,指当前状态为初始状态(未启用状态)
_C1是启用状态(默认启用)。
_N1还有一个对应的_N0我也没搞明白具体是什么意思,我理解是表示一种逻辑关系,_N1表示在下列数据中某一项成立时该数据返回1(就是以下若干项地址中某一项地址不为空,则该数据启用);_N0表示在下列数据中所有数据皆成立时返回数据1(就是以下若干项地址全部不为空时,该数据启用)********当年同或异或什么的没学好,这里搞糊涂了.....***************
_L是load,读取该地址的意思,你举的例子_L 0x203F8DC8 0x003000A6就是指读取203F8DC8这个内存地址,赋予值为3000A6的十六进制数值,前面的那个数值是指内存地址,不是真正的搜索数值,自然超过搜索上限了。
关于问题补充:搜索最简单的方法还是常用的内存数据变换读取,根据同一地址数据的固定变换来查找该地址,也就是一般我们最常用的搜索方式。我没试过修改《寄生前夜》,我猜测你锁定不成功有这么几种可能:1.显示数值和实际数值不是一个内存空间,就是说有两个或更多个内存地址,一个存放真实的子弹数,一个存放屏幕显示出来的子弹数,你只改一个肯定不成功了。2.你搜索的数据不正确,比如你有100发子弹,但这个100只是屏幕显示出来的100,游戏真实提取的可能是枪中现有20颗子弹,背包中还有80颗子弹,类似这样的定义。3.数值锁定错误,把某项不该锁定的数据锁定了,导致数据溢出。
_G是游戏名称,不解释
_C0(这个是数字0,不是字母O)我认为是指condition 0,指当前状态为初始状态(未启用状态)
_C1是启用状态(默认启用)。
_N1还有一个对应的_N0我也没搞明白具体是什么意思,我理解是表示一种逻辑关系,_N1表示在下列数据中某一项成立时该数据返回1(就是以下若干项地址中某一项地址不为空,则该数据启用);_N0表示在下列数据中所有数据皆成立时返回数据1(就是以下若干项地址全部不为空时,该数据启用)********当年同或异或什么的没学好,这里搞糊涂了.....***************
_L是load,读取该地址的意思,你举的例子_L 0x203F8DC8 0x003000A6就是指读取203F8DC8这个内存地址,赋予值为3000A6的十六进制数值,前面的那个数值是指内存地址,不是真正的搜索数值,自然超过搜索上限了。
关于问题补充:搜索最简单的方法还是常用的内存数据变换读取,根据同一地址数据的固定变换来查找该地址,也就是一般我们最常用的搜索方式。我没试过修改《寄生前夜》,我猜测你锁定不成功有这么几种可能:1.显示数值和实际数值不是一个内存空间,就是说有两个或更多个内存地址,一个存放真实的子弹数,一个存放屏幕显示出来的子弹数,你只改一个肯定不成功了。2.你搜索的数据不正确,比如你有100发子弹,但这个100只是屏幕显示出来的100,游戏真实提取的可能是枪中现有20颗子弹,背包中还有80颗子弹,类似这样的定义。3.数值锁定错误,把某项不该锁定的数据锁定了,导致数据溢出。
追问
太感谢你了哥们,分先给你加上了,只想再确认几个问题,用FC内存跳转的上限我是0x17FFFFF,那这个0x203F8DC8怎么回事?还有我玩《寄3》时子弹锁定是做到了,只是FC变的很不稳定而已,我锁住了一个数值会不会是影响到别的地方的判断才出现的异常?_L 0x2017069C 0x00028821这是实际代码,它的内存已经超过了我内存跳转的上限了,我找到的地址也不是这个,这又是什么原因呢?已经不能再打更多字了,上面问题补充里我更新了,你看下
追答
sorry,你后续的问题我也真的解决不了,不过我有几分猜测姑妄说之,仅作参考。我认为在实际内存地址分配中存在指针的调用,FC的搜索上限低于实际内存地址范围,所以我们看到的金手指列表里有超出范围了的,而通过搜索,在可用范围内利用内存指针的相对锁定可能也会起到修改的作用,但这个锁定是暂时的,重启游戏或切换场景可能就会有变化,从而导致FC不稳定。
上面血条锁定那一项,两列地址可能表示两个数据,比如说第一个指实际的生命值,是一个具体的数字,而第二个指的是“血条”显示出来的长度,其数值范围和第一项不一样。
0x00的问题应该是为了返回一个锁定的空值,使某项对应数据避免浮动溢出,或者是为了减少某些不必要的数值浮动,例如取消子弹打空后上子弹的动作,这个是我猜的,你可以试试看。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询