mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-01-13 07:29:54 +00:00
xmas2019: work on snow
This commit is contained in:
parent
b87f6bd166
commit
90343afb67
126
xmas_2019/snow.s
126
xmas_2019/snow.s
@ -62,8 +62,8 @@ display_loop:
|
|||||||
;=========================
|
;=========================
|
||||||
; erase old snow
|
; erase old snow
|
||||||
;=========================
|
;=========================
|
||||||
; 2 + (35+29+7)*NUMFLAKES - 1
|
; 2 + (40+38+7)*NUMFLAKES - 1
|
||||||
; 1 +71*NUMFLAKES = 711
|
; 1 + 85*NUMFLAKES = 851
|
||||||
|
|
||||||
ldx #0 ; 2
|
ldx #0 ; 2
|
||||||
erase_loop:
|
erase_loop:
|
||||||
@ -75,12 +75,15 @@ erase_loop:
|
|||||||
lda snow_x,X ; 4+
|
lda snow_x,X ; 4+
|
||||||
tay ; 2
|
tay ; 2
|
||||||
lda div_7_q,Y ; 4+
|
lda div_7_q,Y ; 4+
|
||||||
|
|
||||||
ldy TEMPY ; 3
|
ldy TEMPY ; 3
|
||||||
clc ; 2
|
clc ; 2
|
||||||
adc hgr_offsets_l,Y ; 4+
|
adc hgr_offsets_l,Y ; 4+
|
||||||
sta GBASL ; 3
|
sta GBASL ; 3
|
||||||
|
adc #30 ; 2
|
||||||
|
sta BASL ; 3
|
||||||
;=============
|
;=============
|
||||||
; 35
|
; 40
|
||||||
|
|
||||||
lda snow_y,X ; 4+
|
lda snow_y,X ; 4+
|
||||||
asl ; 2
|
asl ; 2
|
||||||
@ -89,11 +92,14 @@ erase_loop:
|
|||||||
clc ; 2
|
clc ; 2
|
||||||
adc hgr_offsets_h,Y ; 4
|
adc hgr_offsets_h,Y ; 4
|
||||||
sta GBASH ; 3
|
sta GBASH ; 3
|
||||||
|
sta BASH ; 3
|
||||||
lda #0 ; 2
|
lda #0 ; 2
|
||||||
tay ; 2
|
tay ; 2
|
||||||
sta (GBASL),Y ; 6
|
sta (GBASL),Y ; 6
|
||||||
|
sta (BASL),Y ; 6
|
||||||
|
|
||||||
;============
|
;============
|
||||||
; 29
|
; 38
|
||||||
|
|
||||||
inx ; 2
|
inx ; 2
|
||||||
cpx #NUMFLAKES ; 2
|
cpx #NUMFLAKES ; 2
|
||||||
@ -105,51 +111,105 @@ erase_loop:
|
|||||||
|
|
||||||
;==========================
|
;==========================
|
||||||
; move snow
|
; move snow
|
||||||
|
;
|
||||||
|
; 2 + NUM_FLAKES*(9+17+56+15+11+7) -1
|
||||||
|
; 1 + NUM_FLAKES*115 = 1151
|
||||||
|
|
||||||
ldx #0
|
ldx #0 ; 2
|
||||||
move_snow:
|
move_snow:
|
||||||
lda snow_y,X ; inc to next line
|
|
||||||
cmp #191
|
|
||||||
bne just_inc
|
|
||||||
|
|
||||||
lda #0
|
; Check if off edge of screen
|
||||||
sta snow_y,X
|
|
||||||
jmp done_inc
|
lda snow_y,X ; 4+
|
||||||
|
cmp #160 ; 2
|
||||||
|
beq snow_new_y ; 3
|
||||||
|
;==========
|
||||||
|
; 9
|
||||||
|
|
||||||
|
|
||||||
|
no_new_y:
|
||||||
|
; -1
|
||||||
|
lda SEEDH ; 3
|
||||||
|
lda SEEDH ; 3
|
||||||
|
lda SEEDH ; 3
|
||||||
|
lda SEEDH ; 3
|
||||||
|
lda SEEDH ; 3
|
||||||
|
jmp just_inc ; 3
|
||||||
|
;============
|
||||||
|
; 17
|
||||||
|
|
||||||
|
snow_new_y:
|
||||||
|
; out of bounds, get new
|
||||||
|
lda #32 ; 2
|
||||||
|
sta snow_y,X ; 5
|
||||||
|
lda SEEDH ; 3
|
||||||
|
and #$3f ; 2
|
||||||
|
sta snow_x,X ; 5
|
||||||
|
;============
|
||||||
|
; 17
|
||||||
just_inc:
|
just_inc:
|
||||||
|
|
||||||
jsr random16
|
jsr random16 ; 6+42
|
||||||
lda SEEDL
|
lda SEEDL ; 3
|
||||||
and #$f
|
and #$f ; 2
|
||||||
|
beq snow_left ; 3
|
||||||
|
;===============
|
||||||
|
; 56
|
||||||
|
|
||||||
beq snow_left
|
; if left = 6 = 6 + (9) = 15
|
||||||
cmp #$1
|
; if right = 4+9 = 13 + (2) = 15
|
||||||
beq snow_right
|
; else = 4+8 = 12 + (3) = 15
|
||||||
|
; -1
|
||||||
|
cmp #$1 ; 2
|
||||||
|
beq snow_right ; 3
|
||||||
|
;===============
|
||||||
|
; 4
|
||||||
|
|
||||||
inc snow_y,X
|
snow_else:
|
||||||
|
lda SEEDL ; nop ; 3
|
||||||
jmp snow_no
|
; -1
|
||||||
|
inc snow_y,X ; 6
|
||||||
|
jmp snow_no ; 3
|
||||||
|
;===============
|
||||||
|
; 8+3
|
||||||
|
|
||||||
snow_right:
|
snow_right:
|
||||||
inc snow_x,X
|
nop ; 2
|
||||||
jmp snow_no
|
inc snow_x,X ; 6
|
||||||
|
jmp snow_no ; 3
|
||||||
|
;============
|
||||||
|
; 9+2
|
||||||
|
|
||||||
snow_left:
|
snow_left:
|
||||||
dec snow_x,X
|
dec snow_x,X ; 6
|
||||||
|
lda SEEDL ; nop
|
||||||
|
lda SEEDL ; nop
|
||||||
|
lda SEEDL ; nop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
snow_no:
|
snow_no:
|
||||||
|
lda snow_x,X ; 4+
|
||||||
|
and #$3f ; 2
|
||||||
|
sta snow_x,X ; 5
|
||||||
|
;====
|
||||||
|
; 11
|
||||||
|
|
||||||
done_inc:
|
done_inc:
|
||||||
inx
|
inx ; 2
|
||||||
cpx #NUMFLAKES
|
cpx #NUMFLAKES ; 2
|
||||||
bne move_snow
|
bne move_snow ; 3
|
||||||
|
;===========
|
||||||
|
; 7
|
||||||
|
|
||||||
|
; -1
|
||||||
|
|
||||||
;=========================
|
;=========================
|
||||||
; draw new snow
|
; draw new snow
|
||||||
;=========================
|
;=========================
|
||||||
; 2+ (35+22+19+7)*NUMFLAKES -1
|
; 2+ (40+22+28+7)*NUMFLAKES -1
|
||||||
; 1+83*NUMFLAKES = 831
|
; 1+97*NUMFLAKES = 971
|
||||||
|
|
||||||
ldx #0 ; 2
|
ldx #0 ; 2
|
||||||
draw_loop:
|
draw_loop:
|
||||||
@ -165,8 +225,10 @@ draw_loop:
|
|||||||
clc ; 2
|
clc ; 2
|
||||||
adc hgr_offsets_l,Y ; 4+
|
adc hgr_offsets_l,Y ; 4+
|
||||||
sta GBASL ; 3
|
sta GBASL ; 3
|
||||||
|
adc #30 ; 2
|
||||||
|
sta BASL ; 3
|
||||||
;===========
|
;===========
|
||||||
; 35
|
; 40
|
||||||
|
|
||||||
lda snow_y,X ; 4+
|
lda snow_y,X ; 4+
|
||||||
asl ; 2
|
asl ; 2
|
||||||
@ -175,8 +237,9 @@ draw_loop:
|
|||||||
clc ; 2
|
clc ; 2
|
||||||
adc hgr_offsets_h,Y ; 4+
|
adc hgr_offsets_h,Y ; 4+
|
||||||
sta GBASH ; 3
|
sta GBASH ; 3
|
||||||
|
sta BASH ; 3
|
||||||
;=============
|
;=============
|
||||||
; 19
|
; 22
|
||||||
|
|
||||||
ldy snow_x,X ; 4+
|
ldy snow_x,X ; 4+
|
||||||
lda div_7_r,Y ; 4+
|
lda div_7_r,Y ; 4+
|
||||||
@ -185,8 +248,9 @@ draw_loop:
|
|||||||
|
|
||||||
ldy #0 ; 2
|
ldy #0 ; 2
|
||||||
sta (GBASL),Y ; 6
|
sta (GBASL),Y ; 6
|
||||||
|
sta (BASL),Y ; 6
|
||||||
;=============
|
;=============
|
||||||
; 22
|
; 28
|
||||||
|
|
||||||
inx ; 2
|
inx ; 2
|
||||||
cpx #NUMFLAKES ; 2
|
cpx #NUMFLAKES ; 2
|
||||||
|
Loading…
x
Reference in New Issue
Block a user