mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-11 01:30:53 +00:00
fish: update sprite_big to properly handle purple/green palette too
This commit is contained in:
parent
14d806f918
commit
723fecdfc7
12
games/sb/fish/TODO
Normal file
12
games/sb/fish/TODO
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
+ Try to make sprites color clash look better
|
||||||
|
|
||||||
|
+ Add lure animation
|
||||||
|
|
||||||
|
+ Add text to title screen
|
||||||
|
+ Add help text
|
||||||
|
+ Add moving fishes
|
||||||
|
+
|
||||||
|
+ Add score to game
|
||||||
|
|
||||||
|
+ Compress sprites?
|
||||||
|
|
@ -3,17 +3,17 @@
|
|||||||
;===========================================
|
;===========================================
|
||||||
; 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
|
; Note this version can handle both palettes on odd columns
|
||||||
|
|
||||||
; it treats black0 as transparent
|
; it treats black0 as transparent
|
||||||
|
|
||||||
|
; it also tries to auto-shift for even/odd? but poorly?
|
||||||
|
|
||||||
; SPRITE in INL/INH
|
; SPRITE in INL/INH
|
||||||
; Location at SPRITE_X SPRITE_Y
|
; Location at SPRITE_X SPRITE_Y
|
||||||
|
|
||||||
; xsize, ysize in first two bytes
|
; xsize, ysize in first two bytes
|
||||||
|
|
||||||
; sprite AT INL/INH
|
|
||||||
|
|
||||||
|
|
||||||
; orange = color5 1 101 0101 1 010 1010
|
; orange = color5 1 101 0101 1 010 1010
|
||||||
|
|
||||||
hgr_draw_sprite_big:
|
hgr_draw_sprite_big:
|
||||||
@ -98,8 +98,13 @@ big_sprite_ysize_smc:
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;=======================================
|
||||||
|
; odd
|
||||||
|
; attempt to adjust colors with shift
|
||||||
|
|
||||||
|
|
||||||
hgr_draw_sprite_big_odd:
|
hgr_draw_sprite_big_odd:
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
lda (INL),Y ; load xsize
|
lda (INL),Y ; load xsize
|
||||||
clc
|
clc
|
||||||
@ -120,7 +125,7 @@ hgr_draw_sprite_big_odd:
|
|||||||
ldx #0 ; X is pointer offset
|
ldx #0 ; X is pointer offset
|
||||||
stx CURRENT_ROW ; actual row
|
stx CURRENT_ROW ; actual row
|
||||||
|
|
||||||
ldx #2
|
ldx #2 ; skip size values
|
||||||
|
|
||||||
ohgr_sprite_yloop:
|
ohgr_sprite_yloop:
|
||||||
|
|
||||||
@ -142,7 +147,8 @@ ohgr_sprite_yloop:
|
|||||||
|
|
||||||
ldy SPRITE_X
|
ldy SPRITE_X
|
||||||
|
|
||||||
clc
|
clc ; assume 0 for start
|
||||||
|
|
||||||
php ; store 0 carry on stack
|
php ; store 0 carry on stack
|
||||||
|
|
||||||
osprite_inner_loop:
|
osprite_inner_loop:
|
||||||
@ -165,10 +171,26 @@ osprite_smc1:
|
|||||||
osprite_not_transparent:
|
osprite_not_transparent:
|
||||||
plp ; restore carry from last
|
plp ; restore carry from last
|
||||||
osprite_oops:
|
osprite_oops:
|
||||||
rol ; rotate in carry
|
|
||||||
|
rol ; rotate carry into low bit
|
||||||
|
; rotate palette bit into carry
|
||||||
|
|
||||||
|
bcs osprite_blue_orange
|
||||||
|
osprite_purple_green:
|
||||||
asl ; one more time, bit6 in carry
|
asl ; one more time, bit6 in carry
|
||||||
php ; save on stack
|
php ; save on stack
|
||||||
sec ; assume blur/orange
|
|
||||||
|
clc ; assume purple/green
|
||||||
|
bcc osprite_done_pal ; bra
|
||||||
|
|
||||||
|
|
||||||
|
osprite_blue_orange:
|
||||||
|
asl ; one more time, bit6 in carry
|
||||||
|
php ; save on stack
|
||||||
|
|
||||||
|
sec ; assume blue/orange
|
||||||
|
|
||||||
|
osprite_done_pal:
|
||||||
ror ; rotate it back down
|
ror ; rotate it back down
|
||||||
|
|
||||||
sta (GBASL),Y ; store to screen
|
sta (GBASL),Y ; store to screen
|
||||||
|
Loading…
x
Reference in New Issue
Block a user