MD梦幻模拟战2 机制解析1-形象

  • 内容
  • 评论
  • 相关

MD版的L2内建有许多机制来限制或者实现某些功能,比如AT、MP之类的数值有上限,某些道具不会掉落,圣剑只有某些人能用等等。
本文所要说的也是其中一个,关于指挥官和佣兵的地图形象的限制。
起因是有人问我为什么把敌军替换成友军会出现地图形象错乱,然后就找时间调试了一下,把这个问题的原因和解决方法做了出来。
首先是通过调试发现的游戏机制:
1、指挥官的地图形象上限为18个,这个是由显存限制的,对应的显存地址0x300-0x347。其中我方及NPC方为10个,敌方为8个,这个是由游戏程序设定的,职业跟形象的对应关系在内存地址0xa7fe-0xa84d,每4字节为一个指挥官的对应,共20个,所以关卡中同时登场的部队上限为20个。
2、佣兵的地图形象上限为26个,这个也是由显存限制的,对应的显存地址0x348-0x3af。佣兵的形象也分阵营,判断标准是看指挥官的阵营,而不是看佣兵本身是什么阵营的兵种。其中我方及NPC方为16个,敌方为10个,这个也是由游戏程序设定的,佣兵跟形象的对应关系在内存0xa84e-0xa8b5,每4字节为一个兵种的对应,共26个。其中我方及NPC方的形象被程序设定为0x62-0x71,共16个。而敌方的佣兵形象则根据实际登场的兵种写入内存0xa88e-0xa8b5。
3、第七个佣兵即召唤物的地图形象上限为4个,这个也是由显存限制的,对应的显存地址为0x3f0-0x3ff,召唤物跟形象的对应关系在内存0xa8b6-0xa8c5,每4字节为一个兵种的对应,共4个。
4、ROM里只有我方及NPC方的兵种的黑白静止形象,只有阵营为我方(0x01)时才会显示黑白静止形象,否则是显示彩色静止形象。其中佣兵的黑白静止形象被程序设定为0x62-0x71,共16个。指挥官的黑白静止形象则按实际登场写入。
5、战前配置士兵时,形象被程序设定为0x62-0x71。
6、战后战果结算时,没测试过,不过大概也是与第5点类似。

可以看到内存地址划分为我方一块,敌方一块,如果其中一块超出了限制就会出现问题。所以这种把内存地址划分为敌我两方的设定导致了几个问题:
1、指挥官形象中,如果其中一方的形象数量超出了上限,即使总数量没有超过18也会出现形象错乱
2、佣兵形象中,游戏程序默认把0x62-0x71共16个兵种设定为我方及NPC方的佣兵形象,所以我方及NPC方的阵营使用敌方的兵种会花屏,而敌方的上限只有10个,超过这个数量也会花屏
3、如果我方阵营的佣兵没有黑白静止形象,那么行动结束后形象会错乱。

所以这里就给出了一些修改方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//1.去掉指挥官形象阵营限制,让全部阵营的指挥官都使用同一块内存。
112D6:movea.w #$6500,A0 (307C6500)    ->    112D6:nop nop (4e714e71)

//2.去掉佣兵形象阵营限制,让全部阵营的佣兵都使用同一块内存,并且保留程序设定的0x62-0x71。
11432:bne $114c8 (66000094)    ->    11432:nop nop (4e714e71)
11454:lea $ffa88e.l,A4 (49F9FFFFA88E)    ->    lea $ffa84e.l,A4 (49F9FFFFA84E)
11684:moveq #$f,D0 (700F)    ->    moveq #$19,D0 (7019)
116C2:lea $ffa88e.l,A0 (41F9FFFFA88E)    ->    lea $ffa84e.l,A0 (41F9FFFFA84E)
116C8:moveq #$9,D0 (7009)    ->    moveq #$19,D0 (7019)

//3.修复没有行动结束形象的兵种。
//版本A:有黑白形象的用黑白形象,没有的用彩色形象
a588:addi.w #$68,D6 (06460068) -> jump $150200 (4ef900150200)
a58c:bra $a5b6

150200:moveq #$0,D1 (7200)
150202:move.b ($0,A3),D1 (122b0000)
150206:cmpi.b #$62,D1 (0c010062)
15020A:blt $15021E (6d000012)
15020E:cmpi.b #$71,D1 (0c010071)
150212:bgt $15021E (6e00000A)
150216:addi.w #$68,D6 (06460068)
15021A:jump $00a5b6 (4ef90000a5b6)
15021E:jump $00a534 (4ef90000a534)

//版本B:佣兵全用彩色形象
a56c:bne $a534 -> bra $a534


//版本C:指挥官和佣兵全用彩色形象
a56c:bne $a534 -> bra $a534
a510:bne $a534 -> bra $a534

//版本D:指挥官、佣兵、召唤兽全用彩色形象
a56c:bne $a534 ->  bra $a534
a510:bne $a534 ->  bra $a534
a596:bne $a534 ->  bra $a534

效果图:

修改成品,修改自狼组汉化原版:http://pan.baidu.com/s/1dDc6qDb

加载中,请稍候...

评论

1条评论
  1. 莫纹 回复

    敌方依然8个指挥官形象.10个兵种形象.

发表评论

电子邮件地址不会被公开。 必填项已用*标注