cliff: all 3 rocks move

too slowly on refresh though
This commit is contained in:
Vince Weaver
2024-08-28 15:12:49 -04:00
parent 2e7ad46eae
commit 72b6061a9d
4 changed files with 146 additions and 23 deletions

View File

@@ -175,15 +175,70 @@ done_erase_old:
; draw rock
;=====================
lda rock_x
MAX_ROCKS=3
lda #0
sta CURRENT_ROCK
draw_rock_loop:
ldx CURRENT_ROCK
lda rock_x,X
sta SPRITE_X
lda rock_y
lda rock_y,X
sta SPRITE_Y
lda rock_state,X
beq do_draw_rock
cmp #3 ; 1,2=exploding
bcc do_explode_rock ; blt
; if we get here, rock not out
; for now just skip
bcs skip_rock
do_explode_rock:
; explode is 1 or 2
; map to 6,7 or 12,13
lda rock_type,X
beq explode_big_rock
explode_small_rock:
lda #11
bne explode_common_rock ; bra
explode_big_rock:
lda #5
explode_common_rock:
clc
adc rock_state,X
bne really_draw_rock
do_draw_rock:
lda rock_type,X
beq draw_big_rock
draw_small_rock:
lda #8
bne draw_common_rock ; bra
draw_big_rock:
lda #2
draw_common_rock:
sta rock_add_smc+1
lda FRAME
and #3
clc
rock_add_smc:
adc #2 ; rock
really_draw_rock:
tax
ldy ERASE_SPRITE_COUNT
@@ -192,6 +247,12 @@ done_erase_old:
inc ERASE_SPRITE_COUNT
skip_rock:
inc CURRENT_ROCK
lda CURRENT_ROCK
cmp #MAX_ROCKS
bne draw_rock_loop
;=====================
@@ -214,16 +275,45 @@ bird_good:
;=====================
; rock
inc rock_y
lda rock_y
cmp #105
bcc rock_good
ldx #0
stx CURRENT_ROCK
move_rock_loop:
ldx CURRENT_ROCK
lda rock_state,X
beq move_rock_normal
cmp #3
bcc move_rock_exploding
move_rock_waiting:
lda #0
sta rock_state,X
lda #12
sta rock_y
sta rock_y,X
jmp rock_good
move_rock_exploding:
inc rock_state,X
jmp rock_good
move_rock_normal:
inc rock_y,X
lda rock_y,X
cmp #105
bcc rock_good
rock_start_explode:
lda #1
sta rock_state,X
rock_good:
inc CURRENT_ROCK
lda CURRENT_ROCK
cmp #MAX_ROCKS
bne move_rock_loop
;=====================
@@ -289,50 +379,82 @@ sprites:
sprites_xsize:
.byte 3, 3 ; bird
.byte 3, 3, 3, 3 ; bigrock
.byte 3, 4 ; bigrock_crash
.byte 2, 2, 2, 2 ; smallrock
.byte 2, 4 ; smallrock_crash
sprites_ysize:
.byte 16,14 ; bird
.byte 23,22,21,22 ; bigrock
.byte 18,21 ; bigrock_crash
.byte 15,14,15,14 ; smallrock
.byte 15,19 ; smallrock_crash
sprites_data_l:
.byte <bird0_sprite,<bird1_sprite
.byte <bigrock0_sprite,<bigrock1_sprite
.byte <bigrock2_sprite,<bigrock3_sprite
.byte <bigrock_crash0_sprite,<bigrock_crash1_sprite
.byte <smallrock0_sprite,<smallrock1_sprite
.byte <smallrock2_sprite,<smallrock3_sprite
.byte <smallrock_crash0_sprite,<smallrock_crash1_sprite
sprites_data_h:
.byte >bird0_sprite,>bird1_sprite
.byte >bigrock0_sprite,>bigrock1_sprite
.byte >bigrock2_sprite,>bigrock3_sprite
.byte >bigrock_crash0_sprite,>bigrock_crash1_sprite
.byte >smallrock0_sprite,>smallrock1_sprite
.byte >smallrock2_sprite,>smallrock3_sprite
.byte >smallrock_crash0_sprite,>smallrock_crash1_sprite
sprites_mask_l:
.byte <bird0_mask,<bird1_mask
.byte <bigrock0_mask,<bigrock1_mask
.byte <bigrock2_mask,<bigrock3_mask
.byte <bigrock_crash0_mask,<bigrock_crash1_mask
.byte <smallrock0_mask,<smallrock1_mask
.byte <smallrock2_mask,<smallrock3_mask
.byte <smallrock_crash0_mask,<smallrock_crash1_mask
sprites_mask_h:
.byte >bird0_mask,>bird1_mask
.byte >bigrock0_mask,>bigrock1_mask
.byte >bigrock2_mask,>bigrock3_mask
.byte >bigrock_crash0_mask,>bigrock_crash1_mask
.byte >smallrock0_mask,>smallrock1_mask
.byte >smallrock2_mask,>smallrock3_mask
.byte >smallrock_crash0_mask,>smallrock_crash1_mask
;========================================
save_xstart:
.byte 0, 0
save_xend:
.byte 0, 0
save_ystart:
.byte 0, 0
save_yend:
.byte 0, 0
; background restore parameters
; currently 4, should check this and error if we overflow
save_xstart:
.byte 0, 0, 0, 0
save_xend:
.byte 0, 0, 0, 0
save_ystart:
.byte 0, 0, 0, 0
save_yend:
.byte 0, 0, 0, 0
;========================================
; data for the enemies
bird_x:
.byte 37
bird_y:
.byte 75
rock_x:
.byte 7 ; remember, /7
rock_y:
.byte 12
rock_type: ; 0=big, 1=little
.byte 0, 1, 0
rock_state:
.byte 0, 0, 3 ; 0 = falling, 1,2 = exploding, 3 = waiting?
rock_x:
.byte 7, 12, 17 ; remember, /7
rock_y:
.byte 12,12,12

View File

@@ -28,7 +28,7 @@ enemy_sprites.inc: enemy_sprites.png
$(HGR_SPRITE) -l smallrock3_sprite enemy_sprites.png 98 91 111 105 >> enemy_sprites.inc
$(HGR_SPRITE) -l smallrock3_mask enemy_sprites.png 126 91 139 105 >> enemy_sprites.inc
$(HGR_SPRITE) -l smallrock_crash0_sprite enemy_sprites.png 98 119 111 134 >> enemy_sprites.inc
$(HGR_SPRITE) -l smallrock_crash0_mask enemy_sprites.png 127 119 140 134 >> enemy_sprites.inc
$(HGR_SPRITE) -l smallrock_crash0_mask enemy_sprites.png 126 119 139 134 >> enemy_sprites.inc
$(HGR_SPRITE) -l smallrock_crash1_sprite enemy_sprites.png 126 147 153 166 >> enemy_sprites.inc
$(HGR_SPRITE) -l smallrock_crash1_mask enemy_sprites.png 168 147 195 165 >> enemy_sprites.inc

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@@ -269,6 +269,7 @@ CURRENT_DISK = $DC
HGR_COLOR = $E4
HGR_PAGE = $E6
CURRENT_ROCK = $EF
ERASE_SPRITE_COUNT = $F0
P0 = $F1