diff --git a/mode7/Makefile b/mode7/Makefile index 360d6ce0..52c99912 100644 --- a/mode7/Makefile +++ b/mode7/Makefile @@ -10,12 +10,14 @@ $(DOS33): cd ../dos33fs-utils && make mode7.dsk: $(DOS33) MODE7_ISLAND MODE7_CHECKERBOARD MODE7_RAINBOW \ - SCROLL_DEMO SKY_DEMO + SCROLL_DEMO SKY_DEMO STARFIELD_DEMO $(DOS33) -y mode7.dsk BSAVE -a 0x1000 MODE7_ISLAND $(DOS33) -y mode7.dsk BSAVE -a 0x1000 MODE7_CHECKERBOARD $(DOS33) -y mode7.dsk BSAVE -a 0x1000 MODE7_RAINBOW $(DOS33) -y mode7.dsk BSAVE -a 0x1000 SCROLL_DEMO $(DOS33) -y mode7.dsk BSAVE -a 0x1000 SKY_DEMO + $(DOS33) -y mode7.dsk BSAVE -a 0x1000 STARFIELD_DEMO + ### @@ -86,6 +88,16 @@ sky_demo.o: sky_demo.s \ ../asm_routines/gr_setpage.s ca65 -o sky_demo.o sky_demo.s -l sky_demo.lst +STARFIELD_DEMO: starfield_demo.o + ld65 -o STARFIELD_DEMO starfield_demo.o -C ./apple2_1000.inc + +starfield_demo.o: starfield_demo.s \ + ../asm_routines/hlin_clearscreen.s \ + ../asm_routines/gr_scroll.s \ + ../asm_routines/pageflip.s \ + ../asm_routines/gr_setpage.s + ca65 -o starfield_demo.o starfield_demo.s -l starfield_demo.lst + scroller: scroller.o $(CC) $(LFLAGS) -o scroller scroller.o diff --git a/mode7/starfield_demo.s b/mode7/starfield_demo.s new file mode 100644 index 00000000..e1509ca6 --- /dev/null +++ b/mode7/starfield_demo.s @@ -0,0 +1,72 @@ +.include "zp.inc" + +;=========== +; CONSTANTS +;=========== + + ;===================== + ; 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 + +starfield_loop: + +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" + +