简单粗暴的 FC 火纹外传战场地图修改入门
MrK的B站账号
编辑于 2023年09月28日 09:02
收录于文集
共5篇

地图的格式

Hex定位到首战地图点,我们可以看到类似于

代码块
JavaScript
自动换行
复制代码
 0E 0F 00 00 10 31 02 2F 2E ... FF
复制成功

 的结构。把它解析出来大概是这样的:

代码块
JavaScript
自动换行
复制代码
 高 宽 00 00 aa bb cc dd …… FF
复制成功

 其中,

高是地图纵高Y;

宽是地图横宽X;

00 00起止或格式符号;

 后面开始的是地图绘制,也就是aa bb cc dd这些。

从2E到FF(包含2E和FF,这里的FF是特别的),每一个值都代表着一个贴图的编号,具体哪个编号,请看附录图。

 简单点说把数值跟在后边填进去就行了,abcd只是代号,请修改为具体的。

外传里为了节省和方便(但也给我们这些修改的多了些麻烦),是可以使用“数量+贴图号”这种格式来绘制地图的,比如02 30 就表示“连续2个草地”,数量的范围是01-2D,可以等于2D。大于2D就会被识别为贴图编号,数量为1个。比如 30 31 表示“1个草地,接着,1个树木”。但贴图FF是特别的,它前面必须加数量才是贴图编号,比如01 FF表示1个船首桅。连续贴图可以节省字节数。

FF 地图结束

规格决定了你需要数多少块贴图,比如0E 0F表明(从00开始数)这是15*16大小的地图,总计 240块。在具体绘制的时候,数量总数应该等于这个数。

以上,

就是这样。

下面我们再来看具体一点的。

修改方法和实例

使用的是最笨的方法:同字节数替换。

来举个例子,出村首战的拉姆森林地图(第3号战场)

村战

打开hex编辑器,打开rom,定位到861B(如何得知,请看附录·战场地图定位)。

861B

开始 0E 0F 00 00(Y*X)地图大小,0E是14但它的计数是从00位开始的,所以也就是网格方块纵x横15x16。

紧接着的

代码块
JavaScript
自动换行
复制代码
10 31 02 2F 2E 0D 31 D3 DA 2E 31 02 30 02 31 06 30 31 30 02 D3 2E D6 0A 30 31 30 02 D3 2E D6 0C 30 02 D3 2E D6 0C 30 02 D3 2F 31 04 30 31 02 30 31 04 30 12 D3 2E 31 04 30 31 02 30 31 04 30 02 D3 2E D6 0C 30 2E D1 2E D6 0C 30 2F D7 2E D6 0B 30 31 02 D3 2E D6 0A 30 02 31 03 2F 31 04 30 18 31 FF
复制成功

就是具体的地图代码

布局位置开始 (861f)

从左到右从上到下。重复一次:值如果小于或等于内置的最大数目值(45个 也就是2D)那就是表示数量,不然就是表示贴图。

现在开始解读:

10 31 (16个31绿树 地图的第一行结束,请对比参照上面的图片可以更直观)

02 2F  (2个2F村立墙,第二行开始)

2E (接着是一个2E村墙)

0D 31(再接着13个31树)

D3 (空地)

DA (治疗池)

2E (接着是一个2E村墙)

……

最后FF 结束或补位 共98字节

所以我要绘制的新图应该是(也是98字节)

代码块
JavaScript
自动换行
复制代码
0F 31 2E 0F 31 2E 2E D1 05 30 02 31 05 30 31 2E 2F D7 0C 30 31 2E 0E 30 31 2E 0F 30 2E 04 30 31 30 31 02 30 02 31 DA 03 30 2F 04 30 02 31 03 30 31 30 31 08 30 31 30 31 02 30 03 31 03 30 2E 0F 30 2E 0E 30 31 2E 2E D1 0C 30 31 2E 2F D7 05 30 02 31 05 30 31 2E 0F 31 2E 0F 31 2E FF FF FF FF FF FF
复制成功

村战改

改图结束,简单粗暴。

再进一步就是调整敌我部队位置,这里略。

剩余的我制作了PDF电子书,各位可以直接下载收藏。

电子书目录

电子书下载

https://www.ksite.cn/contents/fe2-mapdoc.html

备用下载(百度分流):

https://wenku.baidu.com/view/ef37af884593daef5ef7ba0d4a7302768f996f49.html

本教程的视频演示

村战改的视频演示