|
这个帖子 首发于百度贴吧 "苍穹之印痕" 本人贴吧ID "远远地观尚",欢迎各位前来交(DA)流(LIAN)
我的原型机体——虽然表面很好看 但是BUG多得..无法直视.
入改版坑已经2个月了....
倒也没什么大的功绩、就是和各路改版爱好者讨论、解决各种坑爹小坑。
关于绿宝石中 野生遇怪2V2 实现的可能性、
表示这一次本新人终于可以决战巨坑了、
(不胜利 毋宁死啊 )
除非这个东西已经被前人给研究过了...那我只能——愉快地抄答案了.
我是在分析绿宝石开头 博士遭遇蛇纹熊的程序之中
从而发现这个应用的.
mov r1,90h
lsl r1,r1,1h 使得r1正好是蛇纹熊的内部编码、我就是凭此检索到这个倒霉程序的.
当时 正在探究如何跳过这段程序 却发现了图中那个有趣的跳转分支.
cmp r0,0h —— bl 8067B2C
这个分支正好跳过了 针鼠的那段程序、
mov r1,10h 和 and r0,r1 这两个命令吸引了我:
是否能用办法 调取程序中 为R0赋值的片段.
并且改变它呢?
这便是我开始研究野生2V2的开端了.
设下断点后不难发现 那段针鼠程序(其实还和三选一精灵程序连在一起)
在[2022FEC]处填入10.
而这个10是决定了 战斗的模式
和野生蛇纹熊的对战 和 与普通野怪的对战 显然是存在不同的、
需要一个参数来指引 通用的战斗准备程序(如上上图所示)跳转.
这个变值被存入在 [2022FEC]中
若此时的我把 mov r0,10h 改为mov r0,5h
蛇纹熊的对战就会变成这样.
这是预料之中的事情…因为设定野怪(蛇纹熊)参数的那段程序 被跳过了、
出来 ???(未设定野怪参数)的话不足为奇。
于是我再次设定断点 试图捕捉到 普通的野生遇怪 的程序..
这里截的宽是为了 R2寄存器里面的地址…
用差不多的手法…只是改成 mov r0,4h
不过之后在测试中发现 (1V1)训练师的战斗准备程序 也会运转到这里…
如果贸然将 mov r0,4h 改为 movr0,5h 的话..就会悲剧..
莫名其妙地和训练师打2V2
但是奇怪的是 如果我将此处 改为 mov r0,8h的话
就会显示为训练师对战(单打)…显示的训练师 将会是你最近一次与之对战的训练师、
想必任天堂 没有完事后 清理内存的习惯(笑)
于是抱着侥幸的态度 再次设下断点..
这段程序 是 野怪战斗准备程序运行不到、似乎是专门为训练师对战而准备的.
确实有其设计的道理。
但是在进行野生遇怪2V2战斗之前就先要判断 该次战斗是 训练师战斗、还是野怪战斗。
分别野怪战斗、训练师战斗 且 在movr0,4h前设下断点 发现这个可以解决:
在mov r0,4h前设个跳转分支 判断R0是否小于8 若是 则为野怪、若不是、则为训练师战斗
然后可以设计的东西就多了:
产生随机数、判断是否进入2V2战斗、判断玩家是否有2只可以战斗的妖怪
判断玩家的节操值、BWH值 。
————————————————废话——————————————————————
BTW,我是***控 =A=
好吧接下来就是大问题了,真心请求大神支援
————————————————废话——————————————————————
在野怪战中 将mov r0,4h 改为 mov r0,5h 并不能直接有效地解决问题..
——看上去有两只怪 其实有一只是"空"的
1.左面那只、可以有效地出招 一打就空血 却不死 要等右面那只倒了 才会一起死
2.不能逃跑. 不知道为何,选逃跑 总是会显示"逃跑失败".
至于捕捉的话...忘记试了..
反正现在的关键就是先找到输入第二只野怪 种类、等级 参数的方法
总之 拜托各位大神啦! |
|