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#

    回复 1楼zsyf的帖子

    謝謝Z大的詳細CE教程,有空來試試尋找

    另外有個問題提問一下,問題如下:

    以網路上搜尋到的ppsspp金手指為例
    _S ULJM-05093
    _G 頭文字D
    _C0 失敗數0
    _L 0x204950DC 0x00000000
    _C0 速度控制(按上230KM/S按下100KM/S)(作者為:PLUSER)(原代碼為渣FC用,轉換為CMF用)
    _L 0xE0040000 0x104B3ACC
    _L 0xD0000000 0x10000010
    _L 0x204B3ACC 0x42820000
    _L 0xD0000000 0x10000040
    _L 0x204B3ACC 0x41F00000

    如上述2個金手指,很明顯『失敗數0』的0x204950DC,此code可以看作004950DC,可運用在CM修改器製作,但速度控制code很明顯的是指針類型

    問題:有辦法在CM制作實現如下圖的修改器嗎?
    最后编辑switch0523 最后编辑于 2013-11-26 01:44:28
    TOP
    3#

    首先很榮幸能解決樓主的問題
    另此篇比小的製作的解說還要更加詳細且實用
    在此不得不讚一個~

    問題二
    要說與尋找偏移的關聯
    應該就在於基址跟CWCheat的改造碼
    都需要偏移8800000...
    XXXFF090減去11FF090得到起始位址
    起始位址減去8800000的值用以搜尋基址
    而211FF090指的是
    在8800000+11FF090的位址寫入32bit的數值

    至於跟CE或CM相關的問題
    小的就無能為力了
    雖然很不好意思
    但小的只懂用MECC...
    希望站長與眾網友能夠諒解
    TOP
    4#

    回复 2楼switch0523的帖子

    其實速度控制的改造碼並非指針喔~
    而是使用判斷碼
    意思大致如下

    0xE0040000 0x104B3ACC
    若位址8800000+4B3ACC不為16bit數值0000
    則啟用之後的4條改造碼
    否則跳過

    0xD0000000 0x10000010
    若是按下"上"則啟用之後的1條改造碼
    否則跳過

    0x204B3ACC 0x42820000
    在位址8800000+4B3ACC寫入32bit數值42820000

    0xD0000000 0x10000040
    若是按下"下"則啟用之後的1條改造碼
    否則跳過

    0x204B3ACC 0x41F00000
    在位址8800000+4B3ACC寫入32bit數值41F00000

    希望這樣說明您能看懂
    最后编辑Blader 最后编辑于 2013-11-26 02:43:15
    TOP
    5#

    我只能说模拟器的数据段也存在可用的指针
    但是在添加了基地址的情况下
    用法和pc指针用法稍微不同而已

    PSP 机战A
    PS 机战Alpha外传
    我皆使用了模拟器的ram段指针来定位
    就是这么个原理

    PSP动态修改器我做了两个
    一个是 机战A:http://forum.cheatmaker.org/showtopic-597.aspx
    一个是 鬼魂力量

    本来准备搞西林3的
    但是最近没空玩那个
    最后编辑银河漫步 最后编辑于 2013-11-26 09:40:08
    TOP
    6#

    另外有关基地址搜索这种方法可以
    但是其实也没你想的那么麻烦
    你把CE的下面这个选项打开就行了
    Dolphin同理

    TOP
    7#

    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
    8#

    我现在不想写教程了
    就等着cm新版发布

    psp金手指、nds金手指
    都提供了一些判断金手指和循环类金手指
    只要找到对应代码
    实现各种功能都不是什么难事
    只是目前尚未发现好用的Windows上的psp debug工具而已
    TOP
    9#

    PSP CWCheat代碼格式
    日本語
    English
    以上應該是完整的代碼格式說明
    在此就不贅述了
    有看不懂可以再行提問

    至於"討鬼傳"小的有回覆過解決方法
    只是沒有附上詳細圖文
    那麼這次就在此篇稍微解說一下

    由於手邊沒有"討鬼傳"
    因此使用GBA的Pokemon Emerald來做解說
    其實方法都是一樣的


    首先看到選起來的位址是主人公的名字
    在這個狀態下選擇搜尋方式"増減"
    並按下"検索開始"

    接著任意切換一個畫面或地圖
    可以發現位址偏移了+4
    這時再以搜尋方式"増減"
    但搜尋數值寫入+4
    並按下"絞込み検索”
    可以發現搜尋結果很多
    但只有一個是完全符合的
    若是在"討鬼傳"中沒有完全符合的結果也沒關係
    挑一個距離HP位址最接近的搜尋結果作為指針就可以了
    希望這樣說明各位可以看懂

    圖片一樣上傳至Google協作平台
    看不到的朋友可以試試掛代理(翻牆)
    TOP
    10#

    這篇教學文真的很棒
    希望能有些其他模擬器的基址查找教學,如Dolphin、desmume等
    TOP
    发新话题 回复该主题