mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-01 01:06:33 +00:00
171 lines
2.4 KiB
ArmAsm
171 lines
2.4 KiB
ArmAsm
|
; rotozoom with cycling plasma texture
|
||
|
;
|
||
|
|
||
|
; TODO:
|
||
|
; make angle 64 degrees?
|
||
|
; remove scaling step?
|
||
|
; cycle between all four color schemes?
|
||
|
|
||
|
|
||
|
|
||
|
.include "zp.inc"
|
||
|
.include "hardware.inc"
|
||
|
|
||
|
;================================
|
||
|
; Clear screen and setup graphics
|
||
|
;================================
|
||
|
|
||
|
jsr HOME
|
||
|
bit PAGE0 ; set page 0
|
||
|
bit LORES ; Lo-res graphics
|
||
|
bit FULLGR ; mixed gr/text mode
|
||
|
bit SET_GR ; set graphics
|
||
|
|
||
|
lda #0
|
||
|
sta DISP_PAGE
|
||
|
lda #4
|
||
|
sta DRAW_PAGE
|
||
|
|
||
|
;===================================
|
||
|
; Clear top/bottom of page 0 and 1
|
||
|
;===================================
|
||
|
|
||
|
; jsr clear_screens
|
||
|
|
||
|
;===================================
|
||
|
; init the multiply tables
|
||
|
;===================================
|
||
|
|
||
|
jsr init_multiply_tables
|
||
|
|
||
|
;======================
|
||
|
; init plasma texture
|
||
|
;======================
|
||
|
|
||
|
jsr init_plasma_texture
|
||
|
|
||
|
;=================================
|
||
|
; main loop
|
||
|
|
||
|
lda #0
|
||
|
sta ANGLE
|
||
|
sta SCALE_F
|
||
|
sta FRAMEL
|
||
|
|
||
|
lda #1
|
||
|
sta SCALE_I
|
||
|
|
||
|
main_loop:
|
||
|
jsr update_plasma
|
||
|
|
||
|
jsr rotozoom
|
||
|
|
||
|
jsr page_flip
|
||
|
|
||
|
wait_for_keypress:
|
||
|
; lda KEYPRESS
|
||
|
; bpl wait_for_keypress
|
||
|
; bit KEYRESET
|
||
|
|
||
|
|
||
|
clc
|
||
|
lda FRAMEL
|
||
|
adc direction
|
||
|
sta FRAMEL
|
||
|
|
||
|
cmp #$f8
|
||
|
beq back_at_zero
|
||
|
cmp #33
|
||
|
; beq at_far_end
|
||
|
beq back_at_zero
|
||
|
bne done_reverse
|
||
|
|
||
|
back_at_zero:
|
||
|
; change plasma color
|
||
|
|
||
|
inc which_color
|
||
|
lda which_color
|
||
|
cmp #4
|
||
|
bne refresh_color
|
||
|
lda #0
|
||
|
sta which_color
|
||
|
refresh_color:
|
||
|
asl
|
||
|
tay
|
||
|
|
||
|
lda colorlookup,Y
|
||
|
sta color_lookup_smc+1
|
||
|
; sta colorlookup2_smc+1
|
||
|
lda colorlookup+1,Y
|
||
|
sta color_lookup_smc+2
|
||
|
; sta colorlookup2_smc+2
|
||
|
|
||
|
at_far_end:
|
||
|
|
||
|
; change bg color
|
||
|
|
||
|
; 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 #$3f
|
||
|
sta ANGLE
|
||
|
|
||
|
; increment zoom
|
||
|
|
||
|
; 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
|
||
|
|
||
|
;===============================================
|
||
|
; External modules
|
||
|
;===============================================
|
||
|
|
||
|
.include "rotozoom_texture.s"
|
||
|
.include "plasma.s"
|
||
|
|
||
|
.include "gr_pageflip.s"
|
||
|
.include "gr_fast_clear.s"
|
||
|
.include "gr_copy.s"
|
||
|
;.include "decompress_fast_v2.s"
|
||
|
|
||
|
.include "gr_offsets.s"
|
||
|
.include "c00_scrn_offsets.s"
|
||
|
|
||
|
.include "multiply_fast.s"
|
||
|
|
||
|
;===============================================
|
||
|
; Data
|
||
|
;===============================================
|