dos33fsprogs/demos/second/part10_lens_rotozoom/roto.s

109 lines
1.0 KiB
ArmAsm
Raw Normal View History

2023-08-15 20:02:53 +00:00
do_rotozoom:
2023-08-15 20:02:53 +00:00
;=================================
; main loop
lda #0
sta ANGLE
sta SCALE_F
sta FRAMEL
lda #1
sta SCALE_I
main_loop:
jsr rotozoom
jsr page_flip
;============================
; wait for end
;============================
lda #47
jsr wait_for_pattern
bcc no_keypress
2023-08-15 20:02:53 +00:00
rts
2023-08-15 20:02:53 +00:00
no_keypress:
clc
lda FRAMEL
adc direction
sta FRAMEL
cmp #$f8
beq back_at_zero
cmp #33
beq at_far_end
bne done_reverse
back_at_zero:
at_far_end:
; change bg color
lda roto_color_even_smc+1
clc
adc #$01
and #$0f
sta roto_color_even_smc+1
lda roto_color_odd_smc+1
clc
adc #$10
and #$f0
sta roto_color_odd_smc+1
; reverse direction
lda direction
eor #$ff
clc
adc #1
sta direction
lda scaleaddl
eor #$ff
clc
adc #1
sta scaleaddl
lda scaleaddh
eor #$ff
adc #0
sta scaleaddh
done_reverse:
clc
lda ANGLE
adc direction
and #$1f
sta ANGLE
clc
lda SCALE_F
adc scaleaddl
sta SCALE_F
lda SCALE_I
adc scaleaddh
sta SCALE_I
jmp main_loop
direction: .byte $01
scaleaddl: .byte $10
scaleaddh: .byte $00