From 4c3203854cc40dfa9b19421b85cf1358a397db2c Mon Sep 17 00:00:00 2001 From: pkali Date: Sat, 4 Jun 2022 16:07:01 -0400 Subject: [PATCH] letting winds #82 --- constants.asm | 2 +- scorch.asm | 23 ++++++-- scorch.xex | Bin 38054 -> 38000 bytes textproc.asm | 20 ++++--- variables.asm | 5 +- weapons.asm | 150 ++++++++++++-------------------------------------- 6 files changed, 70 insertions(+), 130 deletions(-) diff --git a/constants.asm b/constants.asm index 859ceb6..83e2372 100644 --- a/constants.asm +++ b/constants.asm @@ -889,7 +889,7 @@ NamesOfWeapons ;the comment is an index in the tables dta d"White Flag " ; 63 weaponsOfDeath dta 1,2,3,7,15,16,17,18,19,20,21,22,23,24,25,26,27 -weaponsOfDeathEnd +weaponsOfDeathEnd joyToKeyTable ; .by 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15 .by $ff,$ff,$ff,$ff,$ff,$ff,$ff,$07,$ff,$ff,$ff,$06,$ff,$0f,$0e,$ff diff --git a/scorch.asm b/scorch.asm index 89c7e23..641f3cc 100644 --- a/scorch.asm +++ b/scorch.asm @@ -399,7 +399,7 @@ RoboTanks ; robotanks shoot here jsr ArtificialIntelligence jsr MoveBarrelToNewPosition - jsr StatusDisplay ;all digital values like force, angle, wind, etc. + jsr DisplayStatus ;all digital values like force, angle, wind, etc. jsr PutTankNameOnScreen ; let's move the tank's barrel so it points the right ; direction @@ -414,7 +414,7 @@ AfterManualShooting inc noDeathCounter jsr DecreaseWeaponBeforeShoot - jsr StatusDisplay + jsr DisplayStatus ldx TankNr dec Energy,x ; lower energy to eventually let tanks commit suicide @@ -710,18 +710,31 @@ NotNegativeEnergy ;-------------------------------------------------- GetRandomWind .proc +;in: MaxWind (byte) +;out: Wind (word) +;uses: _ ;-------------------------------------------------- lda random cmp MaxWind bcs GetRandomWind ; if more than MaxWind then randomize again sta Wind mva #$00 Wind+1 - ; multiply Wind by 16 and take it as a decimal part (0.Wind) + sta Wind+2 + sta Wind+3 + ; multiply Wind by 16 + ; two bytes of Wind are treated as a decimal part of vx variable :4 aslw Wind + ; decide the direction lda random and #$01 - sta WindOrientation - rts + beq @+ + sec ; Wind = -Wind + .rept 4 + lda #$00 + sbc Wind+# + sta Wind+# + .endr +@ rts .endp ;-------------------------------------------------- diff --git a/scorch.xex b/scorch.xex index 4aa0362d6647db54772b8e3b69a8c665d6b2d667..968ef3883d6018c70bbc7d5ae56f6658f966db81 100644 GIT binary patch delta 13424 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 ashQ&uA`ccv9aLs}YUX-gf4q2V^#1`81JHZ` delta 13464 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 i7Iepo^~dBicilX<5O%CM{Fpr3T{qwTW>4) ;----------------------------------- MaxWind .ds 1 ; WindOrientation .DS 1 ;(0-right,1-left) diff --git a/weapons.asm b/weapons.asm index 264a32d..e713e3e 100644 --- a/weapons.asm +++ b/weapons.asm @@ -991,7 +991,7 @@ ContinueToCheckMaxForce2 lda MaxForceTableL,x sta ForceTableL,x @ - jsr StatusDisplay ;all digital values like force, angle, wind, etc. + jsr DisplayStatus ;all digital values like force, angle, wind, etc. jsr PutTankNameOnScreen jsr DrawTankNr @@ -1501,7 +1501,8 @@ ThereWasNoParachute .endp ;-------------------------------------------------- -.proc Flight ; Force(byte.byte), Angle(byte), Wind(.byte) 128=0, 255=maxright, 0=maxleft +.proc Flight ; Force(byte.byte), Wind(0.word) +; Angle(byte) 128=0, 255=maxright, 0=maxleft ;-------------------------------------------------- ;g=-0.1 ;vx=Force*sin(Angle) @@ -1554,7 +1555,7 @@ RepeatIfSmokeTracer ;255-90 (165) horizontally left bpl FlightRight - + ;and if the highest bit is set then ;Flight to LEFT ;calculate Angle with this formula: @@ -1563,12 +1564,14 @@ RepeatIfSmokeTracer sec txa sbc #165 ;(Angle-165) - sta temp ;dirty trick with selfmodifying code (REMOVED) - lda #90 ; + sta temp + lda #90 sbc temp ;90-(Angle-165) ;and we have rady angle here ... and we go LEFT! tax sta Angle + + ; mva #1 goleft ; and now we contine as if nothing happened ; (but we have goleft set to 1!!!) @@ -1580,7 +1583,7 @@ FlightRight dontzerogoleft lda sintable,x ;sin(Angle) - sta Multiplee ;sin(Angle)*Force + sta Multiplee ;sin(Angle)*Force mwa Force Multiplier lda #$0 sta Multiplier+2 @@ -1605,10 +1608,19 @@ DoNotAdd rol Multiplier+2 dex bne MultiplyLoop - ; here in vx there is a number xxxx.yyy = sin(Angle)*Force - - mva #0 vx+3 ;vx=sin(Angle)*Force - + + mva #0 vx+3 + ; here in vx there is a number + ; xxxx.xx00 = sin(Angle)*Force + ; negate it if going left + lda goleft + beq @+ + .rept 4 + lda #$00 + sbc vx+# + sta vx+# + .endr +@ ;======vy lda #0 ;cos(Angle) sta vy @@ -1646,7 +1658,8 @@ DoNotAddY rol Multiplier+2 dex bne MultiplyLoopY - ; here in vy there is a number xxxx.yyy=cos(Angle)*Force + ; here in vy there is a number + ; yyyy.yy=cos(Angle)*Force mva #0 vy+3 ;vy=cos(Angle)*Force @@ -1682,8 +1695,7 @@ Loopi cmp #6 ; MIRV jeq MIRVdownLoop StillUp - lda goleft - bne FlightLeft + clc ;xtraj=xtraj+vx (skipping least significant byte of vx) lda xtraj ;here of course Fight to right @@ -1695,66 +1707,13 @@ StillUp lda xtraj+2 adc vx+3 sta xtraj+2 - jmp @+ ;skipping substracting for Flight to left -FlightLeft - sec ;xtraj=xtraj-vx (skipping least significant byte of vx) - lda xtraj ;here of course Fight to left - sbc vx+1 - sta xtraj - lda xtraj+1 - sbc vx+2 - sta xtraj+1 - lda xtraj+2 - sbc vx+3 - sta xtraj+2 - -@ - ;vx=vx-Wind (also without least significan byte of vx) - lda goleft - bne FlightsLeft ;blow on bullet flighting left - lda WindOrientation - bne LWindToRight - beq LWindToLeft -FlightsLeft - lda WindOrientation - beq LWindToRight - -LWindToLeft - ; here Wind to right, bullet goes right as well, so vx=vx+Wind - ; here Wind to left, bullet goes left as well, so vx=vx+Wind clc - lda vx - adc Wind - sta vx - lda vx+1 - adc Wind+1 - sta vx+1 - lda vx+2 - adc #0 - sta vx+2 - lda vx+3 - adc #0 - sta vx+3 - jmp @+ - -LWindToRight - ;Wind to left, bullet right, so vx=vx-Wind - ;Wind to right, bullet left, so vx=vx-Wind - sec - lda vx - sbc Wind - sta vx - lda vx+1 - sbc Wind+1 - sta vx+1 - lda vx+2 - sbc #0 - sta vx+2 - lda vx+3 - sbc #0 - sta vx+3 -@ + .rept 4 + lda vx+# + adc Wind+# + sta vx+# + .endr mwa xtrajold+1 xdraw mwa ytrajold+1 ydraw mwa xtraj+1 xbyte @@ -2023,51 +1982,14 @@ mrFlightLeft mrskip07 - ;vx=vx-Wind (also without least significan byte of vx) + ;vx=vx+Wind - lda goleft - bne mrFlightsLeft ;blow on bullet flighting left - lda WindOrientation - bne mrWindToLeft - beq mrLWindToLeft -mrFlightsLeft - lda WindOrientation - beq mrLWindToRight -mrLWindToLeft - ; here Wind to right, bullet goes right as well, so vx=vx+Wind - ; here Wind to left, bullet goes left as well, so vx=vx+Wind clc - lda vx00,x - adc Wind - sta vx00,x - lda vx01,x - adc Wind+1 - sta vx01,x - lda vx02,x - adc #0 - sta vx02,x - lda vx03,x - adc #0 - sta vx03,x - Jmp mrskip08 -mrWindToLeft -mrLWindToRight - ;Wind to left, bullet right, so vx=vx-Wind - ;Wind to right, bullet left, so vx=vx-Wind - sec - lda vx00,x - sbc Wind - sta vx00,x - lda vx01,x - sbc Wind+1 - sta vx01,x - lda vx02,x - sbc #0 - sta vx02,x - lda vx03,x - sbc #0 - sta vx03,x -mrskip08 + .rept 4 + lda vx+# + adc Wind+# + sta vx+# + .endr ; rules for a falling MIRV bulets. ; if Y is negative and any X (bullet over the screen) - continue flying