From 632fea463fbbc861e5c62c6743e0422d9e00967f Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sun, 31 Dec 2017 22:05:54 -0500 Subject: [PATCH] mode7: update demo --- mode7/mode7.dsk | Bin 143360 -> 143360 bytes mode7/starfield_demo.s | 80 ++++++++++++++++++++++++++++++++++------- mode7/zp.inc | 4 +++ 3 files changed, 72 insertions(+), 12 deletions(-) diff --git a/mode7/mode7.dsk b/mode7/mode7.dsk index d501d1f9361dc7d43fd36e44ff1823db11ae268e..2335c3ac748aa6305d1cae00baee7e1f4c928102 100644 GIT binary patch delta 10973 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 diff --git a/mode7/starfield_demo.s b/mode7/starfield_demo.s index 77a9be24..0d5f7b37 100644 --- a/mode7/starfield_demo.s +++ b/mode7/starfield_demo.s @@ -29,6 +29,11 @@ NUMSTARS EQU 16 lda #0 ; 2 sta DRAW_PAGE ; 3 sta RANDOM_POINTER ; 3 + sta STATE + + lda #5 + sta SPEED + ; always multiply with low byte as zero sta NUM2L ; 3 @@ -50,12 +55,46 @@ starfield_loop: ;=============== ; clear screen ;=============== + + lda STATE + + cmp #5 + bne quick_skip + + lda #0 + sta STATE + + lda #5 + sta SPEED + +quick_skip: + + cmp #3 + beq no_clear + + cmp #1 + bne black_back + + dec SPEED + lda SPEED + bne not_done + + inc STATE +not_done: + lda #COLOR_BOTH_LIGHTBLUE + jmp back_color + +black_back: + lda #0 +back_color: + sta clear_all_color+1 + jsr clear_all ; 6+ ; 6047 ;=============== ; draw stars ;=============== - +no_clear: ; start at 15 and count down (rather than 0 and count up) ldx #(NUMSTARS-1) ; 2 @@ -211,17 +250,6 @@ move_loop_skip: -starfield_keyboard: - -; jsr get_key ; get keypress ; 6 - -; lda LASTKEY ; 3 - -; beq starfield_keyboard - -; cmp #('Q') ; if quit, then return -; bne skipskip -; rts skipskip: @@ -244,6 +272,34 @@ skipskip: jsr page_flip ; 6 + + +starfield_keyboard: + + lda STATE ; if 0, wait + bne check_keyboard + +first_press: + jsr get_key ; get keypress ; 6 + lda LASTKEY + + beq first_press + + inc STATE + + jmp done_keyboard + +check_keyboard: + + jsr get_key ; get keypress ; 6 + lda LASTKEY + beq done_keyboard + + bit SPEAKER + inc STATE + +done_keyboard: + ;================== ; loop forever ;================== diff --git a/mode7/zp.inc b/mode7/zp.inc index 0d865cdd..8e7f29e0 100644 --- a/mode7/zp.inc +++ b/mode7/zp.inc @@ -96,6 +96,7 @@ LAST_MAP_COLOR EQU $89 DRAW_SKY EQU $8A COLOR_MASK EQU $8B RANDOM_POINTER EQU $8C +STATE EQU $8D SHIPY EQU $E4 @@ -106,6 +107,9 @@ KEYRESET EQU $C010 CLR80COL EQU $C000 ; PAGE0/PAGE1 normal SET80COL EQU $C001 ; PAGE0/PAGE1 switches PAGE0 in Aux instead EIGHTYCOL EQU $C00D + +SPEAKER EQU $C030 + SET_GR EQU $C050 SET_TEXT EQU $C051 FULLGR EQU $C052