From 6ece26237c200cb60baf47c4d969ee31583020c4 Mon Sep 17 00:00:00 2001 From: pkali Date: Sat, 2 Jul 2022 08:20:32 -0400 Subject: [PATCH 1/2] laser update --- scorch.xex | Bin 40586 -> 40489 bytes weapons.asm | 44 ++++++++++++++++++++------------------------ 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/scorch.xex b/scorch.xex index bd8213250d684a48b12f7d7da0b1bf444ab5633d..62ee25954a2eebd747c1265f222438f739c96c07 100644 GIT binary patch delta 13595 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 delta 13706 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 Ke?-y6r2hqute2Vq diff --git a/weapons.asm b/weapons.asm index 83fd3af..5e0f802 100644 --- a/weapons.asm +++ b/weapons.asm @@ -536,35 +536,31 @@ DiggerCharacter lda #$00 sbc #$00 sta ybyte+1 + mva #0 drawFunction + mwa xdraw LaserCoordinate mwa ydraw LaserCoordinate+2 mwa xbyte LaserCoordinate+4 mwa ybyte LaserCoordinate+6 - mva #sfx_lightning sfx_effect - jsr draw - mva #0 color - mwa LaserCoordinate xdraw - mwa LaserCoordinate+2 ydraw - mwa LaserCoordinate+4 xbyte - mwa LaserCoordinate+6 ybyte - mva #sfx_lightning sfx_effect - jsr draw - mva #1 color - mwa LaserCoordinate xdraw - mwa LaserCoordinate+2 ydraw - mwa LaserCoordinate+4 xbyte - mwa LaserCoordinate+6 ybyte - mva #sfx_lightning sfx_effect - jsr draw - mva #0 color - mwa LaserCoordinate xdraw - mwa LaserCoordinate+2 ydraw - mwa LaserCoordinate+4 xbyte - mwa LaserCoordinate+6 ybyte - mva #sfx_lightning sfx_effect - jsr draw + + mva #51 yc ; laser blink counter +@ + lda yc + and #$01 + sta color + mwa LaserCoordinate xdraw + mwa LaserCoordinate+2 ydraw + mwa LaserCoordinate+4 xbyte + mwa LaserCoordinate+6 ybyte + mva #sfx_lightning sfx_effect + mva #sfx_lightning sfx_effect + jsr draw + + dec:lda yc + bpl @- + mva #1 color mwa LaserCoordinate xdraw mwa LaserCoordinate+2 ydraw @@ -1795,7 +1791,7 @@ Loopi ; we check if it is MIRV and if so, jump to MIRV routine ldx TankNr lda ActiveWeapon,x - cmp #6 ; MIRV + cmp #ind_MIRV___________ ; MIRV jeq MIRVdownLoop StillUp From e9a59b1475975a5a8cc2f81e3758393a896fde9e Mon Sep 17 00:00:00 2001 From: pkali Date: Sun, 3 Jul 2022 00:02:06 -0400 Subject: [PATCH 2/2] sensible angles work! --- constants.asm | 156 ++++++++++++++++++++++++-------------------------- grafproc.asm | 13 +---- scorch.asm | 8 +-- scorch.xex | Bin 40489 -> 40282 bytes textproc.asm | 39 +++++++------ weapons.asm | 114 ++++++++++++++++++------------------ 6 files changed, 161 insertions(+), 169 deletions(-) diff --git a/constants.asm b/constants.asm index e39389b..98d315e 100644 --- a/constants.asm +++ b/constants.asm @@ -70,32 +70,6 @@ pmtableH .by >(pmgraph+$700) .by >(pmgraph+$300) ;----------- -; this table changes Angle to the appropriate tank character -BarrelTableL - .by $02,$02,$02,$02,$02,$02,$02,$02 - .by $04,$04,$04,$04,$04,$04,$04,$04 - .by $06,$06,$06,$06,$06,$06,$06,$06,$06 - .by $08,$08,$08,$08,$08,$08,$08,$08 - .by $0a,$0a,$0a,$0a,$0a,$0a,$0a,$0a - .by $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c - .by $0e,$0e,$0e,$0e,$0e,$0e,$0e,$0e - .by $10,$10,$10,$10,$10,$10,$10,$10 - .by $12,$12,$12,$12,$12,$12,$12,$12,$12 - .by $14,$14,$14,$14,$14,$14,$14,$14 - .by $16,$16,$16,$16,$16,$16,$16,$16 -BarrelTableR - .by $2c,$2c,$2c,$2c,$2c,$2c,$2c,$2c - .by $2a,$2a,$2a,$2a,$2a,$2a,$2a,$2a - .by $28,$28,$28,$28,$28,$28,$28,$28,$28 - .by $26,$26,$26,$26,$26,$26,$26,$26 - .by $24,$24,$24,$24,$24,$24,$24,$24 - .by $22,$22,$22,$22,$22,$22,$22,$22,$22 - .by $20,$20,$20,$20,$20,$20,$20,$20 - .by $1e,$1e,$1e,$1e,$1e,$1e,$1e,$1e - .by $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c - .by $1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a - .by $18,$18,$18,$18,$18,$18,$18,$18 - sintable .by 0 .by 4 @@ -221,67 +195,89 @@ SlideLeftTable .BY %00000111 .BY %00001100 +;----------------------------------------------------------- +; this table changes Angle to the appropriate tank character +BarrelTable + + .by $2C,$2C,$2C,$2C,$2C,$2C,$2C,$2C,$2A,$2A, + .by $2A,$2A,$2A,$2A,$2A,$2A,$28,$28,$28,$28, + .by $28,$28,$28,$28,$28,$26,$26,$26,$26,$26, + .by $26,$26,$26,$24,$24,$24,$24,$24,$24,$24, + .by $24,$22,$22,$22,$22,$22,$22,$22,$22,$22, + .by $20,$20,$20,$20,$20,$20,$20,$20,$1E,$1E, + .by $1E,$1E,$1E,$1E,$1E,$1E,$1C,$1C,$1C,$1C, + .by $1C,$1C,$1C,$1C,$1C,$1A,$1A,$1A,$1A,$1A, + .by $1A,$1A,$1A,$18,$18,$18,$18,$18,$18,$18, + ;.by $18, + + .by $16,$16,$16,$16,$16,$16,$16,$16,$14,$14, + .by $14,$14,$14,$14,$14,$14,$12,$12,$12,$12, + .by $12,$12,$12,$12,$12,$10,$10,$10,$10,$10, + .by $10,$10,$10,$0E,$0E,$0E,$0E,$0E,$0E,$0E, + .by $0E,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C, + .by $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A,$08,$08, + .by $08,$08,$08,$08,$08,$08,$06,$06,$06,$06, + .by $06,$06,$06,$06,$06,$04,$04,$04,$04,$04, + .by $04,$04,$04,$02,$02,$02,$02,$02,$02,$02, + .by $02, + EndOfTheBarrelX - ; right angles from 0 (vertically up) to 90 (horizontally to the right) - .by 4,4,4,4,4,4,4,4,4,4,4 - .by 5,5,5,5,5,5,5,5,5,5 - .by 6,6,6,6,6,6,6,6,6 - .by 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 - .by 7,7,7,7,7,7,7,7,7 - .by 7,7,7,7,7,7,7,7,7,7 - .by 7,7,7,7,7,7,7,7,7,7,7,7,7 - .by 7,7,7,7,7,7,7,7,7,7,7,7,7,7 + ; right angles from 0 (horizontally right) to 90 (up) - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0 ; not used + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,6,6,6,6,6,6,6,6,6, + .by 5,5,5,5,5,5,5,5,5,5, + .by 4,4,4,4,4,4,4,4,4,4, + ;.by 4, - ; left angles from 90 (horizontally to the left) to 1 (vertically up) - .by 0,0,0,0,0,0,0,0,0,0,0,0,0,0 - .by 0,0,0,0,0,0,0,0,0,0,0,0,0 - .by 0,0,0,0,0,0,0,0,0,0 - .by 0,0,0,0,0,0,0,0,0 - .by 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - .by 1,1,1,1,1,1,1,1,1 - .by 2,2,2,2,2,2,2,2,2,2 - .by 3,3,3,3,3,3,3,3,3,3,3 + ; left angles from 90 (vertical) to 180 (horizontally left) + .by 3,3,3,3,3,3,3,3,3,3, + .by 3,2,2,2,2,2,2,2,2,2, + .by 2,1,1,1,1,1,1,1,1,1, + .by 0,0,0,0,0,0,0,0,0,0, + .by 0,0,0,0,0,0,0,0,0,0, + .by 0,0,0,0,0,0,0,0,0,0, + .by 0,0,0,0,0,0,0,0,0,0, + .by 0,0,0,0,0,0,0,0,0,0, + .by 0,0,0,0,0,0,0,0,0,0, + .by 0 EndOfTheBarrelY - ; right angles from 0 (vertically up) to 90 (horizontally to the right) - .by 7,7,7,7,7,7,7,7,7,7,7 - .by 7,7,7,7,7,7,7,7,7,7 - .by 7,7,7,7,7,7,7,7,7 - .by 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 - .by 6,6,6,6,6,6,6,6,6 - .by 5,5,5,5,5,5,5,5,5,5 - .by 4,4,4,4,4,4,4,4,4,4,4,4,4 - .by 4,4,4,4,4,4,4,4,4,4,4,4,4,4 ; one pixel Up for fix problems with colision check -; .by 3,3,3,3,3,3,3,3,3,3,3,3,3,3 +; right angles from 0 (horizontally right) to 90 (up) - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0,0,0,0,0,0,0 ; not used - .by 0,0,0,0 ; not used + ; one pixel Up for fix problems with colision check + ;.by 3,3,3,3,3,3,3,3,3,3,3,3,3,3 + .by 4,4,4,4,4,4,4,4,4,4, + .by 4,4,4,4,4,4,4,4,4,4, + .by 4,4,4,4,4,4,4,5,5,5, + .by 5,5,5,5,5,5,5,6,6,6, + .by 6,6,6,6,6,6,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + ;.by 7, + +; left angles from 90 (vertical) to 180 (horizontally left) + + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,7,7,7,7,7, + .by 7,7,7,7,7,6,6,6,6,6, + .by 6,6,6,6,5,5,5,5,5,5, + .by 5,5,5,5,4,4,4,4,4,4, + .by 4,4,4,4,4,4,4,4,4,4, + .by 4,4,4,4,4,4,4,4,4,4, + .by 4, + ; one pixel Up for fix problems with colision check + ;.by 3,3,3,3,3,3,3,3,3,3,3,3,3,3 - ; left angles from 90 (horizontally to the left) to 1 (vertically up) -; .by 3,3,3,3,3,3,3,3,3,3,3,3,3,3 - .by 4,4,4,4,4,4,4,4,4,4,4,4,4,4 ; one pixel Up for fix problems with colision check - .by 4,4,4,4,4,4,4,4,4,4,4,4,4 - .by 5,5,5,5,5,5,5,5,5,5 - .by 6,6,6,6,6,6,6,6,6 - .by 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 - .by 7,7,7,7,7,7,7,7,7 - .by 7,7,7,7,7,7,7,7,7,7 - .by 7,7,7,7,7,7,7,7,7,7,7 ;------------------------------------------------- TanksNamesDefault diff --git a/grafproc.asm b/grafproc.asm index 218498e..1a55c8b 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -619,19 +619,8 @@ SkipRemovigPM lda AngleTable,x - bmi AngleToLeft01 - lda #90 - sec - sbc AngleTable,x tay - lda BarrelTableR,y - jmp CharacterAlreadyKnown -AngleToLeft01 - sec - sbc #(255-90) - tay - lda BarrelTableL,y -CharacterAlreadyKnown + lda BarrelTable,y sta CharCode DrawTankNrX ldx tanknr diff --git a/scorch.asm b/scorch.asm index 00967db..f445b6e 100644 --- a/scorch.asm +++ b/scorch.asm @@ -1079,9 +1079,9 @@ UsageLoop bcs RandomizeAngle - sta temp - lda #90 ; CARRY=0 here - sbc temp + ;sta temp + ;lda #90 ; CARRY=0 here + ;sbc temp rts .endp @@ -1347,7 +1347,7 @@ font4x4 ins 'artwork/font4x4s.bmp',+62 ;---------------------------------------------- TankFont - ins 'artwork/tanks.fnt' + ins 'artwork/tanksv2.fnt' ;---------------------------------------------- icl 'variables.asm' ;---------------------------------------------- diff --git a/scorch.xex b/scorch.xex index 62ee25954a2eebd747c1265f222438f739c96c07..18c2910b6b3908cc75b1ecb1d18fcc3fc53d6485 100644 GIT binary patch delta 14880 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 delta 14963 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 Y-hdc&pd|W$Iy+E1C$Mcn+3AG;1+63XBme*a diff --git a/textproc.asm b/textproc.asm index e632d29..cac0e40 100644 --- a/textproc.asm +++ b/textproc.asm @@ -1205,7 +1205,7 @@ CheckNextLevel .proc displaydec ;decimal (word), displayposition (word) ;-------------------------------------------------- ; displays decimal number as in parameters (in text mode) -; leading zeores are removed +; leading zeroes are removed ; the range is (0000..9999 - two bytes) ldy #3 ; there will be 4 digits @@ -1907,33 +1907,36 @@ NoShieldEnergy ldx TankNr lda AngleTable,x bmi AngleToLeft - lda #$7f ; (tab) character - sta textbuffer+40+25 - lda #0 ;space - sta textbuffer+40+22 - lda #90 - sec - sbc AngleTable,x + + lda AngleTable,x sta decimal + ;lda #$7f ; (tab) character + ;sta textbuffer+40+25 + lda #0 ;space + ;sta textbuffer+40+22 + sta decimal+1 ; angle is single byte, but displayed with displaydec (word) routine + ;lda #90 + ;sec + ;sbc AngleTable,x tay - lda BarrelTableR,y + lda BarrelTable,y sta CharCode bne AngleDisplay ;like jmp, because code always <>0 AngleToLeft - sec - sbc #(255-90) + ;sec + ;sbc #(255-90) sta decimal tay - lda BarrelTableL,y + lda BarrelTable,y sta CharCode - lda #$7e ;(del) char - sta textbuffer+40+22 - lda #0 ;space - sta textbuffer+40+25 + ;lda #$7e ;(del) char + ;sta textbuffer+40+22 + ;lda #0 ;space + ;sta textbuffer+40+25 AngleDisplay - mwa #textbuffer+40+23 displayposition - jsr displaybyte + mwa #textbuffer+40+21 displayposition + jsr displaydec ;========================= ;display Wind diff --git a/weapons.asm b/weapons.asm index 5e0f802..e67e9ac 100644 --- a/weapons.asm +++ b/weapons.asm @@ -202,11 +202,8 @@ FunkyBombLoop lda random sta Force mva #1 Force+1 - ;Angle randomization Range: (-16..+16) - lda random - lsr - and #%00011111 - scc:eor #$ff + ;Angle randomization Range: (70-110 degrees) + randomize 70 110 sta Angle lda #0 @@ -544,7 +541,7 @@ DiggerCharacter mwa xbyte LaserCoordinate+4 mwa ybyte LaserCoordinate+6 - + mva #sfx_lightning sfx_effect mva #51 yc ; laser blink counter @ lda yc @@ -555,7 +552,6 @@ DiggerCharacter mwa LaserCoordinate+4 xbyte mwa LaserCoordinate+6 ybyte mva #sfx_lightning sfx_effect - mva #sfx_lightning sfx_effect jsr draw dec:lda yc @@ -1175,34 +1171,34 @@ CTRLPressedDown bmi ForceGoesZero jmp BeforeFire -pressedLeft +pressedRight mva #sfx_set_power_2 sfx_effect ldx TankNr dec AngleTable,x lda AngleTable,x - cmp #$ff ; if angle goes through 0 we clear the barrel - bne NotThrough90DegreesLeft - mva #$2e CharCode - jsr DrawTankNr.drawtankNrX -NotThrough90DegreesLeft - cmp #(255-91) + ;cmp #180 ; if angle goes through 180 we clear the barrel + ;bne NotThrough90DegreesLeft + ;mva #$2e CharCode ; TODO: change + ;jsr DrawTankNr.drawtankNrX +;NotThrough90DegreesLeft + cmp #255 ; -1 jne BeforeFire - lda #90 + lda #180 sta AngleTable,x jmp BeforeFire -pressedRight +pressedLeft mva #sfx_set_power_2 sfx_effect ldx TankNr INC AngleTable,x lda AngleTable,x - bne NotThrough90DegreesRight - mva #$30 CharCode ; if angle goes through 0 we clear the barrel - jsr DrawTankNr.drawtankNrX -NotThrough90DegreesRight - cmp #91 + ;bne NotThrough90DegreesRight + ;mva #$30 CharCode ; if angle goes through 0 we clear the barrel + ;jsr DrawTankNr.drawtankNrX +;NotThrough90DegreesRight + cmp #181 jne BeforeFire - lda #(255-90) + lda #0 sta AngleTable,x jmp BeforeFire @@ -1606,8 +1602,8 @@ ThereWasNoParachute ; Angle(byte) 128=0, 255=maxright, 0=maxleft ;-------------------------------------------------- ;g=-0.1 -;vx=Force*sin(Angle) -;vy=Force*cos(Angle) +;vx=Force*cos(Angle) +;vy=Force*sin(Angle) ; ;:begin ;ytraj=ytray-vy @@ -1617,6 +1613,9 @@ ThereWasNoParachute ;plot xtraj,ytraj - there is clearing in plot ;goto begin + + + ; smoke tracer :) ldy #0 ldx TankNr @@ -1644,45 +1643,41 @@ RepeatFlight sta ydraw+1 ;vx calculation + ;vx = sin(90-Angle) for Angle <=90 + ;vx = -sin(Angle-90) for 90 < Angle <= 180 aslw Force ;Force = Force * 2 - ;sin(Angle) + ;cos(Angle) (but we use sin table only so some shenanigans happen) ldx Angle stx LeapFrogAngle ; we will need it later ;Angle works like this: - ;0 'degrees' is straight up - ;90 'degrees' is horizontally right - ;255 is straight up (same as 0) - ;255-90 (165) horizontally left + ;0 'degrees' is horizontally right + ;90 'degrees' is straight up + ;180 horizontally left - bpl FlightRight + ; (we have to set goleft used in rolling weapons) + + cpx #91 + bcc angleUnder90 - ;and if the highest bit is set then - ;Flight to LEFT - ;calculate Angle with this formula: - ;Angle=90-(Angle-165) - - sec - txa - sbc #165 ;(Angle-165) - sta temp - lda #90 - sbc temp ;90-(Angle-165) - ;and we have rady angle here ... and we go LEFT! - tax - sta Angle - - ; and now we contine as if nothing happened - ; (but we have goleft set to 1!!!) + ;over 90 mva #1 goleft - bne @+ + sec + txa ; lda # Angle + sbc #90 + tax + jmp @+ -FlightRight +angleUnder90 mva #0 goleft -@ - lda sintable,x ;sin(Angle) - sta Multiplee ;sin(Angle)*Force + sec ; X = 90-Angle + lda #90 + sbc Angle + tax +@ + lda sintable,x ; cos(X) + sta Multiplee ; *Force mwa Force Multiplier lda #$0 sta Multiplier+2 @@ -1721,18 +1716,27 @@ DoNotAdd .endr @ ;======vy - lda #0 ;cos(Angle) + ;vy = sin(Angle) for Angle <=90 + ;vy = sin(180-Angle) for 90 < Angle <= 180 + + lda #0 sta vy sta vy+1 sta vy+2 ;-- - lda #90 + ldx Angle + cpx #91 + bcc YangleUnder90 + + lda #180 sec sbc Angle tax + +YangleUnder90 lda sintable,x - sta Multiplee ;cos(Angle)*Force + sta Multiplee ;sin(Angle)*Force mwa Force Multiplier lda #$0 sta Multiplier+2