From f4d1865fd6f09c18bf1ecdc81b29fcb2a46cbb5c Mon Sep 17 00:00:00 2001 From: Pecusx Date: Mon, 12 Jun 2023 18:24:57 +0200 Subject: [PATCH] Fast SoilDown wirh range --- Atari/gr_basics.asm | 32 ++++++++++++++++++++++++++++---- game.asm | 4 +--- scorch.xex | Bin 56336 -> 56393 bytes 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/Atari/gr_basics.asm b/Atari/gr_basics.asm index 1716a74..5effad7 100644 --- a/Atari/gr_basics.asm +++ b/Atari/gr_basics.asm @@ -275,8 +275,32 @@ NoMountain ;-------------------------------------------------- ; Calculate mountaintable from screen data ; for speedup SoilDown, etc. - mwa #0 temp ; byte in screen line - mwa #mountaintable modify + +; Range alignment to full bytes. + lda RangeLeft + and #%11111000 + sta RangeLeft + adw RangeRight #7 + lda RangeRight + and #%11111000 + sta RangeRight + cpw RangeLeft RangeRight + jcs NothingToFall + ; convert range to bytes + mwa RangeLeft temp + lsr temp+1 ; temp / 8 + ror temp + lsr temp ; max range is 511 ! (9 bits) + lsr temp ; temp+1 = 0 + mva RangeRight temp+1 + mva RangeRight+1 temp2 + lsr temp2 ; temp+1 / 8 + ror temp+1 + lsr temp+1 ; max range is 511 ! (9 bits) + lsr temp+1 ; temp+1 = 0 + + ; mwa #0 temp+1 ; byte in screen line + adw RangeLeft #mountaintable modify HorizontalByteLoop lda #0 ldy #7 @@ -315,9 +339,9 @@ NoPixel adw modify #8 inc temp lda temp - cmp #screenBytes + cmp temp+1 bne HorizontalByteLoop ; next column of bytes - +NothingToFall rts .endp ;-------------------------------------------------- diff --git a/game.asm b/game.asm index 3376ec5..e2199f5 100644 --- a/game.asm +++ b/game.asm @@ -598,9 +598,7 @@ TextAfterBFG sta ydraw+1 ; there is 0 left in A, so... TODO: bad code above. revisit ;cleanup of the soil fall down ranges (left and right) - sta RangeRight - sta RangeRight+1 - mwa #screenwidth RangeLeft + jsr ClearScreenSoilRange ; We are randomizing the weapon now. ; jumping into the middle of the explosion diff --git a/scorch.xex b/scorch.xex index eda21dac078df94d9956ba80d7fa83312d590f1f..fb392dbf069d9dbe86a0d57789130fad90f470ec 100644 GIT binary patch delta 8195 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 xco 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