diff --git a/BuGS/game.s b/BuGS/game.s index 6e2fd1f..bccb66a 100644 --- a/BuGS/game.s +++ b/BuGS/game.s @@ -102,7 +102,6 @@ gameDone anop drawDirtyGameTiles entry - stz numDirtyGameTiles _drawDirtyGameRow 0 _drawDirtyGameRow 1 _drawDirtyGameRow 2 diff --git a/BuGS/gameFlea.s b/BuGS/gameFlea.s index fa0965c..c1cef89 100644 --- a/BuGS/gameFlea.s +++ b/BuGS/gameFlea.s @@ -25,22 +25,19 @@ FLEA_FAST_UPDATES_PER_TILE equ TILE_PIXEL_HEIGHT/4-1 drawFlea entry lda fleaState - beq drawFlea_done - + bne drawFlea_cont + rtl + +drawFlea_cont anop ldy fleaScreenOffset ldx fleaSprite jsl fleaJump - ldy numDirtyGameTiles + _dirtyGameOrNonGameTile fleaTileOffsets + _dirtyGameOrNonGameTile fleaTileOffsets+2 + _dirtyGameOrNonGameTile fleaTileOffsets+4 + _dirtyGameOrNonGameTile fleaTileOffsets+6 - _dirtyGameTileWithY fleaTileOffsets - _dirtyGameTileWithY fleaTileOffsets+2 - _dirtyGameTileWithY fleaTileOffsets+4 - _dirtyGameTileWithY fleaTileOffsets+6 - - sty numDirtyGameTiles - -drawFlea_done anop rtl diff --git a/BuGS/gameSegments.s b/BuGS/gameSegments.s index f131854..daab9c1 100644 --- a/BuGS/gameSegments.s +++ b/BuGS/gameSegments.s @@ -60,10 +60,10 @@ drawSegments_handleTiles anop asl a tay - _dirtyGameTile segmentTileOffsets - _dirtyGameTile segmentTileOffsets+2 - _dirtyGameTile segmentTileOffsets+4 - _dirtyGameTile segmentTileOffsets+6 + _dirtyGameTileWithY segmentTileOffsets + _dirtyGameTileWithY segmentTileOffsets+2 + _dirtyGameTileWithY segmentTileOffsets+4 + _dirtyGameTileWithY segmentTileOffsets+6 plx drawSegments_skipSegment anop diff --git a/BuGS/global.macros b/BuGS/global.macros index 2e471ed..5a11c3c 100644 --- a/BuGS/global.macros +++ b/BuGS/global.macros @@ -9,7 +9,6 @@ macro _drawDirtyGameRow &rowNum - trace on short i,m lda >BORDER_COLOUR_REGISTER and #$f0 @@ -64,48 +63,16 @@ _drawDirtyGameRow_wait&rowNum anop _drawDirtyGameRow_skip&tileOffset anop &tileOffset seta &tileOffset+2 aif &tileOffset<&lastTileOffset,.drawDirtyGameRowLoop - trace off mend ; This macro uses the Y register as an index into the tile offsets. This is ; needed for segments because each segment has their own dirty tile offsets. - macro - _dirtyGameTile &tileOffset - - ldx &tileOffset,y - lda tileDirty,x - bne _dirtyGameTile_skip&SYSCNT - lda #TILE_STATE_DIRTY - sta tileDirty,x - txa - ldx numDirtyGameTiles - sta dirtyGameTiles,x - inx - inx - stx numDirtyGameTiles - -_dirtyGameTile_skip&SYSCNT anop - mend - - - -; Call this with Y already loaded with the numDirtyGameTiles. Also, the new -; numDirtyGameTiles is left in Y. The caller must store it. macro _dirtyGameTileWithY &tileOffset - - ldx &tileOffset - lda tileDirty,x - bne _dirtyGameTileWithY_skip&SYSCNT + ldx &tileOffset,y lda #TILE_STATE_DIRTY sta tileDirty,x - txa - sta dirtyGameTiles,y - iny - iny - -_dirtyGameTileWithY_skip&SYSCNT anop mend @@ -113,23 +80,20 @@ _dirtyGameTileWithY_skip&SYSCNT anop _dirtyGameOrNonGameTile &tileOffset ldx &tileOffset + cpx #RHS_FIRST_TILE_OFFSET + bge _dirtyGameTile_nonGame&SYSCNT + lda #TILE_STATE_DIRTY + sta tileDirty,x + bra _dirtyGameTile_skip&SYSCNT + +_dirtyGameTile_nonGame&SYSCNT anop lda tileDirty,x bne _dirtyGameTile_skip&SYSCNT lda #TILE_STATE_DIRTY sta tileDirty,x - txa - cmp #RHS_FIRST_TILE_OFFSET - bge _dirtyGameTile_nonGame&SYSCNT - ldy numDirtyGameTiles - sta dirtyGameTiles,y - iny - iny - sty numDirtyGameTiles - bra _dirtyGameTile_skip&SYSCNT - -_dirtyGameTile_nonGame&SYSCNT anop ldy numDirtyNonGameTiles + txa sta dirtyNonGameTiles,y iny iny diff --git a/BuGS/tiles.c b/BuGS/tiles.c index 3834adc..aa1eefc 100644 --- a/BuGS/tiles.c +++ b/BuGS/tiles.c @@ -37,12 +37,7 @@ #define STARTING_NUM_MUSHROOMS 30 #define STARTING_NUM_PLAYERS 3 -#define ADD_DIRTY_GAME_TILE(tileNum) \ - if (!tileDirty[tileNum]) { \ - tileDirty[tileNum] = 1; \ - dirtyGameTiles[numDirtyGameTiles / 2] = ((tileNum) * sizeof(word)); \ - numDirtyGameTiles += 2; \ - } +#define ADD_DIRTY_GAME_TILE(tileNum) tileDirty[tileNum] = 1; #define ADD_DIRTY_NON_GAME_TILE(tileNum) \ if (!tileDirty[tileNum]) { \ @@ -61,9 +56,6 @@ tTileOffset tileBelow[TOTAL_NUM_TILES]; tTileOffset tileLeft[TOTAL_NUM_TILES]; tTileOffset tileRight[TOTAL_NUM_TILES]; -tTileOffset dirtyGameTiles[NUM_GAME_TILES + GAME_NUM_TILES_TALL]; -word numDirtyGameTiles; - tTileOffset dirtyNonGameTiles[NUM_NON_GAME_TILES]; word numDirtyNonGameTiles; @@ -179,7 +171,6 @@ void initTiles(void) } } - numDirtyGameTiles = 0; numDirtyNonGameTiles = 0; } diff --git a/BuGS/tiles.h b/BuGS/tiles.h index 24ced39..445d9ce 100644 --- a/BuGS/tiles.h +++ b/BuGS/tiles.h @@ -113,8 +113,6 @@ extern tTileOffset tileBelow[TOTAL_NUM_TILES]; extern tTileOffset tileLeft[TOTAL_NUM_TILES]; extern tTileOffset tileRight[TOTAL_NUM_TILES]; -extern tTileOffset dirtyGameTiles[NUM_GAME_TILES + GAME_NUM_TILES_TALL]; -extern word numDirtyGameTiles; extern tTileOffset dirtyNonGameTiles[NUM_NON_GAME_TILES]; extern word numDirtyNonGameTiles;