From 853a597daf18f85d3b88150fec69ade543077de7 Mon Sep 17 00:00:00 2001 From: pkali Date: Sun, 5 Jun 2022 02:40:07 -0400 Subject: [PATCH] almost done #74 --- constants.asm | 30 ++++++---------- scorch.asm | 94 ++++++++++++++++++++++++-------------------------- scorch.xex | Bin 37962 -> 38212 bytes textproc.asm | 66 ++++++++++++++++++++++++++++++++++- variables.asm | 94 ++++++++++++++++++++++++++------------------------ weapons.asm | 27 +++++++++------ 6 files changed, 187 insertions(+), 124 deletions(-) diff --git a/constants.asm b/constants.asm index 83e2372..99c6f47 100644 --- a/constants.asm +++ b/constants.asm @@ -23,7 +23,6 @@ RoundsTable .by 10,20,30,40,50 flyDelayTable .by 255,150,75,35,1 seppukuTable .by 255, 45,25,15,9 ;------------------------------------------------ - LevelNameBeginL ; begins of level names .by TanksWeapon1,>TanksWeapon2,>TanksWeapon3,>TanksWeapon4,>TanksWeapon5,>TanksWeapon6 -;-----4x4 texts----- +;-----4x4 texts----- LineTop - dta d"(%%%%%%%%%%%%)" - .byte $ff + dta d"(%%%%%%%%%%%%)", $ff ;# - vertical, () * +, % - horizontal LineBottom - dta d"*%%%%%%%%%%%%+" - .byte $ff + dta d"*%%%%%%%%%%%%+", $ff LineEmpty - dta d"# #" - .byte $ff + dta d"# #", $ff LineHeader2 - dta d"# RESULTS #" - .byte $ff + dta d"# RESULTS #", $ff LineGameOver - dta d"# GAME OVER #" - .byte $ff + dta d"# GAME OVER #", $ff seppukuText - dta d"# SEPPUKU! #" - .byte $ff + dta d"# SEPPUKU! #", $ff +areYouSureText + dta d"# SURE? Y/N #", $ff lineClear - dta d" " - .byte $ff - + dta d" ", $ff ;----------- pmtableL ; addressess of the P/M memory for 5 tanks (6th is without P/M background) @@ -541,8 +534,8 @@ EndOfTheBarrelY .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 dta d"1st.Tank" dta d"2nd.Tank" @@ -551,7 +544,6 @@ TanksNamesDefault dta d"5th.Tank" dta d"6th.Tank" - WeaponPriceH ; weapons prices (tables with prices of weapons) .by >price_Baby_Missile___ .by >price_Missile________ diff --git a/scorch.asm b/scorch.asm index 6cb6252..a067669 100644 --- a/scorch.asm +++ b/scorch.asm @@ -98,6 +98,7 @@ icl 'lib/atari.hea' icl 'lib/macro.hea' + ;splash screen and musix icl 'artwork/HIMARS14.asm' ;Game loading address ORG $3000 @@ -117,13 +118,14 @@ START ; Startup sequence jsr Initialize - - jsr Options ;startup screen lda escFlag bne START jsr EnterPlayerNames + lda escFlag + bne START + jsr RandomizeSequence ; for the round #1 shooting sequence is random @@ -144,6 +146,9 @@ MainGameLoop jsr RoundInit jsr MainRoundLoop + lda escFlag + bne START + mva #0 TankNr ; jsr SortSequence @@ -248,51 +253,46 @@ skipzeroing ; the shooting angle is randomized ; of course gains an looses are zeroed - ;jsr StatusDisplay lda #0 tax -@ - sta singleRoundVars,x - inx - cpx #(singleRoundVarsEnd-singleRoundVars) +@ sta singleRoundVars,x + inx + cpx #(singleRoundVarsEnd-singleRoundVars) bne @- ldx #(MaxPlayers-1) SettingEnergies - lda #$00 - sta gainL,x - sta gainH,x - sta looseL,x - sta looseH,x - lda #99 - sta Energy,x - sta eXistenZ,x - sta LASTeXistenZ,x - ; anything in eXistenZ table means that this tank exist - ; in the given round - lda #<1000 - sta MaxForceTableL,x - lda #>1000 - sta MaxForceTableH,x - lda #<350 - sta ForceTableL,x - lda #>350 - sta ForceTableH,x - - ;lda #(255-45) - ;it does not look good when all tanks have - ;barrels pointing the same direction - ;so it would be nice to have more or less random - ;angles - jsr RandomizeAngle - sta AngleTable,x - - - dex + lda #$00 + sta gainL,x + sta gainH,x + sta looseL,x + sta looseH,x + lda #99 + sta Energy,x + sta eXistenZ,x + sta LASTeXistenZ,x + ; anything in eXistenZ table means that this tank exist + ; in the given round + lda #<1000 + sta MaxForceTableL,x + lda #>1000 + sta MaxForceTableH,x + lda #<350 + sta ForceTableL,x + lda #>350 + sta ForceTableH,x + + ;lda #(255-45) + ;it does not look good when all tanks have + ;barrels pointing the same direction + ;so it would be nice to have more or less random + ;angles + jsr RandomizeAngle + sta AngleTable,x + + dex bpl SettingEnergies - mva #0 CurrentResult - ;generating the new landscape jsr PMoutofScreen ;let P/M disappear jsr clearscreen ;let the screen be clean @@ -344,8 +344,7 @@ WhichTankWonLoop bne ThisOneWon dex bpl WhichTankWonLoop - ;error here!!! - ;stop + ;error was here!!! ; somehow I believed program will be never here ; but it was a bad assumption ; god knows when there is such a situation @@ -409,6 +408,8 @@ ManualShooting jsr WaitForKeyRelease jsr BeforeFire + lda escFlag + seq:rts AfterManualShooting inc noDeathCounter @@ -768,16 +769,12 @@ PMoutofScreen .proc ;-------------------------------------------------- .proc Initialize ;Initialization sequence +;uses: temp, ... ;-------------------------------------------------- deletePtr = temp - lda #0 - sta Erase - sta tracerflag - sta GameIsOver - sta escFlag - ; clean variables + lda #0 tay mwa #variablesStart deletePtr @ tya @@ -1185,7 +1182,8 @@ nextishigher .endp ;-------------------------------------------------- -.proc getkey ; waits for pressing a key and returns pressed value in A +.proc GetKey ; waits for pressing a key and returns pressed value in A +; when [ESC] is pressed, escFlag is set to 1 ;-------------------------------------------------- jsr WaitForKeyRelease @ diff --git a/scorch.xex b/scorch.xex index 55e48a4650e1c0fc4aa80009f233e50892e75faa..28e21bebe331d4095e9f170df1908fb5bf6b89fc 100644 GIT binary patch delta 13696 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 128 : <20203 : >20203 -;----------------------------------- +;---------------------------------------------------- L1 .DS 1 ; variable used in multiplications (by 10:) gravity .DS 1 ;only the decimal part (1/10 = 25) -;----------------------------------- +;---------------------------------------------------- Wind .ds 4 ;format: 0000.hhll ;walue displayed on the screen is ;decimal portion divided by 16 (>>4) -;----------------------------------- +;---------------------------------------------------- MaxWind .ds 1 ; WindOrientation .DS 1 ;(0-right,1-left) -;----------------------------------- +;---------------------------------------------------- Counter .DS 1 ;temporary Counter for outside loops HitFlag .DS 1 ;1 when missile hit anything -;----------------------------------- +;---------------------------------------------------- xtankstableL ;X positions of tanks (lower left point) .DS [MaxPlayers] xtankstableH @@ -131,17 +124,17 @@ ytankstable ;Y positions of tanks (lower left point) .DS [MaxPlayers] LowResDistances ; coarse tank positions divided by 4 (to be in just one byte) .DS [MaxPlayers] -;----------------------------------- +;---------------------------------------------------- Erase .DS 1 ; if 1 only mask of the character is printed ; on the graphics screen. if 0 character is printed normally -;----------------------------------- +;---------------------------------------------------- RangeLeft .DS 2 ;range of the soil to be fallen down RangeRight .DS 2 ;it is being set by all Explosions -;----------------------------------- +;---------------------------------------------------- WeaponRangeLeft .DS 2 ;Range of the Explosion of the given weapon WeaponRangeRight .DS 2 -;-------------------------------------------------- +;---------------------------------------------------- ;xroller HowMuchToFall .ds 1 HeightRol .DS 1 @@ -181,7 +174,7 @@ IfFallDown .DS 1 PreviousFall .DS 1 EndOfTheFallFlag .DS 1 ; in case of the infinite fall Parachute .DS 1 ; are you insured with parachute? -; ------------------------------------------------- +;---------------------------------------------------- ;Flight ;variables for 5 missiles (used for mirv) xtraj00 .DS [5] ; 3 bytes of xtraj times 5. Lowest byte @@ -196,7 +189,7 @@ MirvMissileCounter .DS 1 ; missile Counter (mainly for X) SmokeTracerFlag .DS 1 ; if Smoketracer 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) -; ------------------------------------------------- +;---------------------------------------------------- ;CheckCollisionWithTank vx .ds 4 ; 0,0,0,0 ;two decimal bytes, two whole bytes (DC.BA) vy .ds 4 ;0,0,0,0 @@ -209,10 +202,10 @@ Force .ds 3 ; 0,0,0 Multiplier .ds 3 ; 0,0,0 Multiplee .ds 2 ; 0,0 goleft .DS 1 ;if 1 then flights left -;-------------------------------------------------- +;---------------------------------------------------- ;SoilDown2 IsEndOfTheFallFlag .DS 1 -; ------------------------------------------------- +;---------------------------------------------------- ;unPlot WhichUnPlot .DS 1 ; max 5 concurrent unPlots @@ -226,7 +219,7 @@ xtrajfb .DS 2 ytrajfb .DS 2 ; tracerflag .DS 1 -; ------------------------------------------------- +;---------------------------------------------------- ;TypeChar mask1 .DS [8] mask2 .DS [8] @@ -244,7 +237,7 @@ UpNdown .DS 1 temptankX .DS 2 temptankNr .DS 1 -; ------------------------------------------------- +;---------------------------------------------------- ;Variables from textproc.s65 ; tables with numbers of weapons on the right lists ; to be honest - I do not know at the moment what the above @@ -254,7 +247,7 @@ NubersOfWeaponsL1 .ds 8*5 ; :(8*5) .by $ff NubersOfWeaponsL2 .ds 8*2 ; :(8*2) .by $ff -; ------------------------------------------------- +;---------------------------------------------------- ; variables storing amount of weapons on the first and second ; list and pointer position @@ -277,14 +270,14 @@ WhichList ; list currently on the screen OffsetDL1 ; offset of the list screen (how many lines).... .DS 1 -; ------------------------------------------------- +;---------------------------------------------------- ;mark the level PositionInName ; cursor position in name of the player when name input .DS 1 DifficultyLevel ; Difficulty Level (human/cpu) .DS 1 -;------------------------------------------------- +;---------------------------------------------------- ;displaydecimal decimal .DS 2 decimalresult .DS 4 @@ -299,7 +292,7 @@ FallDown2 .DS 1 LeapFrogAngle .DS 1 ;laser LaserCoordinate .DS 8 ; 2,2,2,2 -; ------------------------------------------------- +;---------------------------------------------------- ; Here go tables with weapons possesed by a given tank ; Index in the table means weapon type ; number entered means ammo for given weapon possessed (max 99) @@ -326,7 +319,7 @@ mountaintable2 ;table of mountains (size=screenwidth) .DS [screenwidth] .DS 1 ; additional byte for fallout (sometimes 1 pixel) MountaintableEnd ;good for table clearing -;---------------------------------------------- +;---------------------------------------------------- TextPositionX .DS 2 TextPositionY .DS 1 TextAddress .DS 2 @@ -335,8 +328,16 @@ TextNumberOff .DS 1 ;-------------- TankTempY .DS 1 +;---------------------------------------------------- ;-------------- single round variables -------------- +;---------------------------------------------------- singleRoundVars +;-------------- +escFlag .ds 1 +;-------------- +CurrentResult + .DS 1 +;-------------- previousAngle .DS [MaxPlayers] previousEnergyL @@ -354,9 +355,9 @@ RandBoundaryHigh AngleTablePointer .DS 1 singleRoundVarsEnd -;---------------------------------------------- +;---------------------------------------------------- ; 4x4 texts -;---------------------------------------------- +;---------------------------------------------------- LineAddress4x4 .DS 2 LineCharNr @@ -374,8 +375,9 @@ ResultY ResultOfTankNr .DS 1 -;---------------------------- +;---------------------------------------------------- ;PutChar4x4 +;---------------------------------------------------- LoopCounter4x4 .DS 1 y4x4 .DS 1 StoreA4x4 .DS 1 @@ -387,6 +389,6 @@ plot4x4color .DS 1 ;1-white, 0-background variablesEnd -;---------------------------- +;---------------------------------------------------- .endif diff --git a/weapons.asm b/weapons.asm index 76623f6..ba6da9e 100644 --- a/weapons.asm +++ b/weapons.asm @@ -1016,7 +1016,17 @@ notpressed beq checkJoy lda kbcode - and #$Bf + and #%10111111 ; SHIFT elimination + + cmp #28 ; ESC + bne @+ + jsr AreYouSure + lda escFlag + beq notpressed + ;---esc pressed-quit game--- + rts + +@ cmp #$8e jeq CTRLPressedUp cmp #$8f @@ -1104,9 +1114,9 @@ pressedDown dec ForceTableH,x bpl @+ ForceGoesZero - lda #0 - sta ForceTableH,x - sta ForceTableL,x + lda #0 + sta ForceTableH,x + sta ForceTableL,x @ jmp BeforeFire @@ -1571,17 +1581,14 @@ RepeatIfSmokeTracer tax sta Angle - ; - mva #1 goleft ; and now we contine as if nothing happened ; (but we have goleft set to 1!!!) - bne dontzerogoleft + mva #1 goleft + bne @+ FlightRight mva #0 goleft - -dontzerogoleft - +@ lda sintable,x ;sin(Angle) sta Multiplee ;sin(Angle)*Force mwa Force Multiplier