CheatMaker 论坛

注册

 

发新话题 回复该主题

PPSSPP基址查找教程CE版+指针疑问求解! [复制链接]

1#
关注PPSSPP模拟器时间稍长一点的玩家都知道,此模拟器的更新速度非常快,一日数更是常有的事。这样做的好处是老版中存在的问题可能会很快修复,但坏处则是修复了老问题却带了新问题,上一个版本运行正常的游戏到了下一个版本可能就会出问题。因此,想要模拟更多的游戏,各个版本的模拟器都需要准备一份。这样一来,喜欢修改的就麻烦了。虽然网上能找到几个银河漫步大大公布的正式版基址,由于数量太少,远不能匹配日新月异的其它版本模拟器。而相关搜索教程就更别提了。

  还好,在switch0523网友所发的基址查找求助帖里,经Blader网友的指点,本人终于在自家电脑上成功找到其它版本模拟器的基址,这里特对Blader网友表示感谢。而原帖里所使用的修改工具MECC不太为人所知,为了方便更多人加入到研究修改PPSSPP的队伍中来,特地做了个CE移植版,希望大家能多多支持。

                      教程篇

  教程开始前要说明一下,载入不同的游戏PPSSPP查看内存功能所显示的内容也会不一样,需要区别对待。以下会分别以《怪物猎人2G》与《重生传说》做例子来讲解如何搜索基址,所使用的PPSSPP版本为:0.9.5-357-gddf5b69。

  先载入游戏,按Ctrl+M键打开内存查看窗口(图01),按原帖所讲从08804004开始用“字节数组”方式搜索图中红框选中的8个字节(图02),会得到两个地址,此时打开计算器,先选中科学模式下的16进制,再用下面那一个较大的地址按原帖教程所讲,依次减去4、4000、8800000得到最终要搜索的数值4C00000。最后回到CE,用“精确数值+4字节”并钩选Hex直接用16进制方式搜索4C00000就能得到基址010912C8了(图03)。

01

  

02



03




  接下来用《重生传说》再搜索一次,为的是让大家能像原帖讲的那样举一反三,灵活处理。同样先载入游戏并打开内存查看窗口,发现从08804000开始是一大段的0(图04),那么该如何搜索呢?经本人尝试,最好是从“头部”也就是020、030开始的地址搜索,这里选择从08804020开始搜索8个字节,同样得到了两个地址(图05)。接下来就简单了,这次用下面较大的地址依次减去20、4000、8800000,同样得到最终要搜索的数值4C00000,那么结果显而易见了,由于地址相同就不重复贴图了。

04



05



                      疑问篇

  教程到此结束,本人却产生更多疑惑。在CM中添加正确的相关信息后,可以很方便指定搜索范围以过滤掉不必要的地址。由于PPSSPP是动态运行的,在得知了基址后,如何在CE上实现CM这样,指定只属于PPSSPP 0-1800000的搜索范围,此其一;

  第二,有过其它机种模拟器Hack或Debug经验的人应该知道,参考金手指码可以很容易得到偏移地址,也能很方便地转移到CE或添加了基址的EC与CM上使用。以SFC金手指为例:7E1234表示偏移为01234(7F1234则表示11234),在CE中用基址加1234的偏移便可得到指向该金手指所控制地址的指针。而在添加了基址的EC或CM中,则可直接在内存窗口中输入1234的偏移地址从而转到对应的内存地址。

  这里再以《怪物猎人2G》举例:通过CE搜索金钱得到的动态地址为XXXFF090(不管怎么搜索只有前三位不固定),而对应的金手指码为211FF090,后面5位与CE动态地址后5位是相同的,不知这与查找偏移之间有没有什么关联呢?那么,问题来了,像这种通过多次计算得到的基址,该如何参考金手指码从而在CE中正确地添加偏移得到稳定的指针呢?

  第三,其实解决了上面两个问题后,应该可以实现大部份金手指码的功能,但PSP的金手指码中有一种很复杂的指针码,也是需要通过基址+偏移来定位的(例如战神系列的HP地址),像这种本身就包含指针的地址,CE或CM又该如何解决呢?

  PPSSPP发布已经一年多了,至今还没有一款CE或CM制作的动态修改器(如果有请指正),我想应该与这些问题都没有解决有关吧,希望这篇教程能吸引更多的人加入讨论,以便早日打破这种怪圈。

    已有1评分我要评分查看所有评分

    分享 转发
    TOP
    2#

    to switch0523:

    简单来说,PSP实机上使用的金手指码有直写码、压缩码、条件码、键位码、逻辑运算码等多种格式,以《怪物猎人2G》金钱最大为例:_L 0x211FF090 0x0001046A = 0x2aaaaaaa 0xbbbbbbbb。其中2表示代码格式的定义,aaaaaaa就是地址,bbbbbbbb表示要写入的数值。再细分下来2表示32bit直写,0表示8bit直写,1表示16bit直写。另外,8表示压缩码,6表示指针码,D表示键位码等。

    关于PSP金手指码格式的详细说明建议访问“PSP電玩金手指查找研究專欄”(打不开请挂代理),地址如下:
    http://www.wretch.cc/blog/a331099262

    不过,本以为上面网站所介绍的金手指码格式应该是比较完整的了,哪知细看之下发现你所提出的E开头的码在网站中找不到相关说明,也正是因为像这类详细说明金手指码格式的资料太少了,所以特别希望有高手能将其补全。从Blader的回复来看,似乎对这方面有所了解,可能的话,也希望你能在参考上面的网站之后,对其中没说到的地方加以补充吧。


    to Blader:


    MECC这么强大的修改工具软件在大陆这边一直没有得到很好的推广,与其语言有很大关系。本人一直在期待何时有高手能汉化一下这么好的软件,以便让此软件更快地普及开来。关于你所说的研究都是基于MECC的,没关系,作为MECC的支持者,反而很希望你能将此软件研究的越透彻越好,再说相关技术原理基本上是相通的,如果以后有了更好地研究成果,本人愿意像这次一样,将其转化成其它工具支持的版本以方便推广。


    to 银河漫步:


    本人电脑上的CE版本从5.6.1一直到6.3都有安装,且默认都是钩选了图中所示的搜索设置。正是因为以前按CM电子书中所讲,用那种“查找什么改写了当前地址”的方式怎么也无法找到基址,所以苦恼至今,直到昨天遇见Blader所讲的方法才算了却心愿。但是,正如本人主帖所说,查到基址只是第一步,如何将基址应用到实际中去才是接下来主要研究的方向。像机战A那样例子,希望你有空闲时间了能多提供一点思路或说明吧。如果可能的話,最好以switch0523曾经询问过的,至今没有得到答案的《讨鬼传》每关体力地址不同,需要重新搜索为实例(地址:http://forum.cheatmaker.org/showtopic-773.aspx,以便咱们可以举一反三,从而应用到更多类似的游戏中去。


    to all:


    本人在搜索各种有关PSP金手指码的资料时,了解到PSP实机上各种金手指工具的强大,而且这种强大让本人这种没有接触过实机的人甚至无法理解。比如之前讲的SFC金手指主要是包含了偏移地址,直写码将某个地址写入最大数值等等,但《怪物猎人》系列的显血码就让人弄不明白了,同样只是在不同的地址上写入数据,是怎么构造出这么强大的功能的?这已经远超其它机种上金手指所能实现的功能了吧。这一切的一切本人都非常想将其彻底研究清楚,将来好转化到CE或CM这样的修改工具中去。无奈水平实现有限,心有余而力不足,要不是Blader的指点,本人至今还在查找基址那儿卡着呢。俗话说,人多力量大,现在本人唯有冀希望于更多的、喜欢研究修改的朋友加入进来,量变引起质变,早日在电脑上用CE或CM等工具实现金手指的全部功能。
    最后编辑zsyf 最后编辑于 2013-11-26 13:47:05
    TOP
    发新话题 回复该主题