GBA颜色特效的设置方法

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

Alpha混合 与 淡入淡出

这里是说明GBA的颜色特效的设置方法,如果有什么说得不好的请大家多包含。

有什么说错的东西的地址就要大家帮我改改了。

Alpha混合:对两个选择的表面执行16级的半透明处理。

淡入淡出:对一个选择的表面执行16级的亮度处理。

这几个效果的目标由BLDMOD寄存器指定的

地址:0x4000050h寄存器:BLDMOD属性:读/写初始值:0x00h

____________________________________________________________________

│15│14│13│12│11│10│9│ 8│ 7│ 6│5│4 │ 3│ 2│1│ 0│

│ X│X │F │E │ D│ C│B│ A│Y │ Y│F│E │ D│ C│B│ A│

底8位是第一目标,高8位为第二目标

A:BG0

B:BG1

C:BG2

D:BG3

E:OBJ

F:BD(底幕)

YY = 00

没有特效:通常不执行特效,只有存有半透明OBJ并且是紧随在第二目标之后就执行16级半

透明处理。

YY = 01

Alpha混合:如果第一上目标紧随在第二目标之后,执行16级半透明度处理。当第一目标的

OBJ位为1,

对全部OBJ执行半透明处理,为0时只对半透明OBJ进行处理。

YY = 10

亮度增加:增加第一目标的亮度。当第一目标的OBJ位为1时,只对OBJ增加亮度。

当一个半透明OBJ有第一目标,总是会执行Alpha混合

YY = 11

亮度减少:减少第一目标的亮度。当第一目标的OBJ位为1时,只对OBJ减少亮度。

当一个半透明OBJ有第一目标,总是会执行Alpha混合

虽然可以通过BLDMOD寄存器来指定要操作的目标表面,但是这两个表面还要配合图层的优先

权限来设置。

另外,半透明OBJ是由OAM指定的,而BLDMOD是对全部OBJ有效。

颜色系数

Alpha混合的系数是由COLEV寄存器里的EVA和EVB决定的。亮度系数是由COLY寄存器里的EVY指定

的。

EVA、EVB和EVA的值是少于1的数,由一个整数乘以1/16所得到的。这个可能有些难明,要好好地

去领悟领悟。

地址:0x4000052h寄存器:COLEV属性:只写初始值:0x00h

____________________________________________________________________

│15│14│13│ 12│11│10│ 9 │ 8 │ 7│ 6│5│ 4│ 3 │ 2 │ 1 │ 0 │

│X │X │X │ B │B │B │B │B │X │X │X│A │A │A │A │ A │

B为EVB

A为EVA

地址:0x4000054h寄存器:COLY属性:只写初始值:0x00h

____________________________________________________________________

│15│14│13│12│11│10│ 9 │ 8 │7│6│5│4│3│2│1│0│

│X │X │X │X │X │X │ X │ X │X│X│X│Y│Y│Y│Y│Y│

Y为EVY

EVA、EVB、EVY的值与系数对应关系:

EVA、EVB、EVY的值系数

000000

000011/16

000102/16

000113/16

001004/16

001015/16

001106/16

001117/16

010008/16

010019/16

0101010/16

0101111/16

0110012/16

0110113/16

0111014/16

0111115/16

1XXXX16/16

公式如下:

Alpha混合:

显示颜色(R)=第一目标象素(R) * EVA + 第二颜色象素(R) * EVB

显示颜色(G)=第一目标象素(G)* EVA + 第二颜色象素(G) * EVB

显示颜色(B)=第一目标象素(B)* EVA + 第二颜色象素(B) * EVB

亮度增加:

显示颜色(R)=第一目标象素(R) +(31 - 第二颜色象素(R))* EVY

显示颜色(G)=第一目标象素(G) +(63 - 第二颜色象素(G))* EVY

显示颜色(B)=第一目标象素(B) +(31 - 第二颜色象素(B))* EVY

亮度减少:

显示颜色(R)=第一目标象素(R) - 第二颜色象素(R)* EVY

显示颜色(G)=第一目标象素(R) - 第二颜色象素(G)* EVY

显示颜色(B)=第一目标象素(B) - 第二颜色象素(B)* EVY

好了,要说的都说完了,怎样实现就要自己想办法了,这里就不给出例子啦。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航