From 4da5a2631e893b8d73259409eb9585b958558f2d Mon Sep 17 00:00:00 2001 From: Rob McMullen Date: Fri, 20 Jul 2018 18:31:56 -0700 Subject: [PATCH] Added ACTOR_FLAG to set high bit on text page at enemy location --- constants.s | 2 ++ fujirun-v1.dsk | Bin 143360 -> 143360 bytes logic.s | 22 ++++++++++++++++++++++ main.s | 2 ++ platform-apple2.s | 10 ++++++---- 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/constants.s b/constants.s index 089f248..133b36e 100644 --- a/constants.s +++ b/constants.s @@ -52,6 +52,8 @@ TILE_HORZ = TILE_LEFT|TILE_RIGHT TILE_VERT = TILE_UP|TILE_DOWN DIR_MASK = $0f TILE_DOT = $10 +ACTOR_FLAG = $80 +ACTOR_FLAG_MASK = $7f CLEAR_TILE_DOT = $ef ;%11101111 LEFT_TILE = TILE_DOT|TILE_RIGHT diff --git a/fujirun-v1.dsk b/fujirun-v1.dsk index 5010e79fd7ec7c9743a6e9890d883256438952eb..fceeafbb062e1ca4567d8c1764cf6bfb8693c985 100644 GIT binary patch delta 10129 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 J=Yxu@{{syWCUpP+ delta 10196 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 S^-Fm_io5^+HSB}(jQ;_Z+dFXp diff --git a/logic.s b/logic.s index 1ec95dc..8c5e602 100644 --- a/logic.s +++ b/logic.s @@ -108,6 +108,28 @@ has_dot nop and #TILE_DOT rts +clear_actor_flag nop + lda actor_row,x + tay + jsr mazerow + lda actor_col,x + tay + lda (mazeaddr),y + and #ACTOR_FLAG_MASK + sta (mazeaddr),y + rts + +set_actor_flag nop + lda actor_row,x + tay + jsr mazerow + lda actor_col,x + tay + lda (mazeaddr),y + ora #ACTOR_FLAG + sta (mazeaddr),y + rts + ; # Determine the tile location given the direction of the actor's movement ; def get_next_tile(r, c, dir): diff --git a/main.s b/main.s index 4ce192b..cdc394e 100644 --- a/main.s +++ b/main.s @@ -230,7 +230,9 @@ game_loop nop lda actor_active,x bmi ?player ; negative = end beq ?enemy ; zero = skip + jsr clear_actor_flag jsr move_enemy + jsr set_actor_flag jmp ?enemy ?player lda #0 diff --git a/platform-apple2.s b/platform-apple2.s index 50f568d..28f483a 100644 --- a/platform-apple2.s +++ b/platform-apple2.s @@ -460,13 +460,14 @@ draw_to_page2 lda #$60 ; image with tile 15 when necessary fastfont nop cmp #12 - bne fastfont_smc + bne ?2 txa and #1 bne ?1 lda #15 - bne fastfont_smc + bne ?2 ?1 lda #12 +?2 and #ACTOR_FLAG_MASK fastfont_smc jmp $ffff ; restore a horizontal segment from the text page to the current screen @@ -481,13 +482,14 @@ fasttiles ldx param_col sta fasttiles_row_smc+1 fasttiles_row_smc lda $ffff,x cmp #12 - bne fasttiles_smc + bne ?2 txa and #1 bne ?1 lda #15 - bne fasttiles_smc + bne ?2 ?1 lda #12 +?2 and #ACTOR_FLAG_MASK fasttiles_smc jsr $ffff inx dec param_count