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

标题: 绿宝石神兽游走系统升级 [打印本页]

作者: 本站第一萌新    时间: 2021-7-24 22:47
标题: 绿宝石神兽游走系统升级
神兽游走系统在二代时就已经存在于口袋妖怪游戏内了。很遗憾的是,在绿宝石内只能同时支持一只神兽的游走,且神兽的范围仅限红蓝水都。虽然能够通过巧妙的脚本将神兽的范围从红蓝水都拓宽到全体PM,但仍然无法解决只能同时支持一只神兽游走的问题。虽然老外的基于反汇编工程的火红升级版将神兽数量上调为10,可惜一来没有绿宝石版本二来没有基于原ROM写入的版本(这应该是绝大多数国内改版者使用的方法)。最近(其实是一年前,不过这一年因为某些原因处于退坑状态)有位坛友希望我能在绿宝石内实现这个功能,于是我花了一天半的时间完成了这个系统。
PS:由于本人本来水平就不高,再加上已有一年左右的时间未接触改版,该系统的质量可能不高,敬请谅解。
PS2:不确定使用的RAM是否安全,如果不放心可以自行前往bpee.ld中进行更改!
PS3:使用方法和注意事项均在README.md中,请使用者认真阅读!

下载地址:https://github.com/GoldenCaterpie/BPEERoamingUpdate
作者: jiangzhengwenjz    时间: 2021-7-25 04:10
支持,其实LZ可以直接用pokeemerald的header,然后bpee.ld简单写个程序生成下就行
作者: 744865306    时间: 2021-7-25 07:03
我认为你写的callasm有错,你callasm 0x1700001,但实际应该写成:callasm 0x9700001才对
作者: 744865306    时间: 2021-7-25 07:18
额……我不会用github下载东西……
作者: 本站第一萌新    时间: 2021-7-25 09:27
jiangzhengwenjz 发表于 2021-7-25 04:10
支持,其实LZ可以直接用pokeemerald的header,然后bpee.ld简单写个程序生成下就行

感谢聚聚支持
直接用pokeemerald的header是个好主意,不过挺多结构体的定义好像是在.c文件里的
bpee.ld怎么生成呢,难道从pokeemerald.map中提取吗,不少需要用到的函数是静态的,还是得自己去找
作者: 本站第一萌新    时间: 2021-7-25 09:30
744865306 发表于 2021-7-25 07:03
我认为你写的callasm有错,你callasm 0x1700001,但实际应该写成:callasm 0x9700001才对

不知道你用的脚本编译器是什么。不过如果是XSE,这么写是合理的。只要你写的指针不是0,编译器会自动把前面这种形式转换成后面这种形式
作者: 本站第一萌新    时间: 2021-7-25 09:31
744865306 发表于 2021-7-25 07:18
额……我不会用github下载东西……

code -> download zip
作者: 744865306    时间: 2021-7-25 16:56
那个……大佬,有什么函数可以运行战斗脚本
作者: 本站第一萌新    时间: 2021-7-25 17:10
744865306 发表于 2021-7-25 16:56
那个……大佬,有什么函数可以运行战斗脚本

记得好像是直接把当前的战斗脚本地址(0x02024214)设置成你要的地址就行了,不过802里面好像专门有个函数进行这个操作?当然战斗脚本用什么返回(end)这是要分场合的。具体挺复杂的,我一时半会也说不清,而且一年没改也基本忘了,总之你照着egg他们的做法做就行了。或者去咨询版主,如果他有时间的话
作者: 744865306    时间: 2021-7-25 18:12
本站第一萌新 发表于 2021-7-25 17:10
记得好像是直接把当前的战斗脚本地址(0x02024214)设置成你要的地址就行了,不过802里面好像专门有个函数 ...

这样啊,谢谢大佬,我先去问问jzw大佬吧
作者: 744865306    时间: 2021-7-25 20:38
那个……大佬,我写了以下源码,但他并没有起到我想要的效果:
作者: 744865306    时间: 2021-7-25 20:38
.gba .thumb .create "test.gba",0x8000000 .close .open "绿宝石.gba","test.gba",0x8000000  .org 0x08F00000 .func new         lsl r0,r0,#4         and r4,r0         cmp r4,#0         bne NoPPReduce         mov r1,#0x58         ldr r0,=0x0202420B         ldrb r0,[r0]         mul r0,r1         ldr r1,=0x020240A4         add r0,r1         ldrb r0,[r0]         cmp r0, #79 ;"饱了又饿"特性编号         beq yes1 end:         ldr r3,=(0x08046B04|1)         bx r3 yes1:         ldr r0,=0x02024084         ldrh r0,[r0]         cmp r0,#1 ;空腹花纹编号         bne changenull         mov r1,#2 ;满腹花纹编号 keep:         strh r1,[r0]         b end changenull:         mov r1,#1 ;空腹花纹编号 NoPPReduce:         ldr r3,=(0x08046BDC|1)         bx r3 .endfunc .pool  .org 0x08046AFC         ldr r3,=(new|1)         bx r3 .pool  .close
作者: 744865306    时间: 2021-7-25 20:38
emmm,在回复里发好像不太行
作者: 744865306    时间: 2021-7-25 20:39
我到一个新的帖子里发吧
作者: 744865306    时间: 2021-7-25 20:40
http://www.pmcenter.cn/forum.php?mod=viewthread&tid=111602&extra=page%3D1&mobile=2
作者: jiangzhengwenjz    时间: 2021-7-26 04:06
本帖最后由 jiangzhengwenjz 于 2021-7-26 05:19 编辑
本站第一萌新 发表于 2021-7-25 09:27
感谢聚聚支持
直接用pokeemerald的header是个好主意,不过挺多结构体的定义好像是在.c文件里的[em_XSK18 ...


对的,只是比全手动要好点。实际上你也可以从.elf里把静态的地址导出来,只是这样就需要剔除那些重复的了
作者: 本站第一萌新    时间: 2021-7-26 08:58
jiangzhengwenjz 发表于 2021-7-26 04:06
对的,只是比全手动要好点。实际上你也可以从.elf里把静态的地址导出来,只是这样就需要剔除那些重复的 ...


作者: 744865306    时间: 2021-7-26 17:12
本站第一萌新 发表于 2021-7-25 17:10
记得好像是直接把当前的战斗脚本地址(0x02024214)设置成你要的地址就行了,不过802里面好像专门有个函数 ...

大佬,我直接设置,结果没执行战斗脚本,看来应该不能这样
作者: 本站第一萌新    时间: 2021-7-26 17:17
744865306 发表于 2021-7-26 17:12
大佬,我直接设置,结果没执行战斗脚本,看来应该不能这样

可能你设置之后,被后面的其他程序又改成其他的了。所以hook的地点是要讲究的。
作者: 744865306    时间: 2021-7-26 17:20
本站第一萌新 发表于 2021-7-26 17:17
可能你设置之后,被后面的其他程序又改成其他的了。所以hook的地点是要讲究的。

emmm
作者: 本站第一萌新    时间: 2021-7-26 17:21
744865306 发表于 2021-7-26 17:12
大佬,我直接设置,结果没执行战斗脚本,看来应该不能这样

你结合nogba跑一下就知道问题在哪了。估计是我说的那样,不然大概率会卡死或者直接崩溃
作者: 本站第一萌新    时间: 2021-7-26 17:25
744865306 发表于 2021-7-26 17:20
emmm


所以说 新手可以用802作蓝本 很多功能函数和参照他都以及给好了 直接用就行
只不过很多函数的地址都要自己结合nogba去找
作者: 744865306    时间: 2021-7-26 17:31
本站第一萌新 发表于 2021-7-26 17:21
你结合nogba跑一下就知道问题在哪了。估计是我说的那样,不然大概率会卡死或者直接崩溃

嗯,我看看
作者: MASTERPOPY    时间: 2021-8-4 21:10
兔兔,你怎么不加我好友。
作者: 本站第一萌新    时间: 2021-8-5 08:58
MASTERPOPY 发表于 2021-8-4 21:10
兔兔,你怎么不加我好友。

兔兔是什么鬼 蓝兔吗 我不是啊
并且他应该早就没在研究改版了
作者: MASTERPOPY    时间: 2021-8-5 22:42
本站第一萌新 发表于 2021-8-5 08:58
兔兔是什么鬼 蓝兔吗 我不是啊
并且他应该早就没在研究改版了

我一直以为你是蓝兔!
可以把你的代码做成反编译源码版本的吗?
我想直接替换!
作者: MASTERPOPY    时间: 2021-8-6 13:00
本站第一萌新 发表于 2021-7-25 09:27
感谢聚聚支持
直接用pokeemerald的header是个好主意,不过挺多结构体的定义好像是在.c文件里的[em_XSK18 ...

objdump -t pokeemerald.elf >> 1.txt
作者: 本站第一萌新    时间: 2021-8-6 16:59
MASTERPOPY 发表于 2021-8-5 22:42
我一直以为你是蓝兔!
可以把你的代码做成反编译源码版本的吗?
我想直接替换!

额 我做吗?最近我事情比较多,没什么时间制作。
不过这个应该也比较简单吧,移植应该比较容易
作者: 本站第一萌新    时间: 2021-8-6 16:59
MASTERPOPY 发表于 2021-8-6 13:00
objdump -t pokeemerald.elf >> 1.txt


作者: weixiao    时间: 2021-8-6 17:36
MASTERPOPY 发表于 2021-8-4 21:10
兔兔,你怎么不加我好友。

怕不是闲得慌,加了我几次又删了我几次,然后又叫我加回来
作者: MASTERPOPY    时间: 2021-8-6 18:32
weixiao 发表于 2021-8-6 17:36
怕不是闲得慌,加了我几次又删了我几次,然后又叫我加回来

最近在兴致来了,想搞一下反编译版本。所以需要人帮忙。
另外,最后一次拉黑我的不是你么?
作者: weixiao    时间: 2021-8-6 18:40
MASTERPOPY 发表于 2021-8-6 18:32
最近在兴致来了,想搞一下反编译版本。所以需要人帮忙。
另外,最后一次拉黑我的不是你么?

喂,这又删又加的,你不烦我都烦了
索性我这次主动删你不行吗
作者: MASTERPOPY    时间: 2021-8-6 20:15
weixiao 发表于 2021-8-6 18:40
喂,这又删又加的,你不烦我都烦了
索性我这次主动删你不行吗

你要来的话就加群615084429
作者: 本站第一萌新    时间: 2021-8-8 09:05
MASTERPOPY 发表于 2021-8-6 20:15
你要来的话就加群615084429

现在你们898做到什么进度了?
如果加群会分配任务吗?
作者: MASTERPOPY    时间: 2021-8-8 14:04
本站第一萌新 发表于 2021-8-8 09:05
现在你们898做到什么进度了?
如果加群会分配任务吗?

8代技能,特性都有了。还有精灵数据
没有的:道具,地图等。
主要是整个项目都汉化了,除了这里别无二家。
做什么没有具体要求,看你兴趣。
作者: 本站第一萌新    时间: 2021-8-8 15:55
MASTERPOPY 发表于 2021-8-8 14:04
8代技能,特性都有了。还有精灵数据
没有的:道具,地图等。
主要是整个项目都汉化了,除了这里别无二 ...

我感兴趣的点也是整个项目都汉化了。战斗系统这些老外都有升级之后的工程了
就是怕进群之后没什么事情干又被踢了
作者: MASTERPOPY    时间: 2021-8-8 17:04
本站第一萌新 发表于 2021-8-8 15:55
我感兴趣的点也是整个项目都汉化了。战斗系统这些老外都有升级之后的工程了
就是怕进群之后没什么事情干 ...

除了解散群,我不会踢人。
作者: 本站第一萌新    时间: 2021-8-8 19:05
MASTERPOPY 发表于 2021-8-8 17:04
除了解散群,我不会踢人。

行,那我就也凑下热闹
作者: 林书竹    时间: 2021-12-31 12:50
楼主,在code下没见到download zip,要账号登录才能下载吗
作者: 剑仁宇仔    时间: 2022-6-9 20:43
744865306 发表于 2021-7-25 07:03
我认为你写的callasm有错,你callasm 0x1700001,但实际应该写成:callasm 0x9700001才对

应该没问题吧,0x1700001是偏移量,加上基址就是0x970001了吧




欢迎光临 Pokemon Center | 口袋中心 以口袋妖怪为主题并带有其他动漫游戏的讨论 (http://162.218.49.243/) Powered by Discuz! X3