diff --git a/MANUAL_EN.md b/MANUAL_EN.md index 0388b04..bf4c73a 100644 --- a/MANUAL_EN.md +++ b/MANUAL_EN.md @@ -178,9 +178,9 @@ Only these points determine the order in the summary * **Nuclear Winter** - adds nothing, takes nothing away :) - in fact, it is not so much a defensive weapon as a double-edged one. It floods the area with "radioactive" fallout, which is ordinary soil. If you do not have at hand any weapon that digs up the terrain, and for that a shield (preferably disposable), then after such "fallout" you will have to shoot yourself - because being underground is otherwise impossible. Alternatively, **White Flag** always remains. * **Long Schlong** - a special weapon :) - Costs a lot, doesn't really help with anything (except possibly digging yourself out but only when slightly buried but it has a cool name and looks cool :) - It can be activated independently of other defensive weapons and remains active until the end of the round (it cannot be deactivated). -Due to the different operations of **MIRV** weapons, **Bouncy Castle** and **Mag Deflector** only use the shielding function when hit by these weapons. +Due to the different operations of **MIRV**, defensive weapons **Bouncy Castle** and **Mag Deflector** only use the shielding function when hit by these weapons. In addition, **MIRV** heads do not bounce or fly through sidewalls during descent! -In addition, none of the shields protect against **Napalm**. **Bouncy Castle** or **Mag Deflector** on a direct hit will deflect it or carry it past, but just hit very close to a tank and its shield will not work. +None of the shields protect against **Napalm**. **Bouncy Castle** or **Mag Deflector** on a direct hit will deflect it or carry it past, but just hit very close to a tank and its shield will not work. **White Flag**, **Hovercraft** and **Nuclear Winter** weapons, when selected, require activation, this is accomplished by "firing a shot" after the selection of that weapon. Of course, the shot of the offensive weapon is then not fired, but only the selected defensive weapon is activated. diff --git a/MANUAL_PL.md b/MANUAL_PL.md index f8ec89c..2f40136 100644 --- a/MANUAL_PL.md +++ b/MANUAL_PL.md @@ -173,9 +173,9 @@ Tylko te punkty decydują o kolejności w podsumowaniu * **Nuclear Winter** - nic nie dodaje, nic nie zabiera :) - w zasadzie to broń nie tyle defensywna co obosieczna. Zasypuje teren opadem "radioaktywnym", który jest zwyczajną glebą. Jeśli nie mamy pod ręką żadnej broni odkopującej teren i do tego osłony (najlepiej jednorazowej), to po takim "opadzie" będzie trzeba strzelić do siebie - bo będąc pod ziemią inaczej się nie da. Ewentualnie pozostaje zawsze White Flag. * **Long Schlong** - broń specjalna :) - kosztuje dużo, nie bardzo w czymkolwiek pomaga (poza ewentualnym odkopaniem się ale tylko przy niewielkim przysypaniu ale fanie się nazywa i wygląda :) - Można ją aktywować niezależnie od innych broni defensywnych i pozostaje aktywna do końca rundy (nie da się jej deaktywować). -W związku z odmiennym działaniem broni **MIRV**, **Bouncy Castle** i **Mag Deflector** wykorzystują tylko funkcję osłony przy trafieniu tą bronią. +W związku z odmiennym działaniem broni **MIRV**, bronie defensywne **Bouncy Castle** i **Mag Deflector** wykorzystują tylko funkcję osłony przy trafieniu tą bronią. Dodatkowo głowice **MIRV** w czasie opadania nie odbijają się i nie przelatują przez ściany boczne! -Dodatkowo, żadna z osłon nie chroni przed Napalmem. Auto Defense czy Mag Deflector przy bezpośrednim trafieniu odbije je lub przeniesie obok, ale wystarczy trafić bardzo blisko czołgu i nie zadziała jego osłona. +Żadna z osłon nie chroni przed **Napalm**. **Auto Defense** czy **Mag Deflector** przy bezpośrednim trafieniu odbije je lub przeniesie obok, ale wystarczy trafić bardzo blisko czołgu i nie zadziała jego osłona. Bronie **White Flag**, **Hovercraft** i **Nuclear Winter** po aktywacji wymagają uruchomienia, jest to realizowanie przez "oddanie strzału" po aktywacji tej broni. Oczywiście strzał bronią ofensywną nie jest wtedy oddawany, a jedynie uruchamiana jest wybrana broń defensywna. diff --git a/display.asm b/display.asm index 735cf65..af1cced 100644 --- a/display.asm +++ b/display.asm @@ -104,18 +104,18 @@ OptionsScreen dta d" Please select option with cursor keys " dta d" and press (Return) to proceed " MoreUp - dta d" " + dta d" " dta 92,92,92 dta d" more " dta 92,92,92 - dta d" " + dta d" " .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! MoreDown - dta d" " + dta d" " dta 93,93,93 dta d" more " dta 93,93,93 - dta d" " + dta d" " WeaponsDescription ; 0123456789012345678901234567890123456789 dta d"Tab"* diff --git a/grafproc.asm b/grafproc.asm index 7b6c239..bfe8a78 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -1899,7 +1899,7 @@ EndPutChar ; puts 4x4 pixels char on the graphics screen ; in: dx, dy (LOWER left corner of the char) ; in: CharCode4x4 (.sbyte) -; in: plot4x4color (0/1) +; in: plot4x4color (0/255) ; all pixels are being drawn ; (empty and not empty) ;-------------------------------------------------- @@ -1911,11 +1911,6 @@ EndPutChar cpw dx #(screenwidth-4) jcs TypeChar.EndPutChar ;nearest RTS ; checks ommited. - lda plot4x4color - beq FontColor0 - lda #$ff ; better option to check (plot4x4color = $00 or $ff) - sta plot4x4color -FontColor0 ; char to the table lda CharCode4x4 and #%00000001 diff --git a/scorch.asm b/scorch.asm index 637a53b..1b00f7b 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"1.11" ; number of this build (3 bytes) + dta d"1.12" ; number of this build (3 bytes) .endm icl 'definitions.asm' @@ -128,7 +128,7 @@ .zpvar escFlag .byte .zpvar LineYdraw .byte .zpvar LineXdraw .word - .zpvar plot4x4color .byte + .zpvar plot4x4color .byte ; $00 / $ff .zpvar Multiplier .word .zpvar Multiplier_ .byte ; 3 bytes .zpvar HowToDraw .byte @@ -552,7 +552,7 @@ DoNotFinishTheRound - mva #1 plot4x4color + mva #$ff plot4x4color jsr DisplayTankNameAbove mva #1 color ;to display flying point @@ -592,7 +592,7 @@ ManualShooting seq:rts ; keys Esc or O AfterManualShooting - mva #0 plot4x4color + mva #$00 plot4x4color jsr DisplayTankNameAbove ; defensive weapons without flight handling ldx TankNr @@ -631,7 +631,7 @@ ShootNow jsr Shoot ;here we clear offensive text (after a shoot) ldy TankNr - mva #0 plot4x4color + mva #$00 plot4x4color jsr DisplayOffensiveTextNr lda HitFlag ;0 if missed @@ -685,7 +685,7 @@ missed ;here we clear offensive text (after a shoot) ;shit -- it's second time, but it must be like this ldy TankNr - mva #0 plot4x4color + mva #$00 plot4x4color jsr DisplayOffensiveTextNr NextPlayerShoots @@ -773,7 +773,7 @@ NoPlayerNoDeath randomize talk.NumberOfOffensiveTexts (talk.NumberOfDeffensiveTexts+talk.NumberOfOffensiveTexts-1) sta TextNumberOff ldy TankTempY - mva #1 plot4x4color + mva #$ff plot4x4color jsr DisplayOffensiveTextNr ; tank flash ldy TankTempY @@ -785,7 +785,7 @@ NoPlayerNoDeath ;Deffensive text cleanup ;here we clear Deffensive text (after a shoot) ldy TankTempY - mva #0 plot4x4color + mva #$00 plot4x4color jsr DisplayOffensiveTextNr ; calculate position of the explosion (the post-death one) diff --git a/scorch.xex b/scorch.xex index 277fae9..01939d1 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/textproc.asm b/textproc.asm index baa6d37..6703e54 100644 --- a/textproc.asm +++ b/textproc.asm @@ -1598,7 +1598,7 @@ end_found ;address in LineAddress4x4 (it is the same as `temp`) ;starting from LineXdraw, LineYdraw - lda #1 + lda #$ff staplot4x4color sta plot4x4color @@ -1665,7 +1665,7 @@ skip01 mva #3 di mva #4 ResultY @ - mva #1 plot4x4color + mva #$ff plot4x4color mwa #lineClear LineAddress4x4 mwa #((ScreenWidth/2)-(8*4)) LineXdraw ; centering mva ResultY LineYdraw @@ -1734,7 +1734,7 @@ quit_seppuku jsr RoundOverSprites - mva #1 plot4x4color + mva #$ff plot4x4color ;centering the result screen mva #((ScreenHeight/2)-(8*4)) ResultY diff --git a/variables.asm b/variables.asm index 59ef84c..01d6c17 100644 --- a/variables.asm +++ b/variables.asm @@ -203,6 +203,7 @@ PreviousFall .DS 1 EndOfTheFallFlag .DS 1 ; in case of the infinite fall ;Parachute .DS 1 ; are you insured with parachute? FloatingAlt .DS 1 ; floating tank altitude +FunkyWallFlag = FloatingAlt ; reuse this variable in different weapon (Funky Bomb)! ;---------------------------------------------------- ;Flight ;variables for 5 missiles (used for mirv) diff --git a/weapons.asm b/weapons.asm index 80a531c..f9bdbe5 100644 --- a/weapons.asm +++ b/weapons.asm @@ -5,10 +5,7 @@ .proc Explosion ;-------------------------------------------------- ;cleanup of the soil fall down ranges (left and right) - mwa #screenwidth RangeLeft - lda #0 - sta RangeRight - sta RangeRight+1 + jsr ClearScreenSoilRange ldx TankNr lda ActiveWeapon,x @@ -192,6 +189,7 @@ EndOfLeapping mva #1 Erase jsr drawtanks mva #0 Erase + sta FunkyWallFlag pla sta TankNr mva #1 color @@ -224,6 +222,10 @@ NoExplosionInFunkyBomb dec FunkyBombCounter bne FunkyBombLoop mva #0 tracerflag + lda FunkyWallFlag + beq NoWallsInFunky + jsr SetFullScreenSoilRange +NoWallsInFunky rts .endp ; ------------------------ @@ -1519,7 +1521,7 @@ RandomizeOffensiveText sta TextNumberOff ldy TankNr - mva #1 plot4x4color + mva #$ff plot4x4color jsr DisplayOffensiveTextNr mva #0 LaserFlag ; $ff - Laser @@ -2099,10 +2101,7 @@ MIRVcopyParameters sta vx03+4 ; clearing ranges of soil down registers - mwa #screenwidth RangeLeft - lda #0 - sta RangeRight - sta RangeRight+1 + jsr ClearScreenSoilRange ldx #$FF ; it will turn 0 in a moment anyway stx MirvMissileCounter @@ -2334,7 +2333,7 @@ MIRValreadyAll ;first clean the offensive text... ldy TankNr - mva #0 plot4x4color + mva #$00 plot4x4color jsr DisplayOffensiveTextNr ; temporary removing tanks from the screen (otherwise they will fall down with soil) @@ -2377,12 +2376,14 @@ MakeBump sbc vx+# sta vx+# .endr + inc FunkyWallFlag rts WrapAndNone bvc NoWall cpw xtraj+1 #screenwidth bcc OnScreen ; (wrapping wall) + inc FunkyWallFlag bit xtraj+2 bmi LeftWrap RightWrap @@ -2464,10 +2465,7 @@ NextLine2 lda #0 ldx TankNr sta ActiveDefenceWeapon,x ; deactivate Nuclear Winter - - sta RangeLeft ; whole screen in range of soil down - sta RangeLeft+1 - mwa #screenwidth RangeRight + jsr SetFullScreenSoilRange jsr SoilDown2 jsr drawtanks ; for restore PM rts @@ -2560,7 +2558,7 @@ ReachSky lda FloatingAlt sbc #12 sta LineYdraw - lda #0 + lda #$00 jsr TypeLine4x4.staplot4x4color ; and Soildown at the start (for correct mountaintable if tank was buried) ; calculate range @@ -2727,7 +2725,7 @@ pressedSpace lda FloatingAlt sbc #12 sta LineYdraw - lda #0 + lda #$00 jsr TypeLine4x4.staplot4x4color ldx TankNr ;================================= @@ -2981,10 +2979,7 @@ CalculateExplosionRange0 ;(for the first or single explosion) ;zero soil fall out ranges - mwa #screenwidth RangeLeft - lda #0 - sta RangeRight - sta RangeRight+1 + jsr ClearScreenSoilRange ;-------------------------------------------------- .proc CalculateExplosionRange ;-------------------------------------------------- @@ -3016,7 +3011,26 @@ RangesChecked rts .endp - + +;-------------------------------------------------- +.proc SetFullScreenSoilRange +; whole screen in range of soil down +;-------------------------------------------------- + lda #0 + sta RangeLeft + sta RangeLeft+1 + mwa #screenwidth RangeRight + rts +.endp +;-------------------------------------------------- +.proc ClearScreenSoilRange +; cleanup of the soil fall down ranges (left and right) ;-------------------------------------------------- + mwa #screenwidth RangeLeft + lda #0 + sta RangeRight + sta RangeRight+1 + rts +.endp ;-------------------------------------------------- .proc DecreaseWeaponBeforeShoot ;--------------------------------------------------