From 99d08367c4bd719dbea0097fb499b12fb5fbc48f Mon Sep 17 00:00:00 2001 From: Pecusx Date: Thu, 14 Jul 2022 00:13:36 +0200 Subject: [PATCH] PM code optimisation --- grafproc.asm | 35 +++++++++++------------------------ scorch.xex | Bin 41210 -> 41159 bytes 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/grafproc.asm b/grafproc.asm index f8de6ab..140feeb 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -689,51 +689,37 @@ NoMissile cpx #$5 bcs PMForTank6 ; clear sprite and put 3 lines on the tank at the same time + ldx #3 ; three lines of PM ClearPM cpy temp bne ZeroesToGo - lda (xbyte),y - and #%11110000 ; only for equal speeds - ora #%00001111 ; (2 bits set) we set on two pixels in three lines - sta (xbyte),y - dey - lda (xbyte),y - and #%11110000 ; only for equal speeds - ora #%00001111 ; (2 bits set) we set on two pixels in three lines - sta (xbyte),y - dey - lda (xbyte),y - and #%11110000 ; only for equal speeds +@ lda (xbyte),y + and #%11110000 ora #%00001111 ; (2 bits set) we set on two pixels in three lines sta (xbyte),y dey + dex + bne @- ZeroesToGo lda (xbyte),y - and #%11110000 ; only for equal speeds + and #%11110000 sta (xbyte),y dey bne ClearPM beq NoPlayerMissile PMForTank6 ; clear sprite and put 3 lines on the tank at the same time + ldx #3 ; three lines of PM ClearPM6 cpy temp bne ZeroesToGo6 - lda (xbyte),y - and #%00001111 - ora #%11110000 ; (2 bits set) we set on two pixels in three lines - sta (xbyte),y - dey - lda (xbyte),y - and #%00001111 - ora #%11110000 ; (2 bits set) we set on two pixels in three lines - sta (xbyte),y - dey - lda (xbyte),y +@ lda (xbyte),y and #%00001111 ora #%11110000 ; (2 bits set) we set on two pixels in three lines sta (xbyte),y dey + dex + bne @- ZeroesToGo6 lda (xbyte),y and #%00001111 @@ -744,6 +730,7 @@ ZeroesToGo6 NoPlayerMissile ; draw defensive weapons like shield ( tank number in X ) ; in xdraw, ydraw we have coordinates left LOWER corner of Tank char + ldx TankNr lda ActiveDefenceWeapon,x cmp #ind_Shield_________ ; one shot shield beq DrawTankShield diff --git a/scorch.xex b/scorch.xex index a8965d4e4173240b0e77e1b3481b646744ea5edd..af5f602f86ac5b63f29a4f874513f0402747dce2 100644 GIT binary patch delta 13543 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⪼O%IZA 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 Z^UD5zmmZ0a_lhAgFr)u|&3``azX791INtyO