.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