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 beq NoMountain
sta ydraw sta ydraw
sty ydraw+1 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 NoMountain
inw modify inw modify
inw xdraw inw xdraw
cpw xdraw #screenwidth cpw xdraw #screenwidth
bne drawmountainsloop bne drawmountainsloop
rts rts
/*
;-------------------------------------------------- ;--------------------------------------------------
drawmountainspixel drawmountainspixel ; never used ?
;-------------------------------------------------- ;--------------------------------------------------
mwa #0 xdraw mwa #0 xdraw
mwa #mountaintable modify mwa #mountaintable modify
drawmountainspixelloop drawmountainspixelloop
ldy #0 ldy #0
lda (modify),y lda (modify),y
@@ -1287,8 +1304,8 @@ drawmountainspixelloop
inw xdraw inw xdraw
cpw xdraw #screenwidth cpw xdraw #screenwidth
bne drawmountainspixelloop bne drawmountainspixelloop
rts rts
*/
.endp .endp
;-------------------------------------------------- ;--------------------------------------------------
.proc SoilDown2 .proc SoilDown2
@@ -1761,31 +1778,8 @@ ClearPlot
eor #$ff eor #$ff
and bittable,x and bittable,x
rts 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 .endp
;--------------------------------------------------
; ------------------------------------------
.proc TypeChar .proc TypeChar
; puts char on the graphics screen ; puts char on the graphics screen
; in: CharCode ; in: CharCode
+7 -7
View File
@@ -103,7 +103,7 @@
.zpvar Counter .byte ;temporary Counter for outside loops .zpvar Counter .byte ;temporary Counter for outside loops
.zpvar ExplosionRadius .word ;because when adding in xdraw it is double byte .zpvar ExplosionRadius .word ;because when adding in xdraw it is double byte
.zpvar ResultY .byte .zpvar ResultY .byte
.zpvar FallDown2 .byte ; .zpvar FallDown2 .byte
.zpvar xcircle .word .zpvar xcircle .word
.zpvar ycircle .word .zpvar ycircle .word
.zpvar vy .word .zpvar vy .word
@@ -643,7 +643,7 @@ ShootNow
lda #0 lda #0
sta FallDown1 sta FallDown1
sta FallDown2 ; sta FallDown2
jsr Explosion jsr Explosion
continueMainRoundLoopAfterSeppuku continueMainRoundLoopAfterSeppuku
@@ -658,9 +658,9 @@ AfterExplode
mva #1 Erase mva #1 Erase
jsr drawtanks jsr drawtanks
mva #0 Erase mva #0 Erase
lda FallDown2 ; lda FallDown2
beq NoFallDown2 ; beq NoFallDown2
jsr SoilDown2 jsr SoilDown2 ; allways
NoFallDown2 NoFallDown2
;here tanks are falling down ;here tanks are falling down
@@ -812,7 +812,7 @@ NoPlayerNoDeath
sta RangeRight sta RangeRight
sta RangeRight+1 sta RangeRight+1
sta FallDown1 sta FallDown1
sta FallDown2 ; sta FallDown2
mwa #screenwidth RangeLeft mwa #screenwidth RangeLeft
; We are randomizing the weapon now. ; We are randomizing the weapon now.
@@ -920,7 +920,7 @@ NotNegativeShieldEnergy
.proc Seppuku .proc Seppuku
lda #0 lda #0
sta FallDown1 sta FallDown1
sta FallDown2 ;sta FallDown2
sta ydraw+1 sta ydraw+1
; get position of the tank ; get position of the tank
ldx TankNr ldx TankNr
BIN
View File
Binary file not shown.
+29 -28
View File
@@ -17,6 +17,7 @@
pha pha
lda ExplosionRoutines,x lda ExplosionRoutines,x
pha pha
; inc FallDown2
rts rts
ExplosionRoutines ExplosionRoutines
.word babymissile-1 ;Baby_Missile___;_00 .word babymissile-1 ;Baby_Missile___;_00
@@ -61,7 +62,7 @@ tracer
; ------------------------ ; ------------------------
.proc babymissile .proc babymissile
mva #sfx_baby_missile sfx_effect mva #sfx_baby_missile sfx_effect
inc FallDown2 ; inc FallDown2
mva #11 ExplosionRadius mva #11 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp xmissile jmp xmissile
@@ -69,7 +70,7 @@ tracer
; ------------------------ ; ------------------------
.proc missile ; .proc missile ;
mva #sfx_baby_missile sfx_effect mva #sfx_baby_missile sfx_effect
inc FallDown2 ; inc FallDown2
mva #17 ExplosionRadius mva #17 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp xmissile jmp xmissile
@@ -77,7 +78,7 @@ tracer
; ------------------------ ; ------------------------
.proc babynuke .proc babynuke
mva #sfx_nuke sfx_effect mva #sfx_nuke sfx_effect
inc FallDown2 ; inc FallDown2
mva #25 ExplosionRadius mva #25 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp xmissile jmp xmissile
@@ -85,7 +86,7 @@ tracer
; ------------------------ ; ------------------------
.proc nuke .proc nuke
mva #sfx_nuke sfx_effect mva #sfx_nuke sfx_effect
inc FallDown2 ; inc FallDown2
mva #30 ExplosionRadius mva #30 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp xmissile jmp xmissile
@@ -93,7 +94,7 @@ tracer
; ------------------------ ; ------------------------
.proc leapfrog .proc leapfrog
mva #sfx_baby_missile sfx_effect mva #sfx_baby_missile sfx_effect
inc FallDown2 ; inc FallDown2
mva #17 ExplosionRadius mva #17 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jsr xmissile jsr xmissile
@@ -163,7 +164,7 @@ EndOfLeapping
.endp .endp
; ------------------------ ; ------------------------
.proc mirv ; the whole mirv is performed by Flight routine .proc mirv ; the whole mirv is performed by Flight routine
inc FallDown2 ; inc FallDown2
rts rts
.endp .endp
; ------------------------ ; ------------------------
@@ -171,7 +172,7 @@ EndOfLeapping
mva #sfx_baby_missile sfx_effect mva #sfx_baby_missile sfx_effect
mwa xtraj+1 xtrajfb 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) 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 ;central Explosion
mva #21 ExplosionRadius mva #21 ExplosionRadius
jsr CalculateExplosionRange0 jsr CalculateExplosionRange0
@@ -229,7 +230,7 @@ NoWallsInFunky
.endp .endp
; ------------------------ ; ------------------------
.proc deathshead .proc deathshead
inc FallDown2 ; inc FallDown2
mva #30 ExplosionRadius mva #30 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
@@ -285,7 +286,7 @@ NoLowerCircle
; ------------------------ ; ------------------------
.proc napalm .proc napalm
mva #sfx_napalm sfx_effect mva #sfx_napalm sfx_effect
inc FallDown2 ; inc FallDown2
mva #(napalmRadius+4) ExplosionRadius ; real radius + 4 pixels (half characrer width) mva #(napalmRadius+4) ExplosionRadius ; real radius + 4 pixels (half characrer width)
jsr CalculateExplosionRange jsr CalculateExplosionRange
mva #0 ExplosionRadius ; in this weapon - flag: 0 - napalm, 1 - hotnapalm mva #0 ExplosionRadius ; in this weapon - flag: 0 - napalm, 1 - hotnapalm
@@ -294,7 +295,7 @@ NoLowerCircle
; ------------------------ ; ------------------------
.proc hotnapalm .proc hotnapalm
mva #sfx_napalm sfx_effect mva #sfx_napalm sfx_effect
inc FallDown2 ; inc FallDown2
mva #(napalmRadius+4) ExplosionRadius ; real radius + 4 pixels (half characrer width) mva #(napalmRadius+4) ExplosionRadius ; real radius + 4 pixels (half characrer width)
jsr CalculateExplosionRange jsr CalculateExplosionRange
mva #1 ExplosionRadius ; in this weapon - flag: 0 - napalm, 1 - hotnapalm mva #1 ExplosionRadius ; in this weapon - flag: 0 - napalm, 1 - hotnapalm
@@ -359,7 +360,7 @@ CharOffTheScreen
dec magic dec magic
jpl RepeatNapalm jpl RepeatNapalm
; after napalm ; after napalm
inc FallDown2 ; inc FallDown2
;now we must check tanks in range ;now we must check tanks in range
ldx NumberOfPlayers ldx NumberOfPlayers
dex dex
@@ -407,32 +408,32 @@ EndNurnedCheckLoop
.endp .endp
; ------------------------ ; ------------------------
.proc babyroller .proc babyroller
inc FallDown2 ; inc FallDown2
mva #11 ExplosionRadius mva #11 ExplosionRadius
jmp xroller jmp xroller
.endp .endp
; ------------------------ ; ------------------------
.proc roller ; .proc roller ;
inc FallDown2 ; inc FallDown2
mva #21 ExplosionRadius mva #21 ExplosionRadius
jmp xroller jmp xroller
.endp .endp
; ------------------------ ; ------------------------
.proc heavyroller .proc heavyroller
inc FallDown2 ; inc FallDown2
mva #30 ExplosionRadius mva #30 ExplosionRadius
jmp xroller jmp xroller
.endp .endp
; ------------------------ ; ------------------------
.proc riotbomb .proc riotbomb
inc FallDown2 ; inc FallDown2
mva #17 ExplosionRadius mva #17 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp xriotbomb jmp xriotbomb
.endp .endp
; ------------------------ ; ------------------------
.proc heavyriotbomb .proc heavyriotbomb
inc FallDown2 ; inc FallDown2
mva #29 ExplosionRadius mva #29 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp xriotbomb jmp xriotbomb
@@ -441,7 +442,7 @@ EndNurnedCheckLoop
.proc babydigger .proc babydigger
mva #sfx_digger sfx_effect mva #sfx_digger sfx_effect
mva #0 sandhogflag mva #0 sandhogflag
inc FallDown2 ; inc FallDown2
mva #13 DigLong mva #13 DigLong
mva #1 diggery ; how many branches (-1) mva #1 diggery ; how many branches (-1)
jmp xdigger jmp xdigger
@@ -450,7 +451,7 @@ EndNurnedCheckLoop
.proc digger ; .proc digger ;
mva #sfx_digger sfx_effect mva #sfx_digger sfx_effect
mva #0 sandhogflag mva #0 sandhogflag
inc FallDown2 ; inc FallDown2
mva #13 DigLong mva #13 DigLong
mva #3 diggery ; how many branches (-1) mva #3 diggery ; how many branches (-1)
jmp xdigger jmp xdigger
@@ -459,7 +460,7 @@ EndNurnedCheckLoop
.proc heavydigger .proc heavydigger
mva #sfx_digger sfx_effect mva #sfx_digger sfx_effect
mva #0 sandhogflag mva #0 sandhogflag
inc FallDown2 ; inc FallDown2
mva #13 DigLong mva #13 DigLong
mva #7 diggery ; how many branches (-1) mva #7 diggery ; how many branches (-1)
jmp xdigger jmp xdigger
@@ -583,7 +584,7 @@ DiggerCharacter
.proc babysandhog .proc babysandhog
mva #sfx_sandhog sfx_effect mva #sfx_sandhog sfx_effect
mva #char_sandhog_offset sandhogflag mva #char_sandhog_offset sandhogflag
inc FallDown2 ; inc FallDown2
mva #13 DigLong mva #13 DigLong
mva #1 diggery ; how many branches (-1) mva #1 diggery ; how many branches (-1)
jmp xdigger jmp xdigger
@@ -592,7 +593,7 @@ DiggerCharacter
.proc sandhog .proc sandhog
mva #sfx_sandhog sfx_effect mva #sfx_sandhog sfx_effect
mva #char_sandhog_offset sandhogflag mva #char_sandhog_offset sandhogflag
inc FallDown2 ; inc FallDown2
mva #13 DigLong mva #13 DigLong
mva #3 diggery ; how many branches (-1) mva #3 diggery ; how many branches (-1)
jmp xdigger jmp xdigger
@@ -601,35 +602,35 @@ DiggerCharacter
.proc heavysandhog .proc heavysandhog
mva #sfx_sandhog sfx_effect mva #sfx_sandhog sfx_effect
mva #char_sandhog_offset sandhogflag mva #char_sandhog_offset sandhogflag
inc FallDown2 ; inc FallDown2
mva #13 DigLong mva #13 DigLong
mva #5 diggery ; how many branches (-1) mva #5 diggery ; how many branches (-1)
jmp xdigger jmp xdigger
.endp .endp
; ------------------------ ; ------------------------
.proc dirtclod .proc dirtclod
inc FallDown2 ; inc FallDown2
mva #12 ExplosionRadius mva #12 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp xdirt jmp xdirt
.endp .endp
; ------------------------ ; ------------------------
.proc dirtball .proc dirtball
inc FallDown2 ; inc FallDown2
mva #22 ExplosionRadius mva #22 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp xdirt jmp xdirt
.endp .endp
; ------------------------ ; ------------------------
.proc tonofdirt .proc tonofdirt
inc FallDown2 ; inc FallDown2
mva #31 ExplosionRadius mva #31 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp xdirt jmp xdirt
.endp .endp
; ------------------------ ; ------------------------
.proc dirtcharge .proc dirtcharge
inc FallDown2 ; inc FallDown2
mva #61 ExplosionRadius mva #61 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp ofdirt jmp ofdirt
@@ -637,7 +638,7 @@ DiggerCharacter
; ------------------------ ; ------------------------
.proc riotcharge .proc riotcharge
mva #sfx_riot_blast sfx_effect mva #sfx_riot_blast sfx_effect
inc FallDown2 ; inc FallDown2
mva #31 ExplosionRadius mva #31 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp cleanDirt jmp cleanDirt
@@ -645,7 +646,7 @@ DiggerCharacter
; ------------------------ ; ------------------------
.proc riotblast .proc riotblast
mva #sfx_riot_blast sfx_effect mva #sfx_riot_blast sfx_effect
inc FallDown2 ; inc FallDown2
mva #61 ExplosionRadius mva #61 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
jmp cleanDirt jmp cleanDirt