#4619 - recondite - Sat Apr 05, 2003 1:49 am
I have been having alot of trouble getting two backgrounds to blend, background 0 onto background2
my goal is to have a "shadow" effect. background 0 is just black and transparent.
this is the portion of my code that is doing the blending
It doesn't seam to work for me. I just get my pureblackshadows.
Its driving me nuts i hope somebody can figure out what i am doing wrong
thanks
ps. my code in its entirity is below
my goal is to have a "shadow" effect. background 0 is just black and transparent.
this is the portion of my code that is doing the blending
Code: |
setblend @define REG_BLDCNT 0x4000050 @define REG_BLDAlPHA 0x4000052 ; alpha @define REG_BLDY 0x4000054 ; darken lighten ldr r1,=REG_BLDCNT ldr r2,=0x00010001000001 str r2,[r1] ldr r1,=REG_BLDAlPHA ldr r2,=0x0100000000000 str r2,[r1] mov pc,lr |
It doesn't seam to work for me. I just get my pureblackshadows.
Its driving me nuts i hope somebody can figure out what i am doing wrong
thanks
ps. my code in its entirity is below
Code: |
; Joe and Aaron's rpg jarg @include jarg.h b init ;data ;tiledata @incbin viragetileset.raw tiledata @incbin GreenHL.raw palletedata @incbin master.pal map2data @include hallway.map ;map0data @incbin shadraw.raw map0data @include hallwayshadow.map start_wram_vars @textarea 0x03000000 bg2scrlx @DCD 0; bg scroll bg2scrly @DCD 0; bg scroll ;sp1x @DCD 0; sprite x ;sp1y @DCD 0; sprite y @endarea end_wram_vars init bl setmode bl copyvars bl loadtiles bl loadbgpal bl loadmaps bl setblend ;bl makesprite ;bl loadsprite ;bl loadsppal mainloop bl waitforvsync bl getkeys bl draw bl delay ; slow it all down ;bl delay b mainloop setmode ldr r1,=REG_DISPCNT ldr r2,=(MODE_0|BG2_ENABLE|BG0_ENABLE) str r2,[r1] ldr r1,=REG_BG2CNT ldr r2,=(TEXTBG_SIZE_512x512|BG_COLOR_256|(15<<SCREEN_SHIFT)) str r2,[r1] ldr r1,=REG_BG0CNT ldr r2,=(TEXTBG_SIZE_512x512|BG_COLOR_256|(20<<SCREEN_SHIFT)) str r2,[r1] mov pc,lr setblend ;blending is super gay, all i want is my fn shadows to be 50% transparent for christs sake @define REG_BLDCNT 0x4000050 @define REG_BLDAlPHA 0x4000052 ; alpha @define REG_BLDY 0x4000054 ; darken lighten ldr r1,=REG_BLDCNT ldr r2,=0x00010001000001 str r2,[r1] ldr r1,=REG_BLDAlPHA ldr r2,=0x0100000000000 str r2,[r1] mov pc,lr copyvars ; can posibly do this with dma mov r0,start_wram_vars mov r1,end_wram_vars mov r2,$03000000 romtowram_loop ldr r3,[r0]+4! str r3,[r2]+4! cmp r0,r1 ble romtowram_loop mov pc,lr loadtiles ldr r1,=REG_DMA3SAD ldr r2,=tiledata str r2,[r1] ldr r1,=REG_DMA3DAD LoadCharBlockAddr r2, 0 str r2,[r1] ldr r1,=REG_DMA3CNT ldr r2,=(8192|DMA_32NOW) str r2,[r1] mov pc,lr loadbgpal ldr r1,=REG_DMA3SAD ldr r2,=palletedata str r2,[r1] ldr r1,=REG_DMA3DAD ldr r2,=VPAL str r2,[r1] ldr r1,=REG_DMA3CNT ldr r2,=(128|DMA_32NOW) str r2,[r1] mov pc,lr loadmaps ;bg2 ldr r1,=REG_DMA3SAD ldr r2,=map2data str r2,[r1] ldr r1,=REG_DMA3DAD LoadScreenBlockAddr r2, 15 str r2,[r1] ldr r1,=REG_DMA3CNT ldr r2,=(2048|DMA_32NOW) str r2,[r1] ;bg0 ldr r1,=REG_DMA3SAD ldr r2,=map0data str r2,[r1] ldr r1,=REG_DMA3DAD LoadScreenBlockAddr r2, 20 str r2,[r1] ldr r1,=REG_DMA3CNT ldr r2,=(2048|DMA_32NOW) str r2,[r1] mov pc,lr waitforvsync ldr r7,=REG_DISPCNT vsyncloop ldrh r8,[r7,+$06] cmp r8,160 blt vsyncloop mov pc, lr getkeys ldr r1,=KEYS ldr r2,[r1] ands r1,r2,#KEY_UP beq do_keyup upret ands r1,r2,#KEY_DOWN beq do_keydown downret ands r1,r2,#KEY_LEFT beq do_keyleft leftret ands r1,r2,#KEY_RIGHT beq do_keyright rightret ands r1,r2,#KEY_A beq do_keya aret ands r1,r2,#KEY_B beq do_keyb bret mov pc,lr do_keyup mov r0,bg2scrly ldr r1,[r0] cmp r1,1 ; limit scrolling upper boundy ble upret sub r1,r1,1 str r1,[r0] b upret do_keydown mov r0,bg2scrly ldr r1,[r0] cmp r1,352 ; lower boundy bge downret add r1,r1,1 str r1,[r0] b downret do_keyleft mov r0,bg2scrlx ldr r1,[r0] cmp r1,1 ; keft boundy ble leftret sub r1,r1,1 str r1,[r0] b leftret do_keyright mov r0,bg2scrlx ldr r1,[r0] cmp r1,272 ; right boundy bge rightret add r1,r1,1 str r1,[r0] b rightret do_keya ; turn on shadows ldr r1,=REG_DISPCNT ldr r3,=(MODE_0|BG2_ENABLE|BG0_ENABLE) str r3,[r1] b aret do_keyb ; turn off shadows ldr r1,=REG_DISPCNT ldr r3,=(MODE_0|BG2_ENABLE) str r3,[r1] b bret draw mov r0,bg2scrlx ldr r1,[r0] mov r0,bg2scrly ldr r2,[r0] mov r2,r2 lsl 16 add r1,r1,r2 ldr r3,=REG_BG2HOFS str r1,[r3] ldr r3,=REG_BG0HOFS str r1,[r3] mov pc,lr delay ldr r0,=0 delay_loop add r0,r0,1 cmp r0,1024 ble delay_loop mov pc,lr |