GBA顏色特效的設定方法(轉)

post0發表於2007-08-12
GBA顏色特效的設定方法(轉)[@more@]

  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

  

  好了,要說的都說完了,怎樣實現就要自己想辦法了,這裡就不給出例子啦

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-951713/,如需轉載,請註明出處,否則將追究法律責任。

相關文章