mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-28 09:30:41 +00:00
98 lines
1.2 KiB
ArmAsm
98 lines
1.2 KiB
ArmAsm
;===============================
|
|
; rotate intro -- rotate screen
|
|
;===============================
|
|
|
|
rotate_intro:
|
|
|
|
; init the multiply routines
|
|
|
|
; jsr init_multiply_tables
|
|
|
|
; first copy current screen to background
|
|
|
|
jsr gr_copy_current_to_offscreen_40x40
|
|
|
|
lda #0
|
|
sta ANGLE
|
|
sta SCALE_F
|
|
sta FRAMEL
|
|
|
|
lda #1
|
|
sta SCALE_I
|
|
|
|
rotate_loop:
|
|
|
|
jsr rotozoom
|
|
jsr page_flip
|
|
|
|
; zoom out
|
|
|
|
sec
|
|
lda SCALE_F
|
|
sbc #$10
|
|
sta SCALE_F
|
|
lda SCALE_I
|
|
sbc #$00
|
|
sta SCALE_I
|
|
|
|
dec ANGLE
|
|
lda ANGLE
|
|
and #$1f
|
|
sta ANGLE
|
|
|
|
; rotate counter-clockwise
|
|
|
|
cmp #16
|
|
beq done_rotate
|
|
|
|
jmp rotate_loop
|
|
|
|
done_rotate:
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
|
|
;=========================================================
|
|
; gr_copy_current_to_offscreen 40x40
|
|
;=========================================================
|
|
; Copy draw page to $c00
|
|
; Take image in DRAW_PAGE
|
|
; Copy to $c00
|
|
; Actually copy lines 0..39
|
|
; Don't over-write bottom 4 lines of text
|
|
gr_copy_current_to_offscreen_40x40:
|
|
|
|
ldx #0
|
|
gco_40x40_loop:
|
|
lda gr_offsets,X
|
|
sta OUTL
|
|
sta INL
|
|
lda gr_offsets+1,X
|
|
clc
|
|
adc DRAW_PAGE
|
|
sta OUTH
|
|
|
|
lda gr_offsets+1,X
|
|
clc
|
|
adc #$8
|
|
sta INH
|
|
|
|
ldy #39
|
|
gco_40x40_inner:
|
|
lda (OUTL),Y
|
|
sta (INL),Y
|
|
|
|
dey
|
|
bpl gco_40x40_inner
|
|
|
|
inx
|
|
inx
|
|
|
|
cpx #40
|
|
bne gco_40x40_loop
|
|
|
|
rts ; 6
|