SoilDown optimization - 63 bytes saved

This commit is contained in:
Pecusx
2022-08-31 10:26:00 +02:00
parent dbfae96022
commit dc896f81b0
4 changed files with 59 additions and 64 deletions
+23 -29
View File
@@ -1263,20 +1263,37 @@ drawmountainsloop
beq NoMountain
sta ydraw
sty ydraw+1
jsr DrawLine
; jsr DrawLine
; there was Drawline proc
lda #screenheight
sec
sbc ydraw
sta tempbyte01
jsr plot.MakePlot
; after plot we have: (xbyte),y - addres of screen byte; X - index in bittable (number of bit)
; jmp IntoDraw ; jumps inside Draw routine
; because one pixel is already plotted (and who cares? :) )
@
lda (xbyte),y
and bittable2,x
sta (xbyte),y
;IntoDraw
adw xbyte #screenBytes
dec tempbyte01
bne @-
; end of Drawline proc
NoMountain
inw modify
inw xdraw
cpw xdraw #screenwidth
bne drawmountainsloop
rts
/*
;--------------------------------------------------
drawmountainspixel
drawmountainspixel ; never used ?
;--------------------------------------------------
mwa #0 xdraw
mwa #mountaintable modify
drawmountainspixelloop
ldy #0
lda (modify),y
@@ -1287,8 +1304,8 @@ drawmountainspixelloop
inw xdraw
cpw xdraw #screenwidth
bne drawmountainspixelloop
rts
*/
.endp
;--------------------------------------------------
.proc SoilDown2
@@ -1761,31 +1778,8 @@ ClearPlot
eor #$ff
and bittable,x
rts
.endp;--------------------------------------------------
.proc DrawLine
;--------------------------------------------------
mva #0 ydraw+1
lda #screenheight
sec
sbc ydraw
sta tempbyte01
jsr plot.MakePlot
;rts
jmp IntoDraw ; jumps inside Draw routine
; because one pixel is already plotted
@
lda (xbyte),y
and bittable2,x
sta (xbyte),y
IntoDraw
adw xbyte #screenBytes
dec tempbyte01
bne @-
rts
.endp
; ------------------------------------------
;--------------------------------------------------
.proc TypeChar
; puts char on the graphics screen
; in: CharCode
+7 -7
View File
@@ -103,7 +103,7 @@
.zpvar Counter .byte ;temporary Counter for outside loops
.zpvar ExplosionRadius .word ;because when adding in xdraw it is double byte
.zpvar ResultY .byte
.zpvar FallDown2 .byte
; .zpvar FallDown2 .byte
.zpvar xcircle .word
.zpvar ycircle .word
.zpvar vy .word
@@ -643,7 +643,7 @@ ShootNow
lda #0
sta FallDown1
sta FallDown2
; sta FallDown2
jsr Explosion
continueMainRoundLoopAfterSeppuku
@@ -658,9 +658,9 @@ AfterExplode
mva #1 Erase
jsr drawtanks
mva #0 Erase
lda FallDown2
beq NoFallDown2
jsr SoilDown2
; lda FallDown2
; beq NoFallDown2
jsr SoilDown2 ; allways
NoFallDown2
;here tanks are falling down
@@ -812,7 +812,7 @@ NoPlayerNoDeath
sta RangeRight
sta RangeRight+1
sta FallDown1
sta FallDown2
; sta FallDown2
mwa #screenwidth RangeLeft
; We are randomizing the weapon now.
@@ -920,7 +920,7 @@ NotNegativeShieldEnergy
.proc Seppuku
lda #0
sta FallDown1
sta FallDown2
;sta FallDown2
sta ydraw+1
; get position of the tank
ldx TankNr
BIN
View File
Binary file not shown.
+29 -28
View File
@@ -17,6 +17,7 @@
pha
lda ExplosionRoutines,x
pha
; inc FallDown2
rts
ExplosionRoutines
.word babymissile-1 ;Baby_Missile___;_00
@@ -61,7 +62,7 @@ tracer
; ------------------------
.proc babymissile
mva #sfx_baby_missile sfx_effect
inc FallDown2
; inc FallDown2
mva #11 ExplosionRadius
jsr CalculateExplosionRange
jmp xmissile
@@ -69,7 +70,7 @@ tracer
; ------------------------
.proc missile ;
mva #sfx_baby_missile sfx_effect
inc FallDown2
; inc FallDown2
mva #17 ExplosionRadius
jsr CalculateExplosionRange
jmp xmissile
@@ -77,7 +78,7 @@ tracer
; ------------------------
.proc babynuke
mva #sfx_nuke sfx_effect
inc FallDown2
; inc FallDown2
mva #25 ExplosionRadius
jsr CalculateExplosionRange
jmp xmissile
@@ -85,7 +86,7 @@ tracer
; ------------------------
.proc nuke
mva #sfx_nuke sfx_effect
inc FallDown2
; inc FallDown2
mva #30 ExplosionRadius
jsr CalculateExplosionRange
jmp xmissile
@@ -93,7 +94,7 @@ tracer
; ------------------------
.proc leapfrog
mva #sfx_baby_missile sfx_effect
inc FallDown2
; inc FallDown2
mva #17 ExplosionRadius
jsr CalculateExplosionRange
jsr xmissile
@@ -163,7 +164,7 @@ EndOfLeapping
.endp
; ------------------------
.proc mirv ; the whole mirv is performed by Flight routine
inc FallDown2
; inc FallDown2
rts
.endp
; ------------------------
@@ -171,7 +172,7 @@ EndOfLeapping
mva #sfx_baby_missile sfx_effect
mwa xtraj+1 xtrajfb
sbw ytraj+1 #$05 ytrajfb ; funky missiles start point goes 5 pixel UP to prevent multiple explosion at one point if tank is hit (4 pixels tank height + 1)
inc FallDown2
; inc FallDown2
;central Explosion
mva #21 ExplosionRadius
jsr CalculateExplosionRange0
@@ -229,7 +230,7 @@ NoWallsInFunky
.endp
; ------------------------
.proc deathshead
inc FallDown2
; inc FallDown2
mva #30 ExplosionRadius
jsr CalculateExplosionRange
@@ -285,7 +286,7 @@ NoLowerCircle
; ------------------------
.proc napalm
mva #sfx_napalm sfx_effect
inc FallDown2
; inc FallDown2
mva #(napalmRadius+4) ExplosionRadius ; real radius + 4 pixels (half characrer width)
jsr CalculateExplosionRange
mva #0 ExplosionRadius ; in this weapon - flag: 0 - napalm, 1 - hotnapalm
@@ -294,7 +295,7 @@ NoLowerCircle
; ------------------------
.proc hotnapalm
mva #sfx_napalm sfx_effect
inc FallDown2
; inc FallDown2
mva #(napalmRadius+4) ExplosionRadius ; real radius + 4 pixels (half characrer width)
jsr CalculateExplosionRange
mva #1 ExplosionRadius ; in this weapon - flag: 0 - napalm, 1 - hotnapalm
@@ -359,7 +360,7 @@ CharOffTheScreen
dec magic
jpl RepeatNapalm
; after napalm
inc FallDown2
; inc FallDown2
;now we must check tanks in range
ldx NumberOfPlayers
dex
@@ -407,32 +408,32 @@ EndNurnedCheckLoop
.endp
; ------------------------
.proc babyroller
inc FallDown2
; inc FallDown2
mva #11 ExplosionRadius
jmp xroller
.endp
; ------------------------
.proc roller ;
inc FallDown2
; inc FallDown2
mva #21 ExplosionRadius
jmp xroller
.endp
; ------------------------
.proc heavyroller
inc FallDown2
; inc FallDown2
mva #30 ExplosionRadius
jmp xroller
.endp
; ------------------------
.proc riotbomb
inc FallDown2
; inc FallDown2
mva #17 ExplosionRadius
jsr CalculateExplosionRange
jmp xriotbomb
.endp
; ------------------------
.proc heavyriotbomb
inc FallDown2
; inc FallDown2
mva #29 ExplosionRadius
jsr CalculateExplosionRange
jmp xriotbomb
@@ -441,7 +442,7 @@ EndNurnedCheckLoop
.proc babydigger
mva #sfx_digger sfx_effect
mva #0 sandhogflag
inc FallDown2
; inc FallDown2
mva #13 DigLong
mva #1 diggery ; how many branches (-1)
jmp xdigger
@@ -450,7 +451,7 @@ EndNurnedCheckLoop
.proc digger ;
mva #sfx_digger sfx_effect
mva #0 sandhogflag
inc FallDown2
; inc FallDown2
mva #13 DigLong
mva #3 diggery ; how many branches (-1)
jmp xdigger
@@ -459,7 +460,7 @@ EndNurnedCheckLoop
.proc heavydigger
mva #sfx_digger sfx_effect
mva #0 sandhogflag
inc FallDown2
; inc FallDown2
mva #13 DigLong
mva #7 diggery ; how many branches (-1)
jmp xdigger
@@ -583,7 +584,7 @@ DiggerCharacter
.proc babysandhog
mva #sfx_sandhog sfx_effect
mva #char_sandhog_offset sandhogflag
inc FallDown2
; inc FallDown2
mva #13 DigLong
mva #1 diggery ; how many branches (-1)
jmp xdigger
@@ -592,7 +593,7 @@ DiggerCharacter
.proc sandhog
mva #sfx_sandhog sfx_effect
mva #char_sandhog_offset sandhogflag
inc FallDown2
; inc FallDown2
mva #13 DigLong
mva #3 diggery ; how many branches (-1)
jmp xdigger
@@ -601,35 +602,35 @@ DiggerCharacter
.proc heavysandhog
mva #sfx_sandhog sfx_effect
mva #char_sandhog_offset sandhogflag
inc FallDown2
; inc FallDown2
mva #13 DigLong
mva #5 diggery ; how many branches (-1)
jmp xdigger
.endp
; ------------------------
.proc dirtclod
inc FallDown2
; inc FallDown2
mva #12 ExplosionRadius
jsr CalculateExplosionRange
jmp xdirt
.endp
; ------------------------
.proc dirtball
inc FallDown2
; inc FallDown2
mva #22 ExplosionRadius
jsr CalculateExplosionRange
jmp xdirt
.endp
; ------------------------
.proc tonofdirt
inc FallDown2
; inc FallDown2
mva #31 ExplosionRadius
jsr CalculateExplosionRange
jmp xdirt
.endp
; ------------------------
.proc dirtcharge
inc FallDown2
; inc FallDown2
mva #61 ExplosionRadius
jsr CalculateExplosionRange
jmp ofdirt
@@ -637,7 +638,7 @@ DiggerCharacter
; ------------------------
.proc riotcharge
mva #sfx_riot_blast sfx_effect
inc FallDown2
; inc FallDown2
mva #31 ExplosionRadius
jsr CalculateExplosionRange
jmp cleanDirt
@@ -645,7 +646,7 @@ DiggerCharacter
; ------------------------
.proc riotblast
mva #sfx_riot_blast sfx_effect
inc FallDown2
; inc FallDown2
mva #61 ExplosionRadius
jsr CalculateExplosionRange
jmp cleanDirt