sb: fix blue/orange sprite to have pseudo transparency
This commit is contained in:
parent
b95389b54e
commit
6a4ff347da
|
@ -1,5 +1,14 @@
|
||||||
Title
|
Strongbadzone:
|
||||||
+ ?
|
+ Implement rest of audio
|
||||||
|
+ Ball movement logic. Is actually just 2D
|
||||||
|
-> Collision detect with head. Decrement count, play sound
|
||||||
|
-> Collision detect with player
|
||||||
|
+ Do the color mask (different blacks)
|
||||||
|
+ Animate side walls
|
||||||
|
-> This is going to involve fancy memory management
|
||||||
|
+ Faster hgr copy?
|
||||||
|
+ Optimize sprite size
|
||||||
|
+ Allow lowercase keyboard (see duck code)
|
||||||
|
|
||||||
Duck:
|
Duck:
|
||||||
+ Implement throwing
|
+ Implement throwing
|
||||||
|
@ -8,21 +17,18 @@ Duck:
|
||||||
+ Implement easter eggs
|
+ Implement easter eggs
|
||||||
+ Exit back to main title
|
+ Exit back to main title
|
||||||
|
|
||||||
Rat:
|
|
||||||
+ ?
|
|
||||||
|
|
||||||
Strongbadzone:
|
|
||||||
+ Get audio
|
|
||||||
+ Ball movement logic. Is actually just 2D
|
|
||||||
+ Check bounds on person
|
|
||||||
+ Do the color mask (different blacks)
|
|
||||||
+ Animate side walls
|
|
||||||
+ Faster hgr copy?
|
|
||||||
+ Optimize sprite size
|
|
||||||
+ Allow lowercase keyboard (see duck code)
|
|
||||||
|
|
||||||
Cliff:
|
Cliff:
|
||||||
+ Everything
|
+ Everything
|
||||||
|
|
||||||
Jump
|
Jump
|
||||||
+ Everything
|
+ Everything
|
||||||
|
|
||||||
|
Rat:
|
||||||
|
+ Done?
|
||||||
|
|
||||||
|
Title
|
||||||
|
+ Done?
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
;===========================================
|
;===========================================
|
||||||
; can handle sprites bigger than a 256 byte page
|
; can handle sprites bigger than a 256 byte page
|
||||||
|
|
||||||
|
; Note this is optimized for blue/orange sprites
|
||||||
|
; it treats black0 as transparent
|
||||||
|
|
||||||
; SPRITE in INL/INH
|
; SPRITE in INL/INH
|
||||||
; Location at SPRITE_X SPRITE_Y
|
; Location at SPRITE_X SPRITE_Y
|
||||||
|
|
||||||
|
@ -66,8 +69,10 @@ big_sprite_inner_loop:
|
||||||
|
|
||||||
big_sprite_smc1:
|
big_sprite_smc1:
|
||||||
lda $f000,X ; load sprite data
|
lda $f000,X ; load sprite data
|
||||||
|
beq big_sprite_transparent
|
||||||
sta (GBASL),Y ; store to screen
|
sta (GBASL),Y ; store to screen
|
||||||
|
|
||||||
|
big_sprite_transparent:
|
||||||
inx ; increment sprite offset
|
inx ; increment sprite offset
|
||||||
|
|
||||||
; if > 1 page
|
; if > 1 page
|
||||||
|
@ -146,7 +151,20 @@ osprite_inner_loop:
|
||||||
osprite_smc1:
|
osprite_smc1:
|
||||||
lda $f000,X ; load sprite data
|
lda $f000,X ; load sprite data
|
||||||
|
|
||||||
|
bne osprite_not_transparent
|
||||||
|
|
||||||
|
; we can't just skip if 0 because we might shift a bit in
|
||||||
|
; from previous byte
|
||||||
|
|
||||||
|
plp
|
||||||
|
bcs osprite_oops
|
||||||
|
clc
|
||||||
|
php
|
||||||
|
bcc osprite_transparent_done
|
||||||
|
|
||||||
|
osprite_not_transparent:
|
||||||
plp ; restore carry from last
|
plp ; restore carry from last
|
||||||
|
osprite_oops:
|
||||||
rol ; rotate in carry
|
rol ; rotate in carry
|
||||||
asl ; one more time, bit6 in carry
|
asl ; one more time, bit6 in carry
|
||||||
php ; save on stack
|
php ; save on stack
|
||||||
|
@ -155,6 +173,8 @@ osprite_smc1:
|
||||||
|
|
||||||
sta (GBASL),Y ; store to screen
|
sta (GBASL),Y ; store to screen
|
||||||
|
|
||||||
|
|
||||||
|
osprite_transparent_done:
|
||||||
inx ; increment sprite offset
|
inx ; increment sprite offset
|
||||||
|
|
||||||
; if > 1 page
|
; if > 1 page
|
||||||
|
|
Loading…
Reference in New Issue