在dsvania_editor中我们可以轻易地勾选人物武器、红魂、装备的属性和抗性。但是对于怪物,却没有复选框供人修改。因为怪物的攻击属性并不简单。持有武器、或者发射投射物的怪物,身体和武器算作不同的物体,攻击力和属性也不相同。蝎尾狮蝎尾有毒但身体无毒。石化牛/石化鸡本体不石化,但是他们的雾和激光会石化。所以属性不能简单的修改。
此方法可能产生无法估计的后果。为了减少bug对您的rom产生的不可逆转的破坏,先备份再修改。修改需要能看内存的gba模拟器,这里我用VisualBoyAdvance(vba)。no$gba也行,顺便可以自己设置中断或者修改指令看看会发生什么。还需要一个16进制编辑器,我用的是crystaltile2(ct2)。再准备一份晓月圆舞曲rom,我用美版,汉化版同理。
从dsv的文档,可以知道一些重要信息。
(资料图片)
=== 020004E4-02007863: Entity memory. Each entity is0x84 byteslong. Entities range from 00-DF.
What each range of entity slots is for:
00,4: Pointer to update code。实体的updatecode(似乎是每帧要执行的东西)
。。。。。。
1B-48 020012D0-02002A87 Room entities, including enemies and special objects.
房间内的实体,敌人/特殊物品
。。。。。。
敌人的数据就在加粗的位置了。
Memory used for entities in AoS is 020004E4 - 02007863. Each entity is 0x84 bytes long. They range from 0-DF.
。。。。。。
40,4: X pos on the screen in subpixels.
In the GBA games, each pixel is 0x10000 subpixels.
Note that unlike the DSVanias, there is no X/Y pos in the room. Only on the screen.
44,4: Y pos on the screen in subpixels.
In the GBA games, each pixel is 0x10000 subpixels.
Note that unlike the DSVanias, there is no X/Y pos in the room. Only on the screen.
这两个是横纵坐标,可以改动这两个的值,然后看有什么实体发生了移动,从而确定这段内存是哪个实体的。
。。。。。。
7C,4: On-hurt-player callback.
This function pointer is called when the entity collides with the player.
击中玩家时调用的函数指针
80,4: On-damaged callback.
This function pointer is called when the entity collides with a player weapon.
It calculates the damage that should be done and kills the enemy if its HP is 0 or below.被玩家击中时调用的函数指针,关系到怪物的死亡,不要乱改,但是在这方法里有其他用途。
。。。。。。
这函数关系到伤害计算和属性了。所以要改属性就从这里下手。
打开gba模拟器,打开晓月圆舞曲。进入一个你要改/用的怪的房间。比如我现在要史莱姆的毒。
用dsv看到史莱姆的updatecode是080C1349(49 13 0C 08),打开内存查看器。每0x84字节是一只怪的数据。转到020012d0。找到49130c08.
打败史莱姆,这一段全变成00了,说明这里就是史莱姆的数据。从这里开始,地址往后0x7c就是攻击代码了。
经过测试,得到一些重要的攻击函数指针(以小端模式记录)。
319B0908 诅咒魔
DD130C08 史莱姆
CDE30A08 毒虫
CD990808 牛的雾
牛的雾是重点,因为这个是牛生成后会自动消失的,也找不到updatecode,只能看这段内存有没有哪里会突然随着雾出现又随着雾消失了。其他投射物同理。在消失之前赶紧暂停然后查看。
接下来是修改。这里找到了史莱姆,试着把它改成诅咒属性。把上面图中的dd 13 0c 08改成31 9b 09 08,结果如下。
成功,也没有什么异常,那就可以这么改了。现在我只改了内存,所以只影响这一只史莱姆。要改动rom才行。幸运的是,怪物受击代码和攻击代码存放在一块。攻击代码有复用,受击代码的复用可能没那么多。而两个代码都符合的就更少了。打开ct2,打开晓月,搜索dd130c080d140308。
dd130c08改成诅咒魔(还是叫外质?太久不看中文版,忘了)的攻击指针319b0908,保存,重新打开rom,找史莱姆看看效果。
改成石化雾的CD990808试试。
大致就是这样了。敌人的投射物也可以这么改。比如让飞刀鬼的刀带毒。
原理就是改变怪打中人调用的函数,因为属性受这个函数控制。大致如此,可能有未发现的不明后果,谨慎使用。比如改换皮怪,改了蓝色米诺陶斯,红色的也跟着变了。美杜莎头的函数别的怪用了没反应。也许存在很多我没发现的问题和错误。
关键词:
修改晓月圆舞曲怪物的攻击属性(以三种特殊状态为主)
2023-08-26“科技感”遇上“文艺范” 重庆产业园区如何打造艺术消费IP?
2023-08-26变“流量”为价值 看九龙坡文旅如何探索实践
2023-08-26股票行情快报:通程控股(000419)8月25日主力资金净卖出196.05万元
2023-08-26剑南春丨切尔西3-0卢顿迎首胜,斯特林双响,雅克松铲射建功
2023-08-26云杰:黄金1920空精准验证,后市看跌1900-1885
2023-08-25机械键盘按键怎么选择_机械键盘按键怎么选择
2023-08-25维远股份:拟投资建设AMS分离提纯技术改造项目
2023-08-25热成像原理及制作 热成像原理
2023-08-25教育部副部长陈杰会见耐克集团副总裁兼首席公共政策官柯世辉
2023-08-25修改晓月圆舞曲怪物的攻击属性(以三种特殊状态为主)
2023-08-26“科技感”遇上“文艺范” 重庆产业园区如何打造艺术消费IP?
2023-08-26变“流量”为价值 看九龙坡文旅如何探索实践
2023-08-26股票行情快报:通程控股(000419)8月25日主力资金净卖出196.05万元
2023-08-26剑南春丨切尔西3-0卢顿迎首胜,斯特林双响,雅克松铲射建功
2023-08-26云杰:黄金1920空精准验证,后市看跌1900-1885
2023-08-25机械键盘按键怎么选择_机械键盘按键怎么选择
2023-08-25维远股份:拟投资建设AMS分离提纯技术改造项目
2023-08-25热成像原理及制作 热成像原理
2023-08-25教育部副部长陈杰会见耐克集团副总裁兼首席公共政策官柯世辉
2023-08-25Copyright 2015-2022 全球超市网版权所有 备案号:豫ICP备20009784号-11 联系邮箱:85 18 07 48 3@qq.com