找回密码
 注册
搜索
查看: 4042|回复: 5

[DER] Der梦幻模拟战研究笔记

[复制链接]
发表于 2016-9-25 22:19 | 显示全部楼层 |阅读模式
 楼主| 发表于 2016-9-25 22:23 | 显示全部楼层

第一篇:SFC字库

因为有了PS版DER的经验,猜想字库是12*12的单色1bpp,

用CrystalTile2(简称CT2)打开中文版ROM,设置tile格式12*12 单色1bpp,

然后在0x200000处找到了像是字体的地方,如图



嗯,前面的像是‘囧’字,不过有点不太对劲= =

原来是SFC的字库的格式有点不一样,

一般字库的字节排列是这样的



而SFC der的字库字节排列是这样的



所以需要写个小程序转换字库,编辑好之后再转换回去。之前写的转换工具忘了放哪里去了,找到了再上传吧。
 楼主| 发表于 2016-9-25 22:25 | 显示全部楼层

第二篇:SFC文本

之前笔记1中已经得到了字库,接下来就要确定码表。

把字库按顺序打出来,然后再用一些工具确定字符对应的编码。

确定编码可以用一些动态修改器,比如个人喜欢用的CheatEngine,

SFC模拟器snes9x已经自带了修改器,确定码表的过程太繁琐就从略了。

得到码表之后就可以找文本了,

用CT2打开中文版ROM,CT2里菜单-码表-选择码表,选择之前确定的码表,然后菜单-码表-启用码表,

然后就可以在0x210120处找到游戏的文本。



0x210120前面的那些好像是乱码?仔细观察其实那是文本块的指针,每3个字节一个指针。

搞清除规律之后就可以用工具或者写工具导出文本了,然后修改文本,修改字库,把修改后的字库和文本再导入到ROM里,一个汉化游戏可能就那样横空出世了~!
 楼主| 发表于 2016-9-25 22:25 | 显示全部楼层

第三篇:SFC资源解压

解压需要把字节转换成二进制,请自备计算器。

以下如无0x前缀均为二进制:

100 XXXX  =  XXXX

101 XX  = {
101 00 = 0x10
101 01 = 0x30
101 10 = 0x80
101 11 = 0xFF
}

11 XXXXXXXX  =  XXXXXXXX

00 YYYY  =  复制一个字节,该字节位于当前位置之前YYYY个字节处

010 YYYY  =  复制二个字节,这两个字节位于当前位置之前YYYY个字节处

0110 YYYY  =  复制三个字节,这三个字节位于当前位置之前YYYY个字节处

01110 YYYYYYYY  =  复制二个字节,这两个字节位于当前位置之前YYYYYYYY个字节处

011110 YYYYYYYY  =  复制三个字节,这三个字节位于当前位置之前YYYYYYYY个字节处

0111110 YYYYYYYY  =  复制四个字节,这四个字节位于当前位置之前YYYYYYYY个字节处

01111110 XXXX YYYYYYYY  =  复制5+XXXX个字节,这些字节位于当前位置之前YYYYYYYY个字节处

01111111  =  结束标志

例子:SFC第一关战场配置数据

原始数据:

83 0E 44 09 61 50 28 44 C5 0B 14 C8 08 C9 26 14

转换成二进制:

10000011 00001110 01000100 00001001 01100001 01010000 00101000 01000100
11000101 00001011 00010100 11001000 00001000 11001001 00100110 00010100

重新排列一下:

1000001 1000011 1001000 1000000 1001011 000010 10100 000010 1000010 001001
1000101 000010 1100010100 1100100000 001000 1100100100 1001100 001010 0

解压后的数据:

01 03 08 00 0B 00 10 00 02 01 05 01 14 20 10 24 0C 00 …………

01 我方回合音乐
03 敌方回合音乐
08 00 我方出战部队指针
0B 00 我方部队坐标指针
10 00 非我方部队指针
02 我方出战部队数量
01 05 我方出战部队编号,01艾尔文,05海恩
01 是否强制配置指挥官
14 20 指挥官配置坐标1
10 24 指挥官配置坐标2
0C 00 非我方部队数量
 楼主| 发表于 2016-9-25 22:30 | 显示全部楼层

第四篇:PS/SS/FX资源解压

其实DER在PS/SS/FX的资源解压跟SFC的是基本一样的,但是要去掉这一行:100 XXXX  =  XXXX,统一使用:11 XXXXXXXX  =  XXXXXXXX 来表示单个字节。

解压需要把字节转换成二进制,请自备计算器。

以下如无0x前缀均为二进制:

101 XX  = {
101 00 = 0x10
101 01 = 0x30
101 10 = 0x80
101 11 = 0xFF
}

11 XXXXXXXX  =  XXXXXXXX

00 YYYY  =  复制一个字节,该字节位于当前位置之前YYYY个字节处

010 YYYY  =  复制二个字节,这两个字节位于当前位置之前YYYY个字节处

0110 YYYY  =  复制三个字节,这三个字节位于当前位置之前YYYY个字节处

01110 YYYYYYYY  =  复制二个字节,这两个字节位于当前位置之前YYYYYYYY个字节处

011110 YYYYYYYY  =  复制三个字节,这三个字节位于当前位置之前YYYYYYYY个字节处

0111110 YYYYYYYY  =  复制四个字节,这四个字节位于当前位置之前YYYYYYYY个字节处

01111110 XXXX YYYYYYYY  =  复制5+XXXX个字节,这些字节位于当前位置之前YYYYYYYY个字节处

01111111  =  结束标志
发表于 2016-9-26 18:46 | 显示全部楼层
不明觉厉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|虎纹猫家园

GMT+8, 2024-11-24 10:09 , Processed in 0.025151 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表