汉化技术帖~字库原理篇 by sumiya

暗黑兔 发表于 2009-10-10 10:00 | 来源: | 阅读

(一)四个问题 7 5|pp
C3)|<E
如果有人在狼组片面地看了一些初级教程,可能会被误导。 U{}!y3[wK
(f~gEKcB2u
狼组翻译的汉化初级教程,其中一篇讲到字库的,有这样一张讲解TILE(a:TILE是什么)的图: zP&q7 t;>
|_|_|_|_|_|_|_|_| Q&PB]D{
|_|_|_|X|X|_|_|_| 6-�]h5L]
|_|_|X|_|_|X|_|_| h@@d{{IqT
|_|X|_|_|_|_|X|_| 3�Z1OX]R
|_|X|_|_|_|_|X|_| SX+4 HJB
|_|X|X|X|X|X|X|_| ` 8UWE {
|_|X|_|_|_|_|X|_| xnbsg!`;7W
|_|X|_|_|_|_|X|_| jV^C19
[(|v`qMv/g
这看上去就是个字符“A”,没错,游戏机的屏幕上就是这样显示8*8的“A”的。但是这个只是“A”的框架,游戏是怎样决定用什么颜色去显示这个字(b:字取色问题)? 9P.(^SD][z
或者当字存在阴影时,为什么游戏能将这个阴影的颜色变得淡一些,而不是和字的颜色相同(c:一字多色问题)? @Tr&`Hi
还有,为什么有时候要调整TLP的“显示格式”,当你看到下面状态栏里的注释xBPP变化的某一xBPP时,字才能显示出来(d:xBPP是什么意思)? 8a>SC$8"
$"8d:N?I[
如果只看了初级教程,只会用TLP画字,那你就会认为:TILE就是字的点阵信息。这样你就完全误解了TILE的工作原理。 TJOvyz`t
Tn�A?u (R%
(二)解决问题:一切都是编号(索引) :wipE]~4t
这个步骤要求你必须了解计算机基础知识。(要知道什么是bit,什么是byte;还要知道16进制、2进制、进制转换。这个很基础,我就不说了,不懂可以去找本《计算机应用基础》来看) =nU/ [T.
1、整天用TLP(Tile Layer Pro)来画字模(编辑TILE),也许会认为TILE就是一张“字模”。字库的TILE确实可以认为就是“字模”,那“字模”又算什么?通称的“字模”其实是存放在游戏ROM里的一串2进制数据,这段数据记录了字符信息。 \84v-VK
比如刚才那张1BPP的字模图: ~HmxEk9
PZ,z15PG]
行   2进制数    转换为16进制 nbmc[!PwG
|_|_|_|_|_|_|_|_|   0 00000000     0 N:x0w+Ca
|_|_|_|X|X|_|_|_|   1 00011000     18 J`oTes,
|_|_|X|_|_|X|_|_|   2 00100100     24 w`gyE 6A
|_|X|_|_|_|_|X|_|   3 以下省略………… vP mnN^
|_|X|_|_|_|_|X|_|   4 …………………… f=aIXhiYU
|_|X|X|X|X|X|X|_| mqFq_UX/ T
|_|X|_|_|_|_|X|_| sLns3&n2
|_|X|_|_|_|_|X|_| EJm4xkYLj1
u7=T(4a
2、1BPP就是指1 bit per pixel,翻译为中文就是“用1个‘比特’(1个比特占用一个2进制位)来存放1个‘像素点’的信息”。1个2进制位能表示的数值只有0或1,当这些数 据被传输到GBA显存时,经过游戏程序的设定,GBA硬件会自动对这些数据进行“索引”工作。 P`”mM? u
索引过程:当数值为0时,GBA会去调色板(后面会讲到)取0号颜色放到屏幕上这个相应点的位置;当数值为1时,就会去取1号颜色。(当0号颜色被游戏程序设定为黑色、1号为白色时,你将会看到一个黑底白字的“A”显示在屏幕上。 Do*n#=
};S0 G!
2BPP也是同样原理,但是用2个2进制位表示1个像素点(2 bit/pixel)。2个2进制位能表示的数值有0、1、2、3,当2BPP的TILE被放到显存,游戏程序进行设定之后,GBA同样对他们进行索引工作。 1 Z[f {T)
索引过程:数值0,取调色板0号颜色;数值1,取1号;数值2,取2号;数值3,取3号。(当调色板0号颜色设定为黑、1号设定为白、2号设定为灰时,如下图) _x %�1�F
行   10进制数      2进制数     16进制 n vyB/
|_|_|_|_|_|_|_|_|  0 00000000  00 00 00 00 00 00 00 00  00 00 &88oB6$D^q
|_|_|_|1|1|_|_|_|  1 00011000  00 00 00 01 01 00 00 00  01 40 tcL2J�.
|_|_|1|_|2|1|_|_|  2 00102100  00 00 01 00 10 01 00 00  04 90 h-mTj3p-K
|_|1|_|2|_|_|1|_|  3 01020010  00 01 00 10 00 00 01 00  12 04 �^o�eJKjJ
|_|1|2|_|_|_|1|2|  4 ……以下省略 T+CajSV
|_|1|1|1|1|1|1|2| <B[G |FY,
|_|1|2|2|2|2|1|2| {a ”RXa
|_|1|2|_|_|_|1|2| (|u31[
< qeCso
你将会看到一个黑底白字,带着灰色阴影的“A”。注意:在同样使用8*8的情况下,每一行使用的2进制位个数增加为1BPP的2倍。 %Fft R1″
o4Q3<T7nI
3BPP和4BPP同理。有时候游戏使用的字库格式略微有些差异,但是原理都是一样的。

关键字:
喜欢兔友汉化组的文章,那就通过 RSS Feed 功能订阅阅读吧!

我要评论

*

* 绝不会泄露



返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明 | 模板设计