From e94a356e6d58b441083394ff73f239b6893b346a Mon Sep 17 00:00:00 2001 From: Pecusx Date: Mon, 11 Jul 2022 18:26:59 +0200 Subject: [PATCH 01/16] Auto Defence angle fix --- scorch.xex | Bin 41050 -> 41050 bytes weapons.asm | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/scorch.xex b/scorch.xex index 9d91cf702ce97c71083caaf064062b05512461f8..ef8801ae358d5480264b15ed8a8722240329fd13 100644 GIT binary patch delta 16 Ycmcb0fa%r&rVZ_Zj9WH$1YYt307xDPA^-pY delta 16 Ycmcb0fa%r&rVZ_ZjQ=-x1YYt307>8oZ2$lO diff --git a/weapons.asm b/weapons.asm index ce999ee..eff3dd7 100644 --- a/weapons.asm +++ b/weapons.asm @@ -2095,7 +2095,7 @@ NoDefence rts ; END !!! AutoDefence ; now run defensive-aggressive weapon - Auto Defence! - sbb #255 LeapFrogAngle Angle ; swap angle (LeapFrogAngle - because we have strored angle in this variable) + sbb #180 LeapFrogAngle Angle ; swap angle (LeapFrogAngle - because we have strored angle in this variable) lsrw Force ; Force = Force / 2 - becouse earlier we multiplied by 2 mva #1 Erase ; now erase shield phx From 6868eb8626da8dec3ecade0632f7a99f274af2a8 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Mon, 11 Jul 2022 21:43:07 +0200 Subject: [PATCH 02/16] Better Shooter strategy Poolshark and Tosser no longer cheat :) --- ai.asm | 2 ++ scorch.asm | 18 ++++++++++++++++-- scorch.xex | Bin 41050 -> 41079 bytes weapons.asm | 2 +- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ai.asm b/ai.asm index 6c01bb6..7a206e0 100644 --- a/ai.asm +++ b/ai.asm @@ -193,6 +193,7 @@ EnoughEnergy sta ShieldEnergy,x ; decrease in inventory clc + lda (temp),y sbc #1 sta (temp),y ; has address of TanksWeaponsTable NoUseDefensive @@ -306,6 +307,7 @@ AngleTable ; 16 bytes ;ba w $348b L$3350 sta ShieldEnergy,x ; decrease in inventory clc + lda (temp),y sbc #1 sta (temp),y DefensiveInUse diff --git a/scorch.asm b/scorch.asm index 2f854c2..9bb383b 100644 --- a/scorch.asm +++ b/scorch.asm @@ -446,8 +446,8 @@ AfterManualShooting cmp #ind_Nuclear_Winter_ bne StandardShoot ShootAtomicWinter - ; --- nuclear winter --- - jsr NuclearWinter + ; --- atomic winter --- + jsr AtomicWinter jmp NextPlayerShoots ; and we skip shoot ShootWhiteFlag ; --- white flag --- @@ -681,6 +681,20 @@ MetodOfDeath jsr ExplosionDirect mva #sfx_silencer sfx_effect + ; Clear current Shooter settings. After that, Shooter will "search" for the target again + ldx NumberOfPlayers + dex +@ lda skillTable,x + cmp #2 ; clear variables only if Shooter + bne NotShooter + lda #0 + sta PreviousAngle,x + sta PreviousEnergyL,x + sta PreviousEnergyH,x +NotShooter + dex + bpl @- + ; jump to after explosion routines (soil fallout, etc.) ; After going through these routines we are back ; to checking if a tank exploded and maybe we have diff --git a/scorch.xex b/scorch.xex index ef8801ae358d5480264b15ed8a8722240329fd13..ad690a561997a49d93bfb588bd2dc6e840d4ef96 100644 GIT binary patch delta 14433 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 RO(lJaJE`+~&$_P1{~xwx{aye7 delta 14570 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 diff --git a/weapons.asm b/weapons.asm index eff3dd7..3981863 100644 --- a/weapons.asm +++ b/weapons.asm @@ -2514,7 +2514,7 @@ MIRValreadyAll .endp ; ------------------------------------------------- -.proc NuclearWinter +.proc AtomicWinter ; ------------------------------------------------- ; This routine is run from inside of the main loop ; and replaces Shoot and Flight routines From 9ece051472fe7208dc63127837f03a039263f07a Mon Sep 17 00:00:00 2001 From: Pecusx Date: Wed, 13 Jul 2022 09:06:37 +0200 Subject: [PATCH 03/16] IA code optimisation and "better" shields shapes. --- ai.asm | 22 ++++++++++------------ grafproc.asm | 8 ++++---- scorch.xex | Bin 41079 -> 41075 bytes 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/ai.asm b/ai.asm index 7a206e0..ca248b2 100644 --- a/ai.asm +++ b/ai.asm @@ -186,16 +186,15 @@ EnoughEnergy beq NoUseDefensive lda (temp),y ; has address of TanksWeaponsTable beq @- - tya + ; decrease in inventory + clc + sbc #1 + sta (temp),y ; has address of TanksWeaponsTable ; activate defensive weapon + tya ; number of selectet defensive weapon sta ActiveDefenceWeapon,x lda DefensiveEnergy,y sta ShieldEnergy,x - ; decrease in inventory - clc - lda (temp),y - sbc #1 - sta (temp),y ; has address of TanksWeaponsTable NoUseDefensive DefensiveInUse firstShoot @@ -300,16 +299,15 @@ AngleTable ; 16 bytes ;ba w $348b L$3350 beq NoUseDefensive lda (temp),y ; has address of TanksWeaponsTable beq @- - tya + ; decrease in inventory + clc + sbc #1 + sta (temp),y ; has address of TanksWeaponsTable ; activate defensive weapon + tya ; number of selectet defensive weapon sta ActiveDefenceWeapon,x lda DefensiveEnergy,y sta ShieldEnergy,x - ; decrease in inventory - clc - lda (temp),y - sbc #1 - sta (temp),y DefensiveInUse NoUseDefensive ; Toosser is like Poolshark but allways uses defensives diff --git a/grafproc.asm b/grafproc.asm index 82e2856..71b3379 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -774,7 +774,7 @@ ShieldVisible dec temp bne @- ; draw left oblique line of shield ( / ) - mva #4 temp + mva #3 temp @ jsr plot .nowarn dew ydraw @@ -782,14 +782,14 @@ ShieldVisible dec temp bne @- ; draw top horizontal line of shield ( _ ) - mva #5 temp + mva #7 temp @ jsr plot inw xdraw dec temp bne @- ; draw right oblique line of shield ( \ ) - mva #4 temp + mva #3 temp @ jsr plot inw ydraw @@ -831,7 +831,7 @@ ShieldVisible ; Symbol of ablative shield ? :) ;-------------------------------------------------- sbw xdraw #$04 ; 5 pixels left - sbw ydraw #$0a ; 10 pixels up + sbw ydraw #$0b ; 11 pixels up ; draw additional top horizontal line of shield ( _ ) mva #6 temp @ diff --git a/scorch.xex b/scorch.xex index ad690a561997a49d93bfb588bd2dc6e840d4ef96..4f5856b5d0d0d4ae4b1cbf31636192d97f9be5d5 100644 GIT binary patch delta 13137 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 q Date: Wed, 13 Jul 2022 22:53:54 +0200 Subject: [PATCH 04/16] New PMG for 6 colored tanks but colors not set to new scheme. --- constants.asm | 4 +- definitions.asm | 3 +- grafproc.asm | 110 +++++++++++++++++++++++++++++++++++++++++------- scorch.asm | 8 ++-- scorch.xex | Bin 41075 -> 41210 bytes 5 files changed, 104 insertions(+), 21 deletions(-) diff --git a/constants.asm b/constants.asm index c6a4c10..355f73c 100644 --- a/constants.asm +++ b/constants.asm @@ -59,18 +59,20 @@ lineClear dta d" ", $ff ;----------- -pmtableL ; addressess of the P/M memory for 5 tanks (6th is without P/M background) +pmtableL ; addressess of the P/M memory for 6 tanks .by <(pmgraph+$400) .by <(pmgraph+$500) .by <(pmgraph+$600) .by <(pmgraph+$700) .by <(pmgraph+$300) ; this is a missile background + .by <(pmgraph+$300) ; this is a missile background pmtableH .by >(pmgraph+$400) .by >(pmgraph+$500) .by >(pmgraph+$600) .by >(pmgraph+$700) .by >(pmgraph+$300) + .by >(pmgraph+$300) ;----------- sintable .by 0 diff --git a/definitions.asm b/definitions.asm index 25e041f..87af599 100644 --- a/definitions.asm +++ b/definitions.asm @@ -7,7 +7,8 @@ margin = 40 ;mountain drawing Y variable margin display = $1010 ;screen takes $2K due to clearing routine MaxPlayers = 6 maxOptions = 8 ;number of all options -PMOffset = $23 ; P/M to graphics offset +PMOffsetX = $2C ; P/M to graphics offset +PMOffsetY = $23 ; P/M to graphics offset napalmRadius = 10 ;Weapon prices (*10 on screen) diff --git a/grafproc.asm b/grafproc.asm index 71b3379..0144ead 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -611,10 +611,23 @@ DrawNextTank lda eXistenZ,x bne SkipHidingPM ; if energy=0 then no tank - ; hide P/M - lda #0 - sta hposp0,x - jmp DoNotDrawTankNr + ; hide P/M + lda #0 + cpx #$4 ; 5th tank is defferent + bne No5thTankHide + sta hposp0+4 + sta hposp0+5 + beq @+ +No5thTankHide + cpx #$5 ; 6th tank is defferent + bne No6thTankHide + sta hposp0+6 + sta hposp0+7 + beq @+ +No6thTankHide + sta hposp0,x +@ + jmp DoNotDrawTankNr SkipHidingPM @@ -636,20 +649,31 @@ DrawTankNrX ; now P/M graphics on the screen (only for 5 tanks) ; horizontal position + ldx TankNr mwa xdraw xbyte - ldx tanknr - cpx #$5 - bcs NoPlayerMissile rorw xbyte ; divide by 2 (carry does not matter) lda xbyte clc - adc #PMOffset+1 ; P/M to graphics offset + adc #PMOffsetX ; P/M to graphics offset cpx #$4 ; 5th tank are joined missiles and offset is defferent - bne NoMissile + bne No5thTank clc - adc #$0C ; missile offset offset -NoMissile + adc #$04 ; missile offset offset + sta hposp0+4 + sta hposp0+5 + bne NoMissile +No5thTank + cpx #$5 ; 6th tank are joined missiles and offset is defferent + bne Tanks1to4 + clc + adc #$04 ; missile offset offset + sta hposp0+6 + sta hposp0+7 + bne NoMissile +Tanks1to4 sta hposp0,x + +NoMissile ; vertical position lda pmtableL,x sta xbyte @@ -659,26 +683,64 @@ NoMissile ; calculate start position of the tank lda ydraw clc - adc #PMOffset + adc #PMOffsetY sta temp - ; clear sprite and put 3 lines on the tank at the same time ldy #$00 - tya + cpx #$5 + bcs PMForTank6 + ; clear sprite and put 3 lines on the tank at the same time ClearPM cpy temp bne ZeroesToGo - lda #$03 ; (2 bits set) we set on two pixels in three lines + 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 + ora #%00001111 ; (2 bits set) we set on two pixels in three lines sta (xbyte),y dey - lda #$00 ZeroesToGo + lda (xbyte),y + and #%11110000 ; only for equal speeds sta (xbyte),y dey bne ClearPM + beq NoPlayerMissile +PMForTank6 + ; clear sprite and put 3 lines on the tank at the same time +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 + and #%00001111 + ora #%11110000 ; (2 bits set) we set on two pixels in three lines + sta (xbyte),y + dey +ZeroesToGo6 + lda (xbyte),y + and #%00001111 + sta (xbyte),y + dey + bne ClearPM6 + NoPlayerMissile ; draw defensive weapons like shield ( tank number in X ) ; in xdraw, ydraw we have coordinates left LOWER corner of Tank char @@ -842,6 +904,22 @@ ShieldVisible rts .endp +;-------------------------------------------------- +.proc ClearPMmemory +;-------------------------------------------------- + + lda #$00 + tay +@ sta pmgraph+$300,y + sta pmgraph+$400,y + sta pmgraph+$500,y + sta pmgraph+$600,y + sta pmgraph+$700,y + iny + bne @- + rts +.endp + ;-------------------------------------------------- .proc drawmountains ;-------------------------------------------------- diff --git a/scorch.asm b/scorch.asm index 9bb383b..71ac0a2 100644 --- a/scorch.asm +++ b/scorch.asm @@ -306,6 +306,7 @@ SettingEnergies ;generating the new landscape jsr PMoutofScreen ;let P/M disappear jsr clearscreen ;let the screen be clean + jsr ClearPMmemory jsr placetanks ;let the tanks be evenly placed jsr calculatemountains ;let mountains be easy for the eye ;jsr calculatemountains0 ;only for tests - makes mountains flat and 0 height @@ -918,13 +919,14 @@ SetunPlots sta dmactls lda #$03 ; P/M on sta pmcntl - lda #$01 - sta sizem ; there will be only M0, double width + lda #$00 sta sizep0 ; P0-P3 widths sta sizep0+1 sta sizep0+2 sta sizep0+3 - lda #$10 ; P/M priorities (bit 4 joins missiles) + lda #%01010101 + sta sizem ; all missiles, double width + lda #%00100000 ; P/M priorities (multicolor players on) sta gtictls jsr PMoutofScreen diff --git a/scorch.xex b/scorch.xex index 4f5856b5d0d0d4ae4b1cbf31636192d97f9be5d5..a8965d4e4173240b0e77e1b3481b646744ea5edd 100644 GIT binary patch delta 14997 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 Qw;&7Nj3Im0Rh&-#f0(qQ`2YX_ delta 14578 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 From 9acada4e9f1fcd0a9587085bf4d347f7aaeedb16 Mon Sep 17 00:00:00 2001 From: pkali Date: Wed, 13 Jul 2022 17:18:34 -0400 Subject: [PATCH 05/16] FOX PLOTS FASTER --- grafproc.asm | 57 ++++++++++++++++++++++----------------------------- lib/atari.hea | 38 +++++++++++++++++----------------- 2 files changed, 43 insertions(+), 52 deletions(-) diff --git a/grafproc.asm b/grafproc.asm index 0144ead..f8de6ab 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -1334,8 +1334,8 @@ EndOfUnPlot ; game. If you are going to speed up the game, start with ; plot - it is used by every single effect starting from explosions ; through line drawing and small text output!!! -; We tried to keep it clear and therefore it is far from -; optimal speed. +; +; Optimized by 0xF (Fox) THXXXX!!! ; ----------------------------------------- ; is it not over the screen ??? @@ -1346,28 +1346,24 @@ CheckX02 bcs EndOfPlot ;nearest RTS MakePlot ; let's calculate coordinates from xdraw and ydraw - mwa xdraw xbyte - - - lda xbyte - and #$7 - sta ybit ;xbyte = xbyte/8 - lda xbyte - lsr xbyte+1 - ror ;just one bit over 256. Max screenwidth = 512!!! - lsr + lda xdraw+1 lsr - tay ;save + lda xdraw + ror ;just one bit over 256. Max screenwidth = 512!!! + lsr + lsr + sta xbyte ;--- ldx ydraw - lda linetableL,x - sta xbyte + ldy linetableL,x lda linetableH,x sta xbyte+1 - ldx ybit + lda xdraw + and #$7 + tax lda color bne ClearPlot @@ -1390,35 +1386,30 @@ ClearPlot ; result is in A (zero or appropriate bit is set) ; let's calculate coordinates from xdraw and ydraw - mwa xdraw xbyte - - lda xbyte - and #$7 - sta ybit ;xbyte = xbyte/8 - lda xbyte - lsr xbyte+1 - ror ;just one bit over 256. Max screenwidht = 512!!! - lsr + lda xdraw+1 lsr - tay ;save + lda xdraw + ror ;just one bit over 256. Max screenwidht = 512!!! + lsr + lsr + sta xbyte ;--- ldx ydraw - lda linetableL,x - sta xbyte + ldy linetableL,x lda linetableH,x sta xbyte+1 - ldx ybit + lda xdraw + and #$7 + tax lda (xbyte),y + eor #$ff and bittable,x - eor bittable,x rts -.endp - -;-------------------------------------------------- +.endp;-------------------------------------------------- .proc DrawLine ;-------------------------------------------------- mva #0 ydraw+1 diff --git a/lib/atari.hea b/lib/atari.hea index 36e9cfb..aeaf4a3 100755 --- a/lib/atari.hea +++ b/lib/atari.hea @@ -1,33 +1,33 @@ .enum @dmactl - blank = %00 - narrow = %01 - standard= %10 - wide = %11 - missiles= %100 - players = %1000 + blank = %00 + narrow = %01 + standard= %10 + wide = %11 + missiles= %100 + players = %1000 lineX1 = %10000 lineX2 = %00000 - dma = %100000 + dma = %100000 .ende -scr48 = @dmactl(wide|dma|players|missiles|lineX1) ;screen 48b -scr40 = @dmactl(standard|dma|players|missiles|lineX1) ;screen 40b -scr32 = @dmactl(narrow|dma|players|missiles|lineX1) ;screen 32b +scr48 = @dmactl(wide|dma|players|missiles|lineX1) +scr40 = @dmactl(standard|dma|players|missiles|lineX1) +scr32 = @dmactl(narrow|dma|players|missiles|lineX1) .enum @pmcntl - missiles= %1 - players = %10 + missiles= %1 + players = %10 trigs = %100 .ende .enum @gtictl - prior0 = %0 - prior1 = %1 - prior2 = %10 - prior4 = %100 - prior8 = %1000 - ply5 = %10000 ; Fifth Player Enable - mlc = %100000 ; Multiple Color Player Enable + prior0 = %0 + prior1 = %1 + prior2 = %10 + prior4 = %100 + prior8 = %1000 + ply5 = %10000 ; Fifth Player Enable + mlc = %100000 ; Multiple Color Player Enable mode9 = %01000000 mode10 = %10000000 mode11 = %11000000 From 99d08367c4bd719dbea0097fb499b12fb5fbc48f Mon Sep 17 00:00:00 2001 From: Pecusx Date: Thu, 14 Jul 2022 00:13:36 +0200 Subject: [PATCH 06/16] 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 From 1b2988069fbccf6db384f3b7b82781602f51bf93 Mon Sep 17 00:00:00 2001 From: pkali Date: Wed, 13 Jul 2022 22:59:58 -0400 Subject: [PATCH 07/16] results sprite fix --- constants.asm | 2 -- definitions.asm | 3 +++ scorch.asm | 38 +++++++++++++++++++++----------------- scorch.xex | Bin 41159 -> 41173 bytes textproc.asm | 4 ++++ variables.asm | 6 +++--- 6 files changed, 31 insertions(+), 22 deletions(-) diff --git a/constants.asm b/constants.asm index 355f73c..1ba37ee 100644 --- a/constants.asm +++ b/constants.asm @@ -11,8 +11,6 @@ dliColorsBack :10 .by $02,$00 dliColorsFore .by $0a -TextBackgroundColor = $02 ; REAL constans - use: LDA #TextBackgroundColor -TextForegroundColor = $0c CashOptionL ;(one zero less than on the screen) .by 0,<200,<800,<1200,<2000 CashOptionH diff --git a/definitions.asm b/definitions.asm index 87af599..f257c4d 100644 --- a/definitions.asm +++ b/definitions.asm @@ -11,6 +11,9 @@ PMOffsetX = $2C ; P/M to graphics offset PMOffsetY = $23 ; P/M to graphics offset napalmRadius = 10 +TextBackgroundColor = $02 ; REAL constans - use: LDA #TextBackgroundColor +TextForegroundColor = $0c + ;Weapon prices (*10 on screen) price_Baby_Missile___ = 0 ;_0 price_Missile________ = 96 ;_1 diff --git a/scorch.asm b/scorch.asm index 71ac0a2..e26a8ac 100644 --- a/scorch.asm +++ b/scorch.asm @@ -213,22 +213,22 @@ CalculateGains lda moneyH,x adc gainH,x sta moneyH,x - ; substract loose - ; if loose is greater than money then zero money + ; substract lose + ; if lose is greater than money then zero money lda moneyH,x - cmp looseH,x + cmp loseH,x bcc zeromoney - bne substractloose + bne substractlose lda moneyL,x - cmp looseL,x + cmp loseL,x bcc zeromoney -substractloose +substractlose sec lda moneyL,x - sbc looseL,x + sbc loseL,x sta moneyL,x lda moneyH,x - sbc looseH,x + sbc loseH,x sta moneyH,x jmp skipzeroing zeromoney @@ -244,7 +244,8 @@ skipzeroing jne START inc CurrentRoundNr - mva #0 dmactl ; issue #72 + lda #$0 + sta dmactl ; issue #72 jsr RmtSongSelect mva #sfx_silencer sfx_effect jmp MainGameLoop @@ -258,12 +259,15 @@ skipzeroing ; the maximum shooting energy to 990 (it is 10*energy) ; the default shooting energy to 350 ; the shooting angle is randomized -; of course gains an looses are zeroed +; of course gains an loses are zeroed lda #song_ingame jsr RmtSongSelect lda #0 + sta sizep0 ; P0-P1 widths + sta sizep0+1 + tax @ sta singleRoundVars,x inx @@ -275,8 +279,8 @@ SettingEnergies lda #$00 sta gainL,x sta gainH,x - sta looseL,x - sta looseH,x + sta loseL,x + sta loseH,x lda #99 sta Energy,x sta eXistenZ,x @@ -710,14 +714,14 @@ NotShooter ;increases gain of tank TankNr ;-------------------------------------------------- sty EnergyDecrease - ; Loose increase - lda looseL,x + ; Lose increase + lda loseL,x clc adc EnergyDecrease - sta looseL,x - lda looseH,x + sta loseL,x + lda loseH,x adc #$00 - sta looseH,x + sta loseH,x ; Energy now, not less than 0 lda Energy,x cmp EnergyDecrease diff --git a/scorch.xex b/scorch.xex index af5f602f86ac5b63f29a4f874513f0402747dce2..d745670aa5c012c9890b341d31316c45d63092f7 100644 GIT binary patch delta 14519 zcmbVz3t$vQw)V{A9U&Pc;s}Bbt4I(bDhqRYB~io#h6EoxB``dK1W0^eQ)Ir%s)!dG8OFkN;rt<&QVdJ6tgSGxLI$8O)cyOe7&!aPLWm~jX$Dycj8k1E**3i|koN_rS|Xf$La4HWTZy0yhWN}K1&+3dYbyd}0#{xi zI4o!p4%c)je7nRX<>PsY)RqSX7h0#9p33ZJnXYG~wtn5HmZI`O_0d5e@1L!Rv|;ObNvYQ?-7~P0P?0^JgbMJ4*ycS`NOo<>w9y z%+vGtmm4%+u2cJyPzDOKMBX7X&t^765G}g4d>82w6t=Hrs17j{!CZVvF6W43DlHE{ zClL&@ptZcV{NiRo`&uSkc`sin3f;wc@R7tDtC(zS3L;5Wge@<=O#7a`V{}w}euXhP zqYQ$sbgdp2LQ$0Qz!vLwtre_XaT1&(VW<_3i4S3DE0;>pZLiKdmq|)Ah}HPh!3kBD zgU|VX;Fm}ZOC>|cU#`O|1oo7aGjT7<9ANN-yM^uSG+3(RKb@2F16FZ0U^%>V})u?zAIEkb-XKBEg(58Y|W@Gw*~eJwBBAJ zu$$J~%?hjQonYWK1^m4P@pkoH;fi0V1EF7Vc8?ubT#G>^R|EjjExl7*5qgCFm?0@- zf$%5eiSI`~nt&>X@UeuCBMH%DY|ITl)%d$lC!0gV?TV=*n&>ngposx(2MA;7GmbKF zdQ$Ej%sSN_F8-KB-Ra{0U{QCu`2THDYh3()Sk%{D{CgIsl&YA%NYN~qsPja!LnLQJ zGH4H(w}Qn--DUf^%S*>i#x9r#K(`-$M|hbK^g0_S8dy}&d+TU)MP63&K% zP(oGo)sW!Wo^ek9gseSsOQrz4+i9VV&hhW5rI%J?`g;PW^M$h?3ZdaucW~~&hqQ|9 zCLapa)wu&(1at)DEkdiO?W=0-wCvGZobXv{;_2YEP*SifWQ9{pPK8?=Dw!*>91T)m zv?M166GPE;{xn{TQA;e^2TDK5R#^;rXM5h5I*iTHr;B9r`W&X(-bo3gz-%2&eQB2v zUmw_(nGx`0W;j32Y|H#9GhycNnV-)5c;?PoxsDedA7y@&xo39$>?5+eOn05Zkp^y&>W&_M{S(aHNU^{IR#eSMR@24}#JKMg;Qew+CHgg-#k4+t+4 z^)%YACF+L+I#53%ykaN@n!q4XW%SpTpbr&fIHeKI3l<*}+6N^(4AgfB%yb7TFmoMt zxv>2=T%pf$ya+t5$JykC7uQ4Rc{FWgd@mnQQQDBi-lBuXE}nyFcd=+U z!5DrBk|8=O98{EUkl6sqh5RZa7x7OK@34x+L|p~vtv*Gt9znWzLpraiB8PZQRHieW zTQ17m!&R3QH@fZZX3ixS-kTxD$M1J>u3h#E_@snb)_hUum%7;VMEWRmhG$c{jm;ry z4hi0(6`op5QX(9?sW{xzKl?9msYA*$$*N8jED% z^_8mnc}J-kV#wm1!<0STVy)LhI9>U4_Bh^ulymyaD__cd39n=v+QJ>DNgO4gn z7%wRAN!`Nw^Ao6{{FXTG$+`h1;#V;-I)=@HuJ5C|zMsf0{sAHv^W({(-x9fyOaz#u z0!$tOm}HX{YdbSAn`#`Yq*kC#AhtY9e7qqWsJ14XwIq9BB7z2x2U0N;z`-G9*#OH6 z!}2JMy6(*>44WKd+w=%Q3xRAz9B3r)2nn93ic;PK%yBL&IfirF0lVNf>VP2?WG5N} zORVXsFbm*07Z`BGTQeZx>iQPzUrtRR5D!E8e3qeg+G4aVZ$kc)ge#Maf@Z9sg=}z= z@4O>plX5dvYV3`a`b$i=Qh$kwGSp2+vR`<>Ue$+h&~>G52l%Qn{!_!qwT~+UAV#+x z(BWRu3+k=~&=4x@RemA$2aAZq@&x>RNT{R1+e?p>awSIe#?k2Q@;^(tQpE%d-HggE z0mGdoVz{$K4EG$7#dtp|$|d|`qRjD+i*hOdgeY(3=ZXj((8vSa0r@~O4Jgzs5fdR> zCp>)iw=Z=HW`X4aO8Tow)>mYA!jMAy$1YnJO=lw#wWvCJg>o=dTo^W8IVX6)3@$ z7ojV`hFQx&3HEjiRRXse<}vHJ)%EI1qCKvz0Ox_CZtBsio#&YSHC@F4uGk^qQ12p3#pCp0tNpV^u$iGxL6glL$V+G=<2! zf_pH#b_UOc2FW|o{awd*HtvLcn#qSilg6lLJg+`-`{F?%rWN?sUESCL>NsMJfeno# zT9nR^0^$_2E#FT7q{00q;&}dXWuT$%OYl^Dc(LfyAv3=iYO=8nSUoWB&7nA~7O=U7 z9MW2d28+tHzaDqVE`(lpb}lCPQx_9Hhh*hoAzwv0a*P!R)28TDhN$hmkwTnkc|LWW z3y3O!JLoLWRqEhOq95;P(7U5E#avELI;xPqU@xq5_aM7!AW(*5+M7qFYQ zu{8A5A{@V)8|=~_Gyr`U0ciKW`kXV^UrR=_y>SZ0q)1?7nmut!lpE3opTB@O*72t& zf|cNsG%xrX9#6~*HsJA_`G{x}LXQU%QMh|vFdC2F%?rlh@$5V{I2_L<^MhmXxHd0% z7amjR2dCjNXTIaMx!v(^42^#sg>z{DOzSJxxT8SJN3C=td^C8Q@4njdtDhj3aP=IW zRmDFG^{XNvoDt_6T0jwM`h*p*`^FZa>V42TI{GpkuCqaM02_o)1Zb)MxpRUQ+ji^~ zKmi8f3U;8|btbeCR7&|1o_$2S9qKCM<0#6&Tr@Dswb?lWpCjmrrykG}fnOqoOBe;b$ruWVpEg(DrA_c%M&<$e4?Vf_ z8)h|Z^p`ZT$B9SOxl%5_9{&tQwWap?tM;AEnZ zo4T+N*pVPt3yAgrxb)3DV2y!~jpf|Tm5rfj&p#bQSxTryc`bC2L4y;uA$Y%T-J#7v zD7xUFnK%mySku6Y3?`1;h29wdR<8NYP)hURP*j=q+mxka^2sxc&@MvNBodmV=XA^@ z!O$B?B3Li;i8dM4QXY6%$3h|_W}vAB8W_2QX(5{(JleyA?Iuc?MhPQ23&LFvMrgO| zUDmw``WxYxzCiCXlyQqv=rz+eBI*<~_h!jqSnTu#y27BGrwNGr=_=OEQSTe5B6<}F zwT740@m!g{ipL_#>rp3@u?g#tVO2M2<`Zm14Z*1Lhv*KBe}iDG`GflAtbq#dqMkt@ zJR!VDFyM5><6K;ELL(XbCOPCIm9xb!o~-H*0sX|jwS7^&W6dIvpr9=3@R9mJX)%A4 zsEvegBI=ujKSGW5Eh5Dh93@q^+f=rR!rZ;=-5 zLlEsDs-J`yWQ+9rc2=$=+0>OT71N38t}y;FB? zUSd=CqsN%d`>E1tm$5gkCHd$@EwQNr$w#&fdLbkq=`!d=B>BjfiA3E)@{uruJ`U1( z*+A#zAsTPIfoVzSY6+dI9G$DBbgFJf^wxJ+uN!XmW1_{Xmk3PgB;EXK_k%=V9P3Ch zSQUkmbpmDD>i~@TuYwSH+*cgao>Z4ow3EuQjLNZ`#yuBbk#7`Y{5)o2Zxkam)R0h2 zSw#(TY|p`XVrvh))tn{P4g-(E}p_hYp?RkA7M)FI;?#)T#ss3b4{Auf*cF5I! zGf+r$ILR0%u}-xCly@gURS}&|;z-G{u@pip=@4|{WV%_42JmE>*_WWRp!IbYfQI|& zq&B7JRE+$JK0oysm-&Yt=E9f3@gRk2WF9c0unf@CF?P}cwnJ4&d>|JCb-_B2grL6G zk+29h@~f`>615gs9p*DQ!TEp_<~Ym`YElUG_ZTbeW@tNb<|e(RI=Y`ROjK{lyAo}E zOxuzoSy&-?hFTzbo|2H4={X3@5_U&QsL_!v)Z$1bnjju*B2U?X%3H~E6p0qLQZ$~g zp-+UgujET90u7Z@1fEq83KS>!&0&g)FohcwEJ#l9WnmINOj1pKPdHVsgtKzewaQ(j za~Dx}kzf?{e*7+SXcy7`?f-8w!rTKM5@I79c}`p48M3K_>LKtv*|deKBJeWVR7th* zFU>><^E%;oQzw8pyby0G{V>h+EqNMB;D!Yv3fzNfRZ*z$I#E$)pccc9c^!4F58z=P z3-g|hSiSGIf}(K}M13x(v2%Z!hRdC=IDAWb%V-MIPG6O=JER*JD2C3NNj6lXD?7;O z%I-CxD%SQ9J+!R8rW?dy3%XDQc;oMSISd>^1)Va?lGF1?;p|aKG1Hz2`Ww+9P3|F5 zBvp76PPXOM8jUCeCnd<+;~W&IFM2Pku~ z-2oKaqy9PMKDXPg=8(*50HWSsPaGSiy{TYz#oUMa;+zL&oJ_?VO+`X0&cOL%j7EJ4 zSKa8&yykWzM@|o_W?>dLyQ-$QM>e~B)9AiA4YRv9Z+4H3&5NzmqYVHp|5;cyxUI53 zX@L@#(#@2U>Tns|mo6txJ;z?}gp)vcOo`e}29fW=E?b`UIyN8rj{b70VcV6TA@cWv zbAG1Ck0t6@!cqfP?A9dke+W(FVN7MR>a@uVSJ@c);Ke_UvoBltBJUn(>_D)>Kk@lOa1j|u+IT>MNHV{Qzwal zI5JkLlj+OWFH(FrHB1s~EMn&*pc^KOHKWDO$)4b%VTt$Vs#C<1siH4}PZiZko|GqV z_uTyCQ1fKG{To{(SQ*Ol7TwytrcW(msNacWDcU73O`n}uT`@&uBJ;wwi=`n`-}1LS zrRM|i=%<;TNE0OCuxpZ@6d1T#&k+ncl@;!$3f->J;13OB`Mo-ewp0znl0!AQ3`5N=D#GOp_+_~g8?DZ2I=8an- z`ut|%*BEy@x?RFwomlR4ufeB_ZIus-N-}128fNqdYniOI5>3{OPs53};SO+RV2BWk zs~MlByM%9*LcCU_i9HTgy6fy5ezdWw4-GueA4(H7OL8iBv?+!7{315=QDvIw$X=uS z$y+_4C4<>CF=TGh(P-_rX=Fm0QKd6oRMW*^oF3h!i;xF&r*t4pHx?2bAXGxK8pU8- zRU8WT_PD+{dppHhDaMx9i^2XmT_p1b?=;g^>gv?-X~}FT(N7;_h+uTk8ED+xUHD$V zP~wzg17EqYXm_~aHR3L&d)`|*f_+dN`;a&~7+)3D9^d((*rIjR2jbV&Oc%?npR3cw zlkw}c5$Y}L`01khuwF`{rH4gzhF*%Mr5U0(!arSfZ^wzf(`%->Pk8V;rlB6De+e_y z38#z0yyhNC>wudFCfzdVR@-fZO@3_j-Tov`sdL_d1(ICNFO+02^7GWko$+)y?_d{6 zn5;RH`lN(>&ti$IZpe`u-N~u^Hc8Eq;^S@k3nZ>iG376mI7M9~arMkouXg5u&B+`| zJMBEQL<$_)!9OVlM(yMmOKo^?)qvo@Np^RDt4FTx0N-u6CgWuWt#j&zWP^uwE2cbw z<*H>js3F>737L6!D4MP{U1cXqy!*>(eMDcIje9o@n6!WDL!tgSx zj4j>O9?I{j7ACy&85nx-9xVpJ4(=Avzy|r-*_lcNcSvsl@a>Ya_FrLn{E+s6Q(=?1 zT0LUHbtE%a`zul^v;P&2Jwo=1^M93urAmM(XO7o~kZ3M&GX0)2Ix!uHFvmXnQfG=M z9~VORVmVb_fu|63PoX?VWw-)d%DudTFgvKy${Zgxh`07$*xP zQO4bfI!t^+IviJljvi=LR!YhcZYN~jb*NIJH%ZESC|KOHi6Bb_-74!EcP6K{p>*Pl zSna$0<^K0+q=P|5ptCyMSp+(R`PH}w$gdL+E#(W!(*L3FJ?-FyTHa&NoT`+t7vv>F zJO^9xw1L85)-UYP0lipm3}$W!t}TD3OYomB<8MwklFwB9q;QCapo)gkbl!D`J7v~r zJ=_`YiO(HszTz2`%d8lVdjK@_srDu|x@(?Fhcm*xGRi2WhY?hAe>(p_IzK+0|82Ul z+6~1nC1j)ZVu8e&rx6%_uvUpf9W@$`NR1)LCdU!a!CX5$rn0=J4$O*D&hG($C$b(0 z`H;|t_8nowOSBKj%r6R!^d(XXmQPQIG}F>Uj9qEEf}A&iuc8cKdV1(4TBL6jlG?)^ zP9>!`zKsdTx6X#mLYe<{o@%I`nBF0#K#SG|%fubgIL)(l)m@P*2*1*Ec-5>&mSC&n zx=_m1%f%Nqa|a!Ncn-}_U@0z2)XSSM6mtjVqGpaBk2jZ8+0-R8=S(XUUMS(}$&~%K~9$IK&yaqKdQ*^XrPJ&m0TC4MAb(fL}a_sv*W33*0bIw zAIkM{hvYYM8@V@7FF8^hD2o_7Z0qH{@Vaohj=*|=JOFJ2$PG|6t!dV*HrbQA8#g?* z^T&V8LLazt&g%QY9=D8GK8n&pbdxCCo_ z=L+QEI_Wv^oGc^&`y)>mf%8F{YM3k+r%W`CrL}R`K=$4*@tS1U2kxrDy?a$XV}R{y z#d0HE=Xh!ZxU?d2Xx$_4X_lcxv3WoI)4KICmFRT`S0q#MAv`@l{N>4|iF=K!!eKCX z0LJd6FZ-hLEAQiKqxae5S{!ZH%HHOEzVVFBGcM1@UfFQ`fL-3#9?R{MYwZ`j?UA-z zRCXNSz}TL@QO3bZueId9h6LbK$aZl>IO5Gcz`6J}1n0Z}6!UB8QK=p93xEUI4xkQM zMJ^b0fD}=6tszd-SWDBSM>pzx4_wFhwO`>2_|NznbiI6g*m_2;d74ciB#Gd>qs96? zto0h}aY=~W$iz8h2bK5h|yin~FKqtVy5=QIn{e#F`}12@|bjToO%9CSOGXTi!e`kO< z8W$ycz#R&1{GfJrJ~OVDje({%h?e>rEumz9!&fbidc^#p=A)i>^6wdZ1`cx%w?h{a zvDxSePGn1(0dzR_2b1+ zdJ<`^Fu-s ze9t$w#EAxCA8mPaFirnSjrb>`?8X}=U;OEN=Ls-s`Z8C5Y14UT=CA6{#QL_j zw#qAT6E7GJa=U&(WrytYn%vvft0c5$gkAlKbYN2aMAUzhj(-ra#S7ZI8+n$i#If@g z8*1ct*U0aw;jN0o1=y<);^)H=iam9OXyuMuUJ2)x^~OESGsA}?Si+St>L7kZBC_&r z5;#UUKJa_ORR&r}U7*>s{FxE#TN~v^(x?Z z!`tNI+axp$VtjgxXoDchr@yxnEdkPe+JbChpqbP(dj>u`nmu2vw<8xO$JEnyVjD~J zMx2c$I)A5JG*d2IGjk?aQtNuBZ|%mC%xhEEb5t3{$_ZR_g3n3TC#2vD!e)I+ z3eJvNYR#MPO3jRt8z9t22q##5J+DXATq~LF) z;9FAgcT(^jDY!@qz9$78q~Hgfu?o~JB`VjX7}82eCv2iiGC`?l$kbMXlo(#mk*S?{ zErWvCZVj~|bpFh#ZkIyz=FxUZ-6r8c+JbiveV=J)j;dp~uB@FCeRi5MP@4_lex7>(yXH>6p(|_4r!(g0So$+;L zW&U^A4FB)h44O7_)0}m+vxRMAxx)2D-M{!!5r0Wg=J17dJ6a?u4E=IK1iqZW%*b#C zmPn%D%Zm!uv%XtFZ4a!L+M@_A-fWQC>3thVE?s)) zNiLS5pts6O-PTgviGCG#qAv+r0xeHOd7fTYR^G66=EV%$?Z#uZ8K-i#BJBSSiVGZ48>P#7;;%h zCiEaPV}L8OzD1ifp~*Pk4-F-f?WL7PRI6iXzsyvt@9^WHR$R1{uz=6#Ga!BYv*x*% zU0bVPmu?a66H7t*{$3}-w#Zar{V?M>@Y627dMRJbP5_nL4ciz z9CXV2prdI$SfJv6M&cAObBZ^z-BfALm=4NF~Giz-O>El0m&2REn4rY lIl}8dmHLlodwG(lzC7u0p!}!E$Q+?iaHl67)~dP^{~MNGipl^0 delta 14551 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 diff --git a/textproc.asm b/textproc.asm index 598fe52..a8eb1a9 100644 --- a/textproc.asm +++ b/textproc.asm @@ -2064,6 +2064,10 @@ NextChar02 dex bne @- + lda #$01 + sta sizep0 ; P0-P1 widths + sta sizep0+1 + ; set background lda #$ff ldx #100 ; top of the sprites diff --git a/variables.asm b/variables.asm index cc52773..6d5ba36 100644 --- a/variables.asm +++ b/variables.asm @@ -58,16 +58,16 @@ moneyL ;---------------------------------------------------- gainH ;how much money player gets after the round ;it is gathered during the round basing on energy - ;opponents loose after player's shoots + ;opponents lose after player's shoots .DS [MaxPlayers] gainL .DS [MaxPlayers] ;---------------------------------------------------- -looseH ;how much player looses after the round +loseH ;how much player looses after the round ;calculated from REAL energy loss ;(not only to zero energy) .DS [MaxPlayers] -looseL +loseL .DS [MaxPlayers] ;---------------------------------------------------- Energy From b12ad5efeda46c252d9912aff9a8224378bce7a8 Mon Sep 17 00:00:00 2001 From: pkali Date: Thu, 14 Jul 2022 20:35:30 -0400 Subject: [PATCH 08/16] new colors try --- constants.asm | 4 ++-- scorch.xex | Bin 41173 -> 41173 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/constants.asm b/constants.asm index 1ba37ee..7721be5 100644 --- a/constants.asm +++ b/constants.asm @@ -5,8 +5,8 @@ ;=================================================================================== ;==========================CONSTANT TABLES, do not erase!=========================== ;=================================================================================== -TankColoursTable .BYTE $88,$cc,$38,$1c,$6a,$02 -TankStatusColoursTable .BYTE $80,$c0,$30,$10,$60,$00 +TankColoursTable .BYTE $86,$46,$c6,$28,$c6,$ee +TankStatusColoursTable .BYTE $80,$40,$c4,$20,$c0,$e4 dliColorsBack :10 .by $02,$00 dliColorsFore diff --git a/scorch.xex b/scorch.xex index d745670aa5c012c9890b341d31316c45d63092f7..e9263c265809bb230a301ad9e7427031174f925a 100644 GIT binary patch delta 27 jcmcb5km>3{rVXs+JZ)~rG>*M%a5$oH;K^pe@*|o6x%CZ4 delta 30 mcmcb5km>3{rVXs++#P2uWU`nV4j2d|OkSuVyji(?lO_Pg_zUv@ From 12150a47c172009788142fcf5016dabca57aaa39 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Fri, 15 Jul 2022 10:18:57 +0200 Subject: [PATCH 09/16] Slight graphic glitches when switching screens. --- grafproc.asm | 8 ++++---- scorch.asm | 12 +++++++----- scorch.xex | Bin 41173 -> 41138 bytes textproc.asm | 23 +++++++++++++---------- 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/grafproc.asm b/grafproc.asm index 140feeb..f8fae82 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -1648,12 +1648,12 @@ EndPut4x4 .endp .proc SetMainScreen - mva #0 dmactl +; mva #0 dmactls VDLI DLIinterruptGraph ; jsr SetDLI for graphics (game) screen mwa #dl dlptrs ; issue #72 (glitches when switches) - lda dmactls - and #$fc - ora #$02 ; 2=normal, 3 = wide screen width + lda #%00111110 +; and #$fc +; ora #$02 ; 2=normal, 3 = wide screen width sta dmactls rts .endp diff --git a/scorch.asm b/scorch.asm index e26a8ac..6ebb21e 100644 --- a/scorch.asm +++ b/scorch.asm @@ -144,7 +144,7 @@ MainGameLoop jsr CallPurchaseForEveryTank ; issue #72 (glitches when switches) - mva #0 dmactl + mva #0 dmactls jsr GetRandomWind @@ -245,9 +245,11 @@ skipzeroing inc CurrentRoundNr lda #$0 - sta dmactl ; issue #72 + sta dmactls ; issue #72 jsr RmtSongSelect mva #sfx_silencer sfx_effect + jsr PMoutofscreen + jmp MainGameLoop @@ -918,9 +920,9 @@ SetunPlots ;setting up P/M graphics lda #>pmgraph sta pmbase - lda dmactls - ora #$38 ; Players and Missiles single lined - sta dmactls +; lda dmactls +; ora #$38 ; Players and Missiles single lined +; sta dmactls lda #$03 ; P/M on sta pmcntl lda #$00 diff --git a/scorch.xex b/scorch.xex index e9263c265809bb230a301ad9e7427031174f925a..2c0ecd6aff4a66762df8640cc4d8b0cf1a8643b3 100644 GIT binary patch delta 14724 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 sIey~2#hc3b;7=+2asRe>g!_Zy)FZJaZ-TLJi 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 Date: Sat, 16 Jul 2022 00:40:41 +0200 Subject: [PATCH 10/16] Rollers bug (blast radius at right edge of the screen) --- scorch.xex | Bin 41138 -> 41132 bytes weapons.asm | 9 +++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/scorch.xex b/scorch.xex index 2c0ecd6aff4a66762df8640cc4d8b0cf1a8643b3..d21bd0be4655334881293a7e1f1b20d44e14a6f4 100644 GIT binary patch delta 14157 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 w-xl3x(v@Sg)G;!e(uRFo|e@mn7KmY&$ diff --git a/weapons.asm b/weapons.asm index 3981863..8ff0ffb 100644 --- a/weapons.asm +++ b/weapons.asm @@ -901,13 +901,12 @@ UpNotYet beq HowMuchToFallRight2 .nowarn dew xdraw lda xdraw + ora xdraw+1 jne RollinContinues ; like cpw xdraw #0 - lda xdraw+1 - jne RollinContinues beq ExplodeNow HowMuchToFallRight2 inw xdraw - cpw xdraw #screenwidth + cpw xdraw #screenwidth-1 ; if without -1 it miscalculates range of explosion (why? !!!) jne RollinContinues ExplodeNow mwa xdraw xcircle ; we must store somewhere (BAD) @@ -1077,7 +1076,9 @@ UpNotYet2 cmp #1 beq HowMuchToFallRight3 .NOWARN dew xdraw - cpw xdraw #$ffff + lda xdraw + and xdraw+1 + cmp #$ff ; like cpw xdraw #$ffff jne RollinContinuesLiquid beq FillNow HowMuchToFallRight3 From 25dfe09a9d1f4d3333a9be54387a94b1325611d1 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Sat, 16 Jul 2022 14:44:12 +0200 Subject: [PATCH 11/16] Real fix for rollers bug. --- grafproc.asm | 6 +++--- scorch.xex | Bin 41132 -> 41132 bytes weapons.asm | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/grafproc.asm b/grafproc.asm index f8fae82..74d9600 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -28,15 +28,15 @@ ; begin: xdraw,ydraw - end: xbyte,ybyte ; let's store starting coordinates ; will be needed, because everything is calculated relatively - mwa #0 LineLength + mwa #$ffff LineLength mwa xdraw xtempDRAW mwa ydraw ytempDRAW ; if line goes our of the screen we are not drawing it, but... - cpw xdraw #screenwidth + cpw xdraw #screenwidth+1 bcs DrawOutOfTheScreen - cpw xbyte #screenwidth + cpw xbyte #screenwidth+1 bcs DrawOutOfTheScreen ;cpw ydraw #screenheight ;bcs DrawOutOfTheScreen diff --git a/scorch.xex b/scorch.xex index d21bd0be4655334881293a7e1f1b20d44e14a6f4..3f24fa69dfd7caefa68887a48a15b8b5b9e5e47a 100644 GIT binary patch delta 84 zcmV-a0IUD3!2+zo0jf$PU$DECa qov8qgd!3DbowFlMc^U!#lbvQC4MDIJrG?1>&;+G~$w9NpX5%@yCMbIV delta 63 zcmV-F0KosO!2+zo0 Date: Sat, 16 Jul 2022 14:52:45 +0200 Subject: [PATCH 12/16] Fix for last fix :) --- grafproc.asm | 4 ++-- scorch.xex | Bin 41132 -> 41132 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/grafproc.asm b/grafproc.asm index 74d9600..3c1bbbd 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -34,9 +34,9 @@ ; if line goes our of the screen we are not drawing it, but... - cpw xdraw #screenwidth+1 + cpw xdraw #screenwidth bcs DrawOutOfTheScreen - cpw xbyte #screenwidth+1 + cpw xbyte #screenwidth bcs DrawOutOfTheScreen ;cpw ydraw #screenheight ;bcs DrawOutOfTheScreen diff --git a/scorch.xex b/scorch.xex index 3f24fa69dfd7caefa68887a48a15b8b5b9e5e47a..86ce648d481e6df45b944229aeb389b3fddfce7c 100644 GIT binary patch delta 28 mcmV+%0OS9x!2+zo0&;+G~$w0HoX5%@+f(^O= delta 28 mcmV+%0OS9x!2+zo0&;+G~$w9NpX5%@+nhm@F From 6b0d8aa287cc61973a0b1d52c88832cfeed60723 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Sat, 16 Jul 2022 20:15:18 +0200 Subject: [PATCH 13/16] Great Laser. #110 --- scorch.xex | Bin 41132 -> 41185 bytes weapons.asm | 38 ++++++++++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/scorch.xex b/scorch.xex index 86ce648d481e6df45b944229aeb389b3fddfce7c..3784e0f1a3ed967ae45e75bc6f8583098f5a539d 100644 GIT binary patch delta 14506 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 Hy^->Nski#E diff --git a/weapons.asm b/weapons.asm index 7e4b9a5..0518707 100644 --- a/weapons.asm +++ b/weapons.asm @@ -701,7 +701,6 @@ DiggerCharacter mva #1 color mwa LaserCoordinate xdraw mwa LaserCoordinate+2 ydraw - jsr plot mva #0 HitFlag jsr CheckCollisionWithTank lda HitFlag @@ -1455,15 +1454,16 @@ RandomizeOffensiveText jsr DisplayOffensiveTextNr - ldx TankNr - lda ActiveWeapon,x - cmp #ind_Laser__________ ; laser - bne NotStrongShoot - mva #0 color - lda #7 - sta Force - sta Force+1 - bne AfterStrongShoot + ldx TankNr + lda ActiveWeapon,x + cmp #ind_Laser__________ ; laser + bne NotStrongShoot + ; Laser: very strong - invisible - shot for laser beam end coordinates + mva #0 color + lda #7 + sta Force + sta Force+1 + bne AfterStrongShoot NotStrongShoot lda ForceTableL,x sta Force @@ -2007,6 +2007,24 @@ StillUp nowait lda HitFlag bne Hit + ; --- only for Laser + ldx TankNr + lda ActiveWeapon,x + cmp #ind_Laser__________ ; Laser + bne NoCheckEdgesForLaser + ; If laser fires, edges of the screen finish "flying" and laser hits. + lda ytraj+2 + bmi LaserHitEdge + cpw xtraj+1 #screenwidth+1 + bcc LaserNoHitEdge +LaserHitEdge + mwa xdraw XHit + mwa ydraw YHit + mva #$ff HitFlag ; screen edgs like ground (only for Laser) + jmp EndOfFlight +LaserNoHitEdge + ; ------------------ +NoCheckEdgesForLaser cpw ytraj+1 #screenheight+1 bcc YTrayLowerThanScreenHeight From 738faec7e2827d41a0a0b82122e78d4e3578617e Mon Sep 17 00:00:00 2001 From: Pecusx Date: Sat, 16 Jul 2022 21:10:45 +0200 Subject: [PATCH 14/16] Better laser timing --- scorch.xex | Bin 41185 -> 41209 bytes weapons.asm | 25 ++++++++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/scorch.xex b/scorch.xex index 3784e0f1a3ed967ae45e75bc6f8583098f5a539d..ea9d615f9294bd023a270df66c17dfffb36acf13 100644 GIT binary patch delta 14355 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 delta 14283 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 Date: Sun, 17 Jul 2022 12:42:54 +0200 Subject: [PATCH 15/16] Besto of the best laser And code ordering. --- grafproc.asm | 251 +++++++++++++++++++++++++++++++++++++++++++++ scorch.xex | Bin 41209 -> 41225 bytes variables.asm | 1 + weapons.asm | 276 +++----------------------------------------------- 4 files changed, 267 insertions(+), 261 deletions(-) diff --git a/grafproc.asm b/grafproc.asm index 3c1bbbd..79e977e 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -890,6 +890,257 @@ ShieldVisible bne @- rts .endp +;-------------------------------------------------- +.proc DrawTankParachute +;Tank number in X +;-------------------------------------------------- + lda #$34 ; parachute symbol + sta CharCode + lda Ytankstable,x + sec + sbc #8 + sta ydraw + lda XtanksTableL,x + sta xdraw + lda XtanksTableH,x + sta xdraw+1 + jsr TypeChar + rts +.endp + +;-------------------------------------------------- +.proc TankFalls; +;-------------------------------------------------- + lda #0 + sta PreviousFall ; bit 7 - left, bit 6 - right + sta EndOfTheFallFlag + sta Parachute + mva #2 FallingSoundBit ; another trick for only one sfx initialization in loop + + ; let's check if the given tank has got the parachute + ldx TankNr + lda ActiveDefenceWeapon,x + cmp #ind_Parachute______ ; parachute + beq ParachuteActive + cmp #ind_StrongParachute ; strong parachute + beq ParachuteActive + cmp #ind_Force_Shield___ ; shield witch energy and parachute + bne TankFallsX +ParachuteActive + inc Parachute +TankFallsX + ; sound only if really falls + lda Parachute + and FallingSoundBit ; bit 1 + beq NoFallingSound + mva #0 FallingSoundBit + mva #sfx_shield_off sfx_effect +NoFallingSound + ; clear previous position + mva #1 Erase + jsr DrawTankNr + ; and the parachute (if present) + lda Parachute + and #01 + beq DoNotClearParachute + ; here we clear the parachute + ldx TankNr + jsr DrawTankParachute +DoNotClearParachute + mva #0 Erase + ldx TankNr + lda EndOfTheFallFlag ; We only get byte below the tank if still falling + bne NoGroundCheck + ; coordinates of the first pixel under the tank + ldx TankNr + lda XtankstableL,x + sta xdraw + lda XtankstableH,x + sta xdraw+1 + lda Ytankstable,x + clc + adc #1 ; in this point the comment helped us! For the very first + ; time in our lives! Tada! It opens a new chapter!!! + sta ydraw + ; +; UnderTank1 ; byte under tank +; UnderTank2 ; byte under tank reversed (for simple check right direction) + lda #08 + sta temp ; Loop Counter +ByteBelowTank + jsr point + beq EmptyPoint2 + sec + ror UnderTank2 + sec + bcs ROLPoint2 +EmptyPoint2 + clc + ror UnderTank2 + clc +ROLPoint2 + rol UnderTank1 + inw xdraw + dec temp + bne ByteBelowTank +NoGroundCheck + ldx TankNr + lda UnderTank1 + bne NoFallingDown + ; Tank falling down ---- + lda Parachute + and #1 + bne ParachutePresent + ; decreasing energy + ldy #2 ; how much energy to substract + jsr DecreaseEnergyX +ParachutePresent + ; check parachute type + lda ActiveDefenceWeapon,x + cmp #ind_StrongParachute ; strong parachute + bne OneTimeParachute + ; decreasing energy of parachute + ldy #2 ; how much energy to substract + jsr DecreaseShieldEnergyX + cpy #0 ; is necessary to reduce tenk energy ? + beq @+ + jsr DecreaseEnergyX +@ + ; check energy of parachute + lda ShieldEnergy,x + bne OneTimeParachute + mva #0 Parachute + mva #0 ActiveDefenceWeapon,x ; deactivate defence +OneTimeParachute + lda Parachute + ora #2 ; we set bit nr 1 (nr 0 means that parachute is present) + sta Parachute + ; tank is falling down - modify coorinates + lda Ytankstable,x + clc + adc #1 + sta Ytankstable,x + jmp EndOfFCycle +NoFallingDown + ; check direction (left or right) + ldy #7 ; SlideLeftTable length -1 (from 0 to 7) +@ lda SlideLeftTable,y + cmp UnderTank1 + beq FallingRight + cmp UnderTank2 + beq FallingLeft + dey + bpl @- + bmi NoLeftOrRight +FallingLeft + ; tank is falling left + bit PreviousFall ; bit 6 - right + bvs EndLeftFall + ; we finish falling left if the tank reached the edge of the screen + lda XtanksTableL,x + bne NotLeftEdge + lda XtanksTableH,x + beq EndLeftFall +NotLeftEdge + ; tank is falling left - modify coorinates + clc + lda XtankstableL,x + adc #1 + sta XtankstableL,x + lda XtankstableH,x + adc #0 + sta XtankstableH,x + mva #%10000000 PreviousFall ; set bit 7 - left + bne EndOfFCycle +FallingRight + ; tank is falling right + bit PreviousFall ; bit 7 - left + bmi EndRightFall + ; we finish falling right if the tank reached the edge of the screen + clc + lda XtanksTableL,x + adc #$08 ; we'll check right side of the char + sta temp + lda XtanksTableH,x + adc #0 + sta temp+1 + cpw temp #screenwidth + beq EndRightFall + ; tank is falling right - modify coorinates + sec + lda XtankstableL,x + sbc #1 + sta XtankstableL,x + lda XtankstableH,x + sbc #0 + sta XtankstableH,x + mva #%01000000 PreviousFall ; set bit 6 - right + bne EndOfFCycle +EndLeftFall +EndRightFall +NoLeftOrRight + inc EndOfTheFallFlag ; after this is shouldn't fall +EndOfFCycle + ; draw tank on new position + jsr DrawTankNr ; ew have TankNr in X (I hope :) ) + ; checking is parachute present and if so, draw it + lda Parachute + cmp #3 ; parachute and falling + bne DoNotDrawParachute + ; here we draw parachute + ldx TankNr + jsr DrawTankParachute + wait ; onli if tank with patachute +RapidFalling +DoNotDrawParachute + lda EndOfTheFallFlag + jeq TankFallsX + ; Tank falling down already finished, but it is not sure that + ; the horizontal coordinate is even. + ; If it is odd then it must be corrected because otherwise + ; P/M graphics background would not look OK + ldx TankNr + lda XtanksTableL,x + and #$01 + beq EndOfFall ; if it is even then it is the end + ; and if not, we push it one pixel the way it was falling before + lda #%10000000 ; set "virtual ground" for right falling + ldy #%00000001 + bit PreviousFall + bmi ForceFallLeft + tay ; tricky - replaces ldy #%10000000 + lda #%00000001 ; set "virtual ground" for left falling +ForceFallLeft + sta UnderTank1 + sty UnderTank2 + jne TankFallsX +EndOfFall + mva #1 Erase + ldx TankNr + ; if tank was falling down having parachute, + ; we must deduct one parachute + lda Parachute + cmp #$03 ; was falling down and the parachute + bne NoParachuteWeapon + ; first we check type of parachute + lda ActiveDefenceWeapon,x + cmp #ind_Parachute______ ; deactivate weapon only if parachute (54) + bne NoParachuteWeapon + mva #0 ActiveDefenceWeapon,x ; deactivate defence weapon (parachute) +NoParachuteWeapon + ; now we clear parachute on the screen if present + lda Parachute + and #01 + beq ThereWasNoParachute + jsr DrawTankParachute +ThereWasNoParachute + mva #0 Erase + ldx TankNr + jsr DrawTankNr ; redraw tank after erase parachute (exactly for redraw leaky schield :) ) + mva #sfx_silencer sfx_effect + rts + +.endp ;-------------------------------------------------- .proc ClearPMmemory diff --git a/scorch.xex b/scorch.xex index ea9d615f9294bd023a270df66c17dfffb36acf13..692842a935189bdbc8e5f035f89d9043102f6a5f 100644 GIT binary patch delta 14224 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 Dc#LIj delta 14181 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 DT`D1} diff --git a/variables.asm b/variables.asm index 6d5ba36..8e89e01 100644 --- a/variables.asm +++ b/variables.asm @@ -197,6 +197,7 @@ vx03 .DS [5] MirvDown .DS [5] ; is given missile down? MirvMissileCounter .DS 1 ; missile Counter (mainly for X) SmokeTracerFlag .DS 1 ; if Smoketracer +LaserFlag .DS 1 ; $ff if Laser XposFlag .DS 1 ; bullet positon X (0 - on screen , %1000000 - off-screen) YposFlag .DS 1 ; bullet positon Y (0 - on screen , %1000000 - over the screen , %0100000 - under the screen) ;---------------------------------------------------- diff --git a/weapons.asm b/weapons.asm index af57fbe..ea44c7b 100644 --- a/weapons.asm +++ b/weapons.asm @@ -655,7 +655,8 @@ DiggerCharacter .endp ; ------------------------ .proc laser -; but where are xdraw and ydraw ???? !!!! +; in xdraw and ydraw we have hit point coordinates +; from Shoot/Flight procedures (invisible flight) ; ------------------------ ldx TankNr lda AngleTable,x @@ -1464,16 +1465,17 @@ RandomizeOffensiveText mva #1 plot4x4color jsr DisplayOffensiveTextNr - + mva #0 LaserFlag ; $ff - Laser ldx TankNr lda ActiveWeapon,x cmp #ind_Laser__________ ; laser bne NotStrongShoot - ; Laser: very strong - invisible - shot for laser beam end coordinates + ; Laser: (not)very strong - invisible - shot for laser beam end coordinates mva #0 color - lda #7 + lda #1 sta Force sta Force+1 + mva #$ff LaserFlag ; $ff - Laser bne AfterStrongShoot NotStrongShoot lda ForceTableL,x @@ -1528,257 +1530,6 @@ ShotUnderGround rts .endp -;-------------------------------------------------- -.proc TankFalls; -;-------------------------------------------------- - lda #0 - sta PreviousFall ; bit 7 - left, bit 6 - right - sta EndOfTheFallFlag - sta Parachute - mva #2 FallingSoundBit ; another trick for only one sfx initialization in loop - - ; let's check if the given tank has got the parachute - ldx TankNr - lda ActiveDefenceWeapon,x - cmp #ind_Parachute______ ; parachute - beq ParachuteActive - cmp #ind_StrongParachute ; strong parachute - beq ParachuteActive - cmp #ind_Force_Shield___ ; shield witch energy and parachute - bne TankFallsX -ParachuteActive - inc Parachute -TankFallsX - ; sound only if really falls - lda Parachute - and FallingSoundBit ; bit 1 - beq NoFallingSound - mva #0 FallingSoundBit - mva #sfx_shield_off sfx_effect -NoFallingSound - ; clear previous position - mva #1 Erase - jsr DrawTankNr - ; and the parachute (if present) - lda Parachute - and #01 - beq DoNotClearParachute - ; here we clear the parachute - ldx TankNr - jsr DrawTankParachute -DoNotClearParachute - mva #0 Erase - ldx TankNr - lda EndOfTheFallFlag ; We only get byte below the tank if still falling - bne NoGroundCheck - ; coordinates of the first pixel under the tank - ldx TankNr - lda XtankstableL,x - sta xdraw - lda XtankstableH,x - sta xdraw+1 - lda Ytankstable,x - clc - adc #1 ; in this point the comment helped us! For the very first - ; time in our lives! Tada! It opens a new chapter!!! - sta ydraw - ; -; UnderTank1 ; byte under tank -; UnderTank2 ; byte under tank reversed (for simple check right direction) - lda #08 - sta temp ; Loop Counter -ByteBelowTank - jsr point - beq EmptyPoint2 - sec - ror UnderTank2 - sec - bcs ROLPoint2 -EmptyPoint2 - clc - ror UnderTank2 - clc -ROLPoint2 - rol UnderTank1 - inw xdraw - dec temp - bne ByteBelowTank -NoGroundCheck - ldx TankNr - lda UnderTank1 - bne NoFallingDown - ; Tank falling down ---- - lda Parachute - and #1 - bne ParachutePresent - ; decreasing energy - ldy #2 ; how much energy to substract - jsr DecreaseEnergyX -ParachutePresent - ; check parachute type - lda ActiveDefenceWeapon,x - cmp #ind_StrongParachute ; strong parachute - bne OneTimeParachute - ; decreasing energy of parachute - ldy #2 ; how much energy to substract - jsr DecreaseShieldEnergyX - cpy #0 ; is necessary to reduce tenk energy ? - beq @+ - jsr DecreaseEnergyX -@ - ; check energy of parachute - lda ShieldEnergy,x - bne OneTimeParachute - mva #0 Parachute - mva #0 ActiveDefenceWeapon,x ; deactivate defence -OneTimeParachute - lda Parachute - ora #2 ; we set bit nr 1 (nr 0 means that parachute is present) - sta Parachute - ; tank is falling down - modify coorinates - lda Ytankstable,x - clc - adc #1 - sta Ytankstable,x - jmp EndOfFCycle -NoFallingDown - ; check direction (left or right) - ldy #7 ; SlideLeftTable length -1 (from 0 to 7) -@ lda SlideLeftTable,y - cmp UnderTank1 - beq FallingRight - cmp UnderTank2 - beq FallingLeft - dey - bpl @- - bmi NoLeftOrRight -FallingLeft - ; tank is falling left - bit PreviousFall ; bit 6 - right - bvs EndLeftFall - ; we finish falling left if the tank reached the edge of the screen - lda XtanksTableL,x - bne NotLeftEdge - lda XtanksTableH,x - beq EndLeftFall -NotLeftEdge - ; tank is falling left - modify coorinates - clc - lda XtankstableL,x - adc #1 - sta XtankstableL,x - lda XtankstableH,x - adc #0 - sta XtankstableH,x - mva #%10000000 PreviousFall ; set bit 7 - left - bne EndOfFCycle -FallingRight - ; tank is falling right - bit PreviousFall ; bit 7 - left - bmi EndRightFall - ; we finish falling right if the tank reached the edge of the screen - clc - lda XtanksTableL,x - adc #$08 ; we'll check right side of the char - sta temp - lda XtanksTableH,x - adc #0 - sta temp+1 - cpw temp #screenwidth - beq EndRightFall - ; tank is falling right - modify coorinates - sec - lda XtankstableL,x - sbc #1 - sta XtankstableL,x - lda XtankstableH,x - sbc #0 - sta XtankstableH,x - mva #%01000000 PreviousFall ; set bit 6 - right - bne EndOfFCycle -EndLeftFall -EndRightFall -NoLeftOrRight - inc EndOfTheFallFlag ; after this is shouldn't fall -EndOfFCycle - ; draw tank on new position - jsr DrawTankNr ; ew have TankNr in X (I hope :) ) - ; checking is parachute present and if so, draw it - lda Parachute - cmp #3 ; parachute and falling - bne DoNotDrawParachute - ; here we draw parachute - ldx TankNr - jsr DrawTankParachute - wait ; onli if tank with patachute -RapidFalling -DoNotDrawParachute - lda EndOfTheFallFlag - jeq TankFallsX - ; Tank falling down already finished, but it is not sure that - ; the horizontal coordinate is even. - ; If it is odd then it must be corrected because otherwise - ; P/M graphics background would not look OK - ldx TankNr - lda XtanksTableL,x - and #$01 - beq EndOfFall ; if it is even then it is the end - ; and if not, we push it one pixel the way it was falling before - lda #%10000000 ; set "virtual ground" for right falling - ldy #%00000001 - bit PreviousFall - bmi ForceFallLeft - tay ; tricky - replaces ldy #%10000000 - lda #%00000001 ; set "virtual ground" for left falling -ForceFallLeft - sta UnderTank1 - sty UnderTank2 - jne TankFallsX -EndOfFall - mva #1 Erase - ldx TankNr - ; if tank was falling down having parachute, - ; we must deduct one parachute - lda Parachute - cmp #$03 ; was falling down and the parachute - bne NoParachuteWeapon - ; first we check type of parachute - lda ActiveDefenceWeapon,x - cmp #ind_Parachute______ ; deactivate weapon only if parachute (54) - bne NoParachuteWeapon - mva #0 ActiveDefenceWeapon,x ; deactivate defence weapon (parachute) -NoParachuteWeapon - ; now we clear parachute on the screen if present - lda Parachute - and #01 - beq ThereWasNoParachute - jsr DrawTankParachute -ThereWasNoParachute - mva #0 Erase - ldx TankNr - jsr DrawTankNr ; redraw tank after erase parachute (exactly for redraw leaky schield :) ) - mva #sfx_silencer sfx_effect - rts - -.endp - -;-------------------------------------------------- -.proc DrawTankParachute -;Tank number in X -;-------------------------------------------------- - lda #$34 ; parachute symbol - sta CharCode - lda Ytankstable,x - sec - sbc #8 - sta ydraw - lda XtanksTableL,x - sta xdraw - lda XtanksTableH,x - sta xdraw+1 - jsr TypeChar - rts -.endp ;-------------------------------------------------- .proc Flight ; Force(byte.byte), Wind(0.word) ; Angle(byte) 128=0, 255=maxright, 0=maxleft @@ -1802,7 +1553,7 @@ ThereWasNoParachute ldy #0 ldx TankNr lda ActiveWeapon,x - cmp #11 ; Smoke tracer + cmp #ind_Smoke_Tracer___ ; Smoke tracer bne noSmokeTracer iny noSmokeTracer @@ -1961,6 +1712,8 @@ Loopi sbc vy+3 sta ytraj+2 + bit LaserFlag ; no gravity if Laser + bmi NoGravity ;vy=vy-g (again without least significant byte of vy) sec lda vy+1 @@ -1979,9 +1732,9 @@ Loopi lda ActiveWeapon,x cmp #ind_MIRV___________ ; MIRV jeq MIRVdownLoop +NoGravity StillUp - clc ;xtraj=xtraj+vx (skipping least significant byte of vx) lda xtraj ;here of course Fight to right adc vx+1 @@ -1993,12 +1746,15 @@ StillUp adc vx+3 sta xtraj+2 + bit LaserFlag ; no wind if Laser + bmi NoWind clc .rept 4 lda vx+# adc Wind+# sta vx+# .endr +NoWind mwa xtrajold+1 xdraw mwa ytrajold+1 ydraw mwa xtraj+1 xbyte @@ -2019,10 +1775,8 @@ nowait lda HitFlag bne Hit ; --- only for Laser - ldx TankNr - lda ActiveWeapon,x - cmp #ind_Laser__________ ; Laser - bne NoCheckEdgesForLaser + bit LaserFlag + bpl NoCheckEdgesForLaser ; If laser fires, edges of the screen finish "flying" and laser hits. lda ytraj+2 bmi LaserHitEdge From f05af218f47f9f77282e1285f0ceb9c78e2d09ca Mon Sep 17 00:00:00 2001 From: pkali Date: Sun, 17 Jul 2022 22:04:58 -0400 Subject: [PATCH 16/16] build 148 --- README.md | 13 +++++++++++++ scorch.asm | 2 +- scorch.xex | Bin 41225 -> 41225 bytes 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0bba3f0..1e90a99 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Contributors: - Adam (@6502adam) - font, ideas, QA - Bocianu (@bocianu) - important ideas, FujiNet implementation, QA - Emkay - splash screen music +- Fox (@pfusik) - plot and point optimization QA: Probabilitydragon, KrzysRog, Beeblebrox, EnderDude, lopezpb, Dracon, brad-colbert, archon800, Shaggy the Atarian @@ -47,6 +48,18 @@ With the advent of fujinet (https://fujinet.online/) we are thinking about makin ## Changes: +###### Build 148 +2022-07-17 +WHAT DOES THE FOX SAY? + +Fox (x0f, @pfusik) says plots and points can be optimized by 18 clock cycles each and thanks to his 6502 wizardry the game is noticeably nicer. Thank you! +Other changes: +- https://github.com/pkali/scorch_src/issues/99, https://github.com/pkali/scorch_src/issues/98 - tank number 6 has got a color now! No one is monochrome now! +- https://github.com/pkali/scorch_src/issues/110 much improved laser - previously it was almost useless, now it looks and works much better +- fixed an interesting roller bug +- Auto Defense angle fix +- multiple improvements in AI routines, preparation for the final opponents. + ###### Build 147 2022-07-10 LOST build. We were watching [LOST party](https://www.lostparty.pl/2022/) streams so maybe a little less done, but still some nice improvements. diff --git a/scorch.asm b/scorch.asm index 6ebb21e..de26a6c 100644 --- a/scorch.asm +++ b/scorch.asm @@ -36,7 +36,7 @@ ;we decided it must go in 'English' to let other people work on it .macro build - dta d"147" ; number of this build (3 bytes) + dta d"148" ; number of this build (3 bytes) .endm icl 'definitions.asm' diff --git a/scorch.xex b/scorch.xex index 692842a935189bdbc8e5f035f89d9043102f6a5f..d1439d199b4d1a0694013e359bbaa88a0f586ec3 100644 GIT binary patch delta 25 hcmeA?#MF6+X+jdC#N>~H;Tw19XfjG{ey*uh4giEK3C92c delta 25 hcmeA?#MF6+X+jdC_~eg*;Tw19Xfld#ey*uh4giD}3B>>a