Pokemon Center | 口袋中心 以口袋妖怪为主题并带有其他动漫游戏的讨论

 找回密码
 加入口袋中心
搜索
查看: 7538|回复: 11

技能机无限

[复制链接]

3344

回帖

3

现金

484

勋章券

超级版主

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
21853
QQ

时光印记Lv.3挥金如土勋章水中王者勋章Lv3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章金银好CP-Ho-oh/LUGIA【里】金银好CP-Ho-oh/LUGIA【真·正常向】异化型LUGIA【M超梦版】

发表于 2015-8-10 12:08:44 | 显示全部楼层 |阅读模式
本帖最后由 jiangzhengwenjz 于 2016-11-24 12:20 编辑

限于火红版,这个其实是之前所做的事了,虽然老外做过了但自己试一下也不坏。

制作之前先要明确目的:
1. 不显示数量(伪HM)
2. 使用后不删除
3. 【易忽略】不能携带

1. 数量较难断,于是对HM图标的数据下断(通过内存数据得到位置)或是直接搜索0xe99118的指针得到读取HM图标的源码位置是x1335b0

    反追踪一次得到调用位置是x131efa,注意到在x131eac获取了技能机的数量,后面的程序进行转码和写入内存,因此我们只需跳过这段代码。

    也就是HM:不读取数量,读取图标。TM:不读取数量,也不读取图标。这里给出这个程序的源码:
  1. ROM:08131E68                 PUSH            {R4-R7,LR}
  2. ROM:08131E6A                 MOV             R7, R9
  3. ROM:08131E6C                 MOV             R6, R8
  4. ROM:08131E6E                 PUSH            {R6,R7}
  5. ROM:08131E70                 SUB             SP, SP, #0x14
  6. ROM:08131E72                 LSLS            R0, R0, #0x18
  7. ROM:08131E74                 LSRS            R0, R0, #0x18
  8. ROM:08131E76                 MOV             R9, R0
  9. ROM:08131E78                 MOV             R7, R9
  10. ROM:08131E7A                 LSLS            R2, R2, #0x18
  11. ROM:08131E7C                 LSRS            R2, R2, #0x18
  12. ROM:08131E7E                 MOV             R8, R2
  13. ROM:08131E80                 MOV             R4, R8
  14. ROM:08131E82                 MOVS            R0, #2
  15. ROM:08131E84                 NEGS            R0, R0
  16. ROM:08131E86                 CMP             R1, R0
  17. ROM:08131E88                 BEQ             loc_8131EFE
  18. ROM:08131E8A                 LSLS            R0, R1, #0x10
  19. ROM:08131E8C                 LSRS            R6, R0, #0x10
  20. ROM:08131E8E                 MOVS            R0, #4
  21. ROM:08131E90                 MOVS            R1, R6
  22. ROM:08131E92                 BL              sub_809A798 @获得道具id
  23. ROM:08131E96                 LSLS            R0, R0, #0x10
  24. ROM:08131E98                 LSRS            R0, R0, #0x10
  25. ROM:08131E9A                 BL              sub_809A990 @检测
  26. ROM:08131E9E                 LSLS            R0, R0, #0x18
  27. ROM:08131EA0                 LSRS            R5, R0, #0x18
  28. ROM:08131EA2                 CMP             R5, #0
  29. ROM:08131EA4                 BNE             loc_8131EF4 @是HM,不读取数量而去读取图标
  30. ROM:08131EA6                 LDR             R4, =0x2021CD0
  31. ROM:08131EA8                 MOVS            R0, #4
  32. ROM:08131EAA                 MOVS            R1, R6
  33. ROM:08131EAC                 BL              sub_809A7B4 @获取数量
  34. ROM:08131EB0                 MOVS            R1, R0
  35. ROM:08131EB2                 LSLS            R1, R1, #0x10
  36. ROM:08131EB4                 LSRS            R1, R1, #0x10
  37. ROM:08131EB6                 MOVS            R0, R4
  38. ROM:08131EB8                 MOVS            R2, #1
  39. ROM:08131EBA                 MOVS            R3, #3
  40. ROM:08131EBC                 BL              sub_8008E78 @转换代码&写入内存
  41. ROM:08131EC0                 LDR             R4, =0x2021D18
  42. ROM:08131EC2                 LDR             R1, =0x84162B9
  43. ROM:08131EC4                 MOVS            R0, R4
  44. ROM:08131EC6                 BL              sub_8008FCC @加上乘号,写入另一个内存,如B900A6A1就是× 50
  45. ROM:08131ECA                 MOV             R0, R8
  46. ROM:08131ECC                 STR             R0, [SP]
  47. ROM:08131ECE                 STR             R5, [SP,#4]
  48. ROM:08131ED0                 STR             R5, [SP,#8]
  49. ROM:08131ED2                 MOVS            R0, #0xFF
  50. ROM:08131ED4                 STR             R0, [SP,#0xC]
  51. ROM:08131ED6                 MOVS            R0, #1
  52. ROM:08131ED8                 STR             R0, [SP,#0x10]
  53. ROM:08131EDA                 MOV             R0, R9
  54. ROM:08131EDC                 MOVS            R1, #0
  55. ROM:08131EDE                 MOVS            R2, R4
  56. ROM:08131EE0                 MOVS            R3, #0x7E
  57. ROM:08131EE2                 BL              sub_81332EC
  58. ROM:08131EE6                 B               loc_8131EFE @跳过读取图标的部分
  59. ROM:08131EE6 ; ---------------------------------------------------------------------------
  60. ROM:08131EE8 dword_8131EE8   DCD 0x2021CD0           ; DATA XREF: ROM:08131EA6r
  61. ROM:08131EEC dword_8131EEC   DCD 0x2021D18           ; DATA XREF: ROM:08131EC0r
  62. ROM:08131EF0 dword_8131EF0   DCD 0x84162B9           ; DATA XREF: ROM:08131EC2r
  63. ROM:08131EF4 ; ---------------------------------------------------------------------------
  64. ROM:08131EF4
  65. ROM:08131EF4 loc_8131EF4                             ; CODE XREF: ROM:08131EA4j
  66. ROM:08131EF4                 MOVS            R0, R7
  67. ROM:08131EF6                 MOVS            R1, #8
  68. ROM:08131EF8                 MOVS            R2, R4
  69. ROM:08131EFA                 BL              sub_81335B0 @正式读取图标
  70. ROM:08131EFE
  71. ROM:08131EFE loc_8131EFE                             ; CODE XREF: ROM:08131E88j
  72. ROM:08131EFE                                         ; ROM:08131EE6j
  73. ROM:08131EFE                 ADD             SP, SP, #0x14
  74. ROM:08131F00                 POP             {R3,R4}
  75. ROM:08131F02                 MOV             R8, R3
  76. ROM:08131F04                 MOV             R9, R4
  77. ROM:08131F06                 POP             {R4-R7}
  78. ROM:08131F08                 POP             {R0}
  79. ROM:08131F0A                 BX              R0
复制代码
那么,如何改造也就很清楚了,我的方法是将x131ea6的指令改去b 0x8131efe,也就是写入2A E0。测试也通过(不过老外的似乎有些不同)

2. 这个非常直观,但暗桩较多。首先获得删除道具程序的位置,从脚本命令中,道具中都可(好吧其实这个程序哪都有),随后下断

会发现有3个程序都调用了这个,分别是:玩家看完动画后删除,玩家按b退出动画后删除,给少于4个技能的精灵学习后删除【这个略坑,看了老外的才发现

将这些位置调用程序的代码都去掉即可,即将x124f78,x125c80,x124eac的数据都改去00 00 00 00。

3. 这个很容易漏掉,不改的话会发生携带了之后背包里还有这个道具的情况。

首先注意到HM是不能进行携带的,故可猜测某处会判断HM和TM。但这个程序的地址我们真的不知道吗?在之前x131e9a的源码处我们知道是判定是否为HM,故而这个程序一定会断

直接下断,会断2次,一次是小框中的读取图标判定,另一次则是我们所需要的位置了(按下give时)。
  1. ROM:081326B8                 CMP     R0, #0
  2. ROM:081326BA                 BNE     loc_81326EC
复制代码
只需让它都以为是HM即可,这里的代码改去00 00 17 E0,强行跳转即可,那么整个的修改就完成了。

当然,还需要让技能机器不能被卖掉,这个老外没有给出方法。
我简单研究了一下,改动应该是
  1. 0x132924 - 00 00 00 00
复制代码
这个方法理论上是很优的,但并没有经过测试。
对于购买时的数量显示,若要直接阉割:
  1. 0x9bcc2 - 00 00 00 00
复制代码
若要保留则要对源码稍事修改了:
  1. 0x9BCB0 - 00 49 08 47 XX XX XX XX
复制代码
其中XX XX XX XX是下面源码的指针(thumb模式+1)
  1. .thumb
  2. .align 2
  3. add r5, r5, r0
  4. ldrh r0, [r5, #0xA]
  5. mov r1, #9
  6. lsl r1, r1, #5
  7. add r1, r1, #1
  8. cmp r0, r1
  9. blt notm
  10. add r1, #0x31
  11. cmp r0, r1
  12. bgt notm
  13. ldr r1, =0x809a7dd
  14. bl call_viar1
  15. cmp r0, #0
  16. bgt adjust
  17. b return

  18. notm:
  19. ldr r1, =0x809a7dd
  20. bl call_viar1

  21. return:
  22. ldr r1, =0x809bcb9

  23. call_viar1:
  24. bx r1

  25. adjust:
  26. mov r0, #1
  27. b return
复制代码
那么最后来汇总一下需要修改的代码:
  1. 0x1326BA - 17 E0
  2. 0x124F78 - 00 00 00 00
  3. 0x125C80 - 00 00 00 00
  4. 0x124EAC - 00 00 00 00
  5. 0x131EA6 - 2A E0
  6. 0x132924 - 00 00 00 00

  7. 以下二选一:
  8. 阉割:
  9. 0x9BCC2 - 00 00 00 00
  10. 保留:
  11. 0x9BCB0 - 00 49 08 47 GH+1 EF CD AB
  12. 0xABCDEFGH - 2D 18 68 89 09 21 49 01 01 31 88 42 08 DB 31 31 88 42 05 DC 06 49 00 F0 07 F8 00 28 05 DC 02 E0 03 49 00 F0 01 F8 03 49 08 47 01 20 FB E7 00 00 DD A7 09 08 B9 BC 09 08
复制代码
C语言编的懒人程序:
inf.zip (25.96 KB, 下载次数: 476)

2016.11.24更新:
  1. 0x13288D - E0
复制代码
回复

使用道具 举报

144

回帖

1849

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
483

No.258-260水跃鱼一家小火狐时光印记Lv.1水中王者勋章Lv1

发表于 2015-8-10 13:21:32 | 显示全部楼层
题外话,Bsp是Jambo51的工具吧?

点评

是  发表于 2015-8-10 13:24
回复 支持 反对

使用道具 举报

1345

回帖

190

现金

37

勋章券

踏入阳光的成就

Rank: 14Rank: 14Rank: 14Rank: 14

积分
3816

论坛十周年纪念物挥金如土勋章御姐型LUGIA黑白女主角特制版黑白系列女主角【夜间版】金银好CP第一弹-凤王金银好CP第一弹-LUGIA

发表于 2015-8-10 13:54:46 | 显示全部楼层
然而又是火红,来个绿宝石可好
回复 支持 反对

使用道具 举报

3344

回帖

3

现金

484

勋章券

超级版主

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
21853
QQ

时光印记Lv.3挥金如土勋章水中王者勋章Lv3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章金银好CP-Ho-oh/LUGIA【里】金银好CP-Ho-oh/LUGIA【真·正常向】异化型LUGIA【M超梦版】

 楼主| 发表于 2015-8-10 14:06:08 | 显示全部楼层
钢之波导 发表于 2015-8-10 13:54
然而又是火红,来个绿宝石可好

我几乎没改过绿宝石。。不知道机理是不是差不多,如果一样的话按这个办法也能搞出来
回复 支持 反对

使用道具 举报

2578

回帖

119

现金

109

勋章券

面对4天王的心跳声

丧心

Rank: 16Rank: 16Rank: 16Rank: 16

积分
7947

约修亚勋章水中王者勋章Lv3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章黑白女主角特制版黑白系列女主角【白日版】时光印记Lv.2黑白系列男主角【白日版】


雷电兽 Lv:38
发表于 2015-8-10 22:27:54 | 显示全部楼层
要是能在第四代中实现技能机器无限就好了

刚创建的游戏群欢迎加入交流178850754
回复 支持 反对

使用道具 举报

3344

回帖

3

现金

484

勋章券

超级版主

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
21853
QQ

时光印记Lv.3挥金如土勋章水中王者勋章Lv3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章金银好CP-Ho-oh/LUGIA【里】金银好CP-Ho-oh/LUGIA【真·正常向】异化型LUGIA【M超梦版】

 楼主| 发表于 2015-8-10 22:31:26 | 显示全部楼层
郭碌仁 发表于 2015-8-10 22:27
要是能在第四代中实现技能机器无限就好了

然而并不会改第四代
回复 支持 反对

使用道具 举报

2578

回帖

119

现金

109

勋章券

面对4天王的心跳声

丧心

Rank: 16Rank: 16Rank: 16Rank: 16

积分
7947

约修亚勋章水中王者勋章Lv3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章黑白女主角特制版黑白系列女主角【白日版】时光印记Lv.2黑白系列男主角【白日版】


雷电兽 Lv:38
发表于 2015-8-10 22:56:51 | 显示全部楼层
jiangzhengwenjz 发表于 2015-8-10 22:31
然而并不会改第四代

我只会用ROM修改器改ROM文件可惜我不会外语不然就可以好好研究了 我最喜欢第四代了

刚创建的游戏群欢迎加入交流178850754
回复 支持 反对

使用道具 举报

12

回帖

66

现金

0

勋章券

口袋学堂外的努力

Rank: 2Rank: 2

积分
38
发表于 2016-3-8 13:13:53 | 显示全部楼层
请问写在哪里呢?
回复 支持 反对

使用道具 举报

2

回帖

4

现金

0

勋章券

口袋学堂外的努力

Rank: 2Rank: 2

积分
12
发表于 2018-6-9 10:15:23 | 显示全部楼层
本帖最后由 xxxm 于 2018-6-9 16:06 编辑

请问删除数据时是怎样得知删除道具程序的位置的?不久前接触改版,很多基础知识都不齐全
回复 支持 反对

使用道具 举报

94

回帖

645

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
344

时光印记Lv.1

发表于 2021-2-4 07:13:10 来自手机 | 显示全部楼层
jiangzhengwenjz 发表于 2015-8-10 14:06
我几乎没改过绿宝石。。不知道机理是不是差不多,如果一样的话按这个办法也能搞出来

貌似是差不多的,只是一堆不一样的地址
回复 支持 反对

使用道具 举报

52

回帖

208

现金

0

勋章券

新伙伴的欢笑

Rank: 3

积分
94
发表于 2021-6-21 16:29:05 | 显示全部楼层
路过回复一下,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入口袋中心

本版积分规则

手机版|Archiver|Pokemon Center

GMT+8, 2024-4-20 11:10 , Processed in 0.160473 second(s), 82 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表