dos33fsprogs/mode7/starfield_demo.s

143 lines
3.4 KiB
ArmAsm
Raw Normal View History

.include "zp.inc"
;===========
; CONSTANTS
;===========
NUMSTARS EQU 16
;=====================
; Starfield
;=====================
;================================
; Clear screen and setup graphics
;================================
jsr clear_screens ; clear top/bottom of page 0/1
jsr set_gr_page0
; Initialize the 2kB of multiply lookup tables
jsr init_multiply_tables
;===============
; Init Variables
;===============
lda #0
sta DRAW_PAGE
starfield_loop:
;===============
; draw stars
;===============
draw_stars:
ldx #NUMSTARS
lda #20
ldy #20
;================================
; put address in GBASL/GBASH
; Xcoord in A, Ycoord in Y
sta TEMPY
lda gr_offsets,Y ; lookup low-res memory address ; 4
clc ; 2
adc TEMPY ; 3
sta GBASL ; 3
iny ; 2
lda gr_offsets,Y ; 4
adc DRAW_PAGE ; add in draw page offset ; 3
sta GBASH ; 3
;===========
;
ldy #0
lda #$ff
sta (GBASL),Y
dex
bne draw_stars
starfield_keyboard:
jsr get_key ; get keypress ; 6
lda LASTKEY ; 3
cmp #('Q') ; if quit, then return
bne skipskip
rts
skipskip:
;==================
; flip pages
;==================
jsr page_flip ; 6
;==================
; loop forever
;==================
jmp starfield_loop ; 3
;===============================================
; External modules
;===============================================
.include "../asm_routines/hlin_clearscreen.s"
.include "../asm_routines/pageflip.s"
.include "../asm_routines/gr_setpage.s"
.include "../asm_routines/keypress.s"
.include "../asm_routines/gr_putsprite.s"
.include "../asm_routines/text_print.s"
;===============================================
; Variables
;===============================================
.include "../asm_routines/multiply_fast.s"
;======================
; some "random" numbers
;======================
random_table:
.byte 103,198,105,115, 81,255, 74,236, 41,205,186,171,242,251,227, 70
.byte 124,194, 84,248, 27,232,231,141,118, 90, 46 ,99, 51,159,201,154
.byte 102, 50, 13,183, 49, 88,163, 90, 37, 93, 5, 23, 88,233, 94,212
.byte 171,178,205,198,155,180, 84, 17, 14,130,116, 65, 33, 61,220,135
.byte 112,233, 62,161, 65,225,252,103, 62, 1,126,151,234,220,107,150
.byte 143, 56, 92, 42,236,176, 59,251, 50,175, 60, 84,236, 24,219, 92
.byte 2, 26,254, 67,251,250,170, 58,251, 41,209,230, 5, 60,124,148
.byte 117,216,190, 97,137,249, 92,187,168,153, 15,149,177,235,241,179
.byte 5,239,247, 0,233,161, 58,229,202, 11,203,208, 72, 71,100,189
.byte 31, 35, 30,168, 28,123,100,197, 20,115, 90,197, 94, 75,121, 99
.byte 59,112,100, 36, 17,158, 9,220,170,212,172,242, 27, 16,175, 59
.byte 51,205,227, 80, 72, 71, 21, 92,187,111, 34, 25,186,155,125,245
.byte 11,225, 26, 28,127, 35,248, 41,248,164, 27, 19,181,202, 78,232
.byte 152, 50, 56,224,121, 77, 61, 52,188, 95, 78,119,250,203,108, 5
.byte 172,134, 33, 43,170, 26, 85,162,190,112,181,115, 59, 4, 92,211
.byte 54,148,179,175,226,240,228,158, 79, 50, 21, 73,253,130, 78,169
z_table:
; 1/16.0 - 1/12.25
.byte $10,$10,$10,$10,$11,$11,$11,$11,$12,$12,$12,$13,$13,$14,$14,$14
; 1/12.0 - 1/8.25
.byte $15,$15,$16,$16,$17,$17,$18,$18,$19,$1A,$1A,$1B,$1C,$1D,$1E,$1F
; 1/8.0 - 1/4.25
.byte $20,$21,$22,$23,$24,$25,$27,$28,$2A,$2C,$2E,$30,$33,$35,$38,$3C
; 1/4.0 - 1/0.25
.byte $40,$44,$49,$4E,$55,$5D,$66,$71,$80,$92,$AA,$CC,$00,$55,$00,$00