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

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

[小发现]多重showpokepic的关闭

[复制链接]

3344

回帖

204

现金

484

勋章券

超级版主

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

积分
21856
QQ

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

发表于 2016-5-12 22:23:44 | 显示全部楼层 |阅读模式
Andrea的showpokepic limit editor 1.3.0.0(可在本区置顶工具库内下载)可以解除红宝石,火红,绿宝石的showpokepic数量限制,但是却没有给出相应的关闭方法,若直接使用hidepokepic又会导致死机。不过由于一些机缘巧合我发现火红中的一个special有这种功能。
对于红宝石,hidebox并非是空命令,据说直接使用这个就能关闭,不做讨论。

如何解除限制:(来自andrea的工具,本质上就是强制使游戏无法检查到是否已经用过一次showpokepic(无法搜索到函数指针))
  1. 火红: 写入00于0x9D31E
  2. 绿宝石: 写入00于0xE2916
复制代码
然后火红在0xCADDE写入00 00 00 00防止和其他框冲突,可用于测试的脚本:
  1. #org @start
  2. lock
  3. faceplayer
  4. showpokepic 1 1 1
  5. showpokepic 2 15 1
  6. msgbox @thisisastring 6
  7. special 0x15A//调用2次,因为2个框
  8. special 0x15A
  9. release
  10. end
  11. #org @thisisastring
  12. = Hello World.
复制代码


绿宝石里没有这个special,所以写个源码搞定它:
  1. .code 16
  2. push {r4, r5, lr}
  3. ldr r0, =0x80E2899
  4. ldr r3, =0x80A921D
  5. bl bx_r3
  6. lsl r0, r0, #0x18
  7. lsr r5, r0, #0x18
  8. cmp r5, #0xFF
  9. beq back
  10. lsl r0, r5, #2
  11. add r0, r0, r5
  12. lsl r0, r0, #3
  13. ldr r1, =0x3005E00
  14. add r4, r0, r1
  15. mov r1, #8
  16. ldrsh r0, [r4, r1]
  17. cmp r0, #0
  18. blt back
  19. cmp r0, #2
  20. ble loc1
  21. cmp r0, #3
  22. beq loc2
  23. b back

  24. loc1:
  25. mov r0, #0xC
  26. ldrsh r1, [r4, r0]
  27. lsl r0, r1, #4
  28. add r0, r0, r1
  29. lsl r0, r0, #2
  30. ldr r1, =0x2020630
  31. add r0, r0, r1
  32. ldrb r1, [r4, #0xC]
  33. ldr r3, =0x80B6071
  34. bl bx_r3
  35. ldrb r0, [r4, #0x12]
  36. bl sub_new
  37. mov r0, r5
  38. ldr r3, =0x80A909D
  39. bl bx_r3
  40. b back

  41. loc2:
  42. ldrb r0, [r4, #0x12]
  43. bl sub_new
  44. mov r0, r5
  45. ldr r3, =0x80A909D
  46. bl bx_r3

  47. back:
  48. pop {r4, r5, pc}
  49. .ltorg

  50. sub_new:
  51. push {r4, lr}
  52. mov r4, r0
  53. lsl r4, r4, #0x18
  54. lsr r4, r4, #0x18
  55. mov r0, r4
  56. ldr r3, =0x80038A5
  57. bl bx_r3
  58. mov r0, r4
  59. mov r1, #1
  60. ldr r3, =0x8197DF9
  61. bl bx_r3
  62. mov r0, r4
  63. ldr r3, =0x8003575
  64. pop {r4, pc}
  65. .ltorg

  66. bx_r3: bx r3
复制代码
编译好的:
  1. 30 B5 18 48 18 4B 00 F0 4F F8 00 06 05 0E FF 2D 27 D0 A8 00 40 19 C0 00 14 49 44 18 08 21 60 5E 00 28 1E DB 02 28 02 DD 03 28 13 D0 19 E0 0C 20 21 5E 08 01 40 18 80 00 0D 49 40 18 21 7B 0D 4B 00 F0 32 F8 A0 7C 00 F0 19 F8 28 1C 0A 4B 00 F0 2B F8 06 E0 A0 7C 00 F0 11 F8 28 1C 06 4B 00 F0 23 F8 30 BD 99 28 0E 08 1D 92 0A 08 00 5E 00 03 30 06 02 02 71 60 0B 08 9D 90 0A 08 10 B5 04 1C 24 06 24 0E 20 1C 05 4B 00 F0 0E F8 20 1C 01 21 03 4B 00 F0 09 F8 20 1C 02 4B 10 BD A5 38 00 08 F9 7D 19 08 75 35 00 08 18 47
复制代码
测试脚本:
  1. #org 0xF10000
  2. lock
  3. showpokepic 0x1 0x1 0x1
  4. showpokepic 0x4 0xF 0x1
  5. msgbox 0x81E8ACF 0x6 //一个原游戏中的文本,不改了
  6. callasm 0x8XXXXXX+1//上面的函数地址+1
  7. callasm 0x8XXXXXX+1
  8. release
  9. end
复制代码
回复

使用道具 举报

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

本版积分规则

手机版|Archiver|Pokemon Center

GMT+8, 2024-4-23 18:52 , Processed in 0.101650 second(s), 39 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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