multiple texts improved, tabs elliminated

This commit is contained in:
2023-05-19 23:16:49 -04:00
parent 8486645bc8
commit d0e1dc6f18
23 changed files with 4918 additions and 4928 deletions
+48 -64
View File
@@ -58,7 +58,6 @@
jsr drawtanks ;finally draw tanks
pla
sta NumberOfPlayers
; --------
mva #0 OptionsY
@@ -122,6 +121,7 @@ OptionsNoReturn
OptionsNoTab
jmp OptionsMainLoop
.endp
.proc SelectNextGradient
lda OptionsY ; if "Wind" option selected
cmp #$03
@@ -144,6 +144,7 @@ NoGradientLoop
sta GradientColors+1
rts
.endp
;--------
; inversing selected option (cursor)
;--------
@@ -154,7 +155,7 @@ optionWidth = 6
nameWidth = 10
mwa #OptionsHere temp ; offset of the first option=11
mva #0 YPos ;option number pointer
mva #0 Xpos ;X position in the menu
sta Xpos ;X position in the menu
tay ; Y is zero here...
OptionsSetMainLoop
ldx YPos ; Y position in the menu
@@ -204,9 +205,10 @@ invertme
rts
.endp
.proc CallPurchaseForEveryTank
;-------------------------------------------
; call of the purchase (and activate) screens for each tank
.proc CallPurchaseForEveryTank
;-------------------------------------------
mva #0 TankNr
sta isInventory
@@ -346,7 +348,7 @@ AfterPurchase
cmp IndexesOfWeaponsL1,y
beq ?weaponfound
iny
cpy #(last_offensive_____ - first_offensive____)+1 ; maxOffensiveWeapons
cpy #(last_offensive - first_offensive )+1 ; maxOffensiveWeapons
bne @-
; not found apparently?
; TODO: check border case (the last weapon)
@@ -481,7 +483,7 @@ DeffensiveSelected
jmp ChoosingItemForPurchase
.endp
;
;--------------------------------------------------
.proc CreateList
;--------------------------------------------------
@@ -637,7 +639,7 @@ notInventory
NotTheSameAsLastTime
; increase appropriate counter
txa
cpx #last_offensive_____+1
cpx #last_offensive +1
bcs DefenceList
ldy HowManyOnTheListOff
sta IndexesOfWeaponsL1,y
@@ -655,14 +657,14 @@ NoWeapon
; next weapon. If no more weapons then finish!
inx
cpx #last_offensive_____+1
cpx #last_offensive +1
bne NoDefense
; if we got to the defense weapons,
; we switch address to the second table.
mwa #ListOfDefensiveWeapons xbyte
NoDefense
cpx #last_defensive_____+1
cpx #last_defensive +1
jne CreateList
@@ -775,7 +777,7 @@ positiveMoney
; but if we purchasing "Buy me!" then we must draw the winning weapon.
cpy #ind_Buy_me_________
cpy #ind_Buy_me
bne NoSuprise
Suprise ; get a random weapon
@@ -783,13 +785,13 @@ Suprise ; get a random weapon
cmp #51 ; defensive weapons are less likely because they are more expensive - probability 255:51 (5:1)
bcc GetRandomDefensive
GetRandomOffensive
randomize ind_Missile________ last_offensive_____
;cmp #ind_Buy_me_________ ; buy me do not buy buy me :)
randomize ind_Missile last_offensive
;cmp #ind_Buy_me ; buy me do not buy buy me :)
;beq GetRandomOffensive
tay
bne NoSuprise ; Y always <> 0
GetRandomDefensive
randomize ind_Battery________ last_defensive_____
randomize ind_Battery last_defensive
tay
; lda WeaponUnits,y ; check if weapon exist
; beq GetRandomDefensive
@@ -828,7 +830,7 @@ invSelectDef
lda IndexesOfWeaponsL2,y
tay
ldx tankNr
cmp #ind_Battery________
cmp #ind_Battery
bne NotBattery
; if activate battery, we do it differently
mva #sfx_battery sfx_effect
@@ -838,38 +840,38 @@ invSelectDef
ply
jmp DecreaseDefensive ; bypass activation
NotBattery
cmp #ind_Auto_Defense___
cmp #ind_Auto_Defense
bne NoAutoDefense
; Auto Defense - do it like battery
mva #sfx_auto_defense sfx_effect
mva #$A1 AutoDefenseFlag,x ; this is "A" in inverse - for status line :)
jmp DecreaseDefensive ; bypass activation
NoAutoDefense
cmp #ind_Lazy_Boy_______
cmp #ind_Lazy_Boy
bne NoLazyBoy
; Lazy Boy - do it like battery
mva #%01000000 LazyFlag
jmp DecreaseDefensive ; bypass activation
NoLazyBoy
cmp #ind_Lazy_Darwin____
cmp #ind_Lazy_Darwin
bne NoLazyDarwin
; Lazy Darwin - do it like battery
mva #%11000000 LazyFlag
jmp DecreaseDefensive ; bypass activation
NoLazyDarwin
cmp #ind_Spy_Hard_______
cmp #ind_Spy_Hard
bne NotSpy
mva #$ff SpyHardFlag
jmp DecreaseDefensive ; bypass activation
NotSpy
cmp #ind_Long_Barrel____
cmp #ind_Long_Barrel
bne NotBarrel
; if activate long barrel, we do it differently too
mva #sfx_long_barrel sfx_effect
mva #LongBarrel BarrelLength,x
bne DecreaseDefensive ; bypass activation
NotBarrel
cmp #ind_White_Flag_____
cmp #ind_White_Flag
bne NotWhiteFlag
cmp ActiveDefenceWeapon,x
bne NoDeactivateWhiteFlag
@@ -898,11 +900,12 @@ DecreaseDefensive
DefActivationEnd
jmp WaitForKeyRelease ; rts
.endp
; -----------------------------------------------------
;--------------------------------------------------
.proc calcPosDefensive
; calculate positionOnTheList from the activeWeapon (defensives)
;--------------------------------------------------
ldx tankNr
lda ActiveDefenceWeapon,x
beq ?noWeaponActive
@@ -911,7 +914,7 @@ DefActivationEnd
cmp IndexesOfWeaponsL2,y
beq ?weaponfound
iny
cpy #(last_defensive_____ - first_defensive____)+1 ; maxDefensiveWeapon
cpy #(last_defensive - first_defensive )+1 ; maxDefensiveWeapon
bne @-
; not found apparently?
; TODO: check border case (the last weapon)
@@ -934,7 +937,7 @@ DefActivationEnd
cmp IndexesOfWeaponsL1,y
beq ?weaponfound
iny
cpy #(last_offensive_____ - first_offensive____) ; maxOffensiveWeapon
cpy #(last_offensive - first_offensive ) ; maxOffensiveWeapon
bne @-
; not found apparently?
; TODO: check border case (the last weapon)
@@ -946,11 +949,13 @@ DefActivationEnd
sty positionOnTheList
rts
.endp
; -----------------------------------------------------
;--------------------------------------------------
.proc PutLitteChar
;--------------------------------------------------
; first let's clear both lists from little chars
mwa #ListOfWeapons xbyte
ldx #last_defensive_____ ; there are xx lines total
ldx #last_defensive ; there are xx lines total
ldy #$00
EraseLoop
tya ; lda #$00
@@ -967,10 +972,10 @@ EraseLoop
mwa #ListOfDefensiveWeapons xbyte
ldx PositionOnTheList
beq SelectList2 ; if there is 0 we add nothing
AddLoop2
@
adw xbyte #32 ; narrow screen
dex
bne AddLoop2
bne @-
SelectList2
lda #$7f ; little char (tab) - this is the pointer
sta (xbyte),y
@@ -988,10 +993,10 @@ CharToList1
mwa #ListOfWeapons xbyte
ldx PositionOnTheList
beq SelectList1 ; if there is 0 we add nothing
AddLoop1
@
adw xbyte #32 ; narrow screen
dex
bne AddLoop1
bne @-
SelectList1
lda #$7f ; pointer = little char = (tab)
sta (xbyte),y
@@ -999,10 +1004,10 @@ SelectList1
mwa #ListOfWeapons xbyte
ldx OffsetDL1
beq SetWindowList1 ; if zero then add nothing
LoopWindow1
@
adw xbyte #32 ; narrow screen
dex
bne LoopWindow1
bne @-
SetWindowList1
mwa xbyte WeaponsListDL ; and we change Display List
@@ -1075,13 +1080,6 @@ NoArrowDown
lda digits+1,x
sta NameScreen2+7
; clear tank name editor field - not necessary
; ldx #8
; lda #0
;@ sta NameAdr,x
; dex
; bpl @-
; copy existing name and place cursor at end
lda TankNr
:3 asl
@@ -1089,7 +1087,6 @@ NoArrowDown
ldy #0
@ lda TanksNames,x
; beq endOfTankName
sta NameAdr,y
inx
iny
@@ -1104,9 +1101,8 @@ endOfTankName
bpl @-
LastNameChar
cpy #7
beq @+
iny
@ sty PositionInName
seq:iny
sty PositionInName
CheckKeys
jsr HighlightLevel ; setting choosen level of the opponent (Moron, etc)
@@ -1140,9 +1136,8 @@ YesLetter
sta NameAdr,x
inx
cpx #$08 ; is there 8 characters?
bne @+
dex
@ stx PositionInName ; if not, we store
sne:dex
stx PositionInName ; if not, we store
jmp CheckKeys
.ENDIF
CheckFurtherX01 ; here we check Tab, Return and Del
@@ -1194,34 +1189,23 @@ ChangeOfJoyUp
ChangeOfLevelUp ; change difficulty level of computer opponent
inc:lda DifficultyLevel
cmp #9 ; 9 levels are possible
bne DoNotLoopLevelUp
mva #$0 DifficultyLevel
DoNotLoopLevelUp
sne:mva #$0 DifficultyLevel ; DoNotLoopLevelUp
jmp CheckKeys
;----
ChangeOfLevelDown
dec:lda DifficultyLevel
bpl DoNotLoopLevelDown
mva #$8 DifficultyLevel
DoNotLoopLevelDown
spl:mva #$8 DifficultyLevel ; DoNotLoopLevelDown
jmp CheckKeys
;----
ChangeOfLevel3Up
adb DifficultyLevel #3
cmp #9
bcc DoNotLoopLevel3Up
sbb DifficultyLevel #9
DoNotLoopLevel3Up
scc:sbb DifficultyLevel #9 ; DoNotLoopLevel3Up
jmp CheckKeys
;----
ChangeOfLevel3Down
sbb DifficultyLevel #3
bpl @+
adb DifficultyLevel #9
@
spl:adb DifficultyLevel #9
jmp CheckKeys
;----
ChangeOfShapeUp
@@ -1280,23 +1264,23 @@ NotRobot
beq MakeDefaultName
ldy #0
nextchar04
@
lda NameAdr,y
and #$7f ; remove inverse (Cursor)
sta tanksnames,x
inx
iny
cpy #$08
bne nextchar04
bne @-
rts
MakeDefaultName
nextchar05
@
lda tanksnamesDefault,x
sta tanksnames,x
inx
iny
cpy #$08
bne nextchar05
bne @-
rts
.endp
;--------------------------------------------------
+19 -19
View File
@@ -83,7 +83,7 @@ AIRoutines
mwa #800 RandBoundaryHigh
jsr RandomizeForce
; choose the best weapon
ldy #ind_Buy_me_________+1 ; if the cheat is active it will fire the BFG :)
ldy #ind_Buy_me +1 ; if the cheat is active it will fire the BFG :)
jmp ChooseBestOffensive.NotFromAll
;rts
.endp
@@ -220,7 +220,7 @@ AngleTable ; 16 bytes ;ba w $348b L$3350
bcs EnoughEnergy
; lower than 5 units - white flag
jsr ClearTankNr ; we must hide tank to erase shields (issue #138)
lda #ind_White_Flag_____
lda #ind_White_Flag
sta ActiveDefenceWeapon,x
jsr PutTankNr ; and draw tank witch Flag
EnoughEnergy
@@ -233,7 +233,7 @@ EnoughEnergy
cmp #30
bcs EnoughEnergy
; lower than 30 units - check battery
ldy #ind_Battery________
ldy #ind_Battery
lda (temp),y ; has address of TanksWeaponsTable
beq NoBatteries
; we have batteries - use one
@@ -260,7 +260,7 @@ NoBatteries
ldy #last_real_defensive+1 ;the last defensive weapon
@
dey
cpy #ind_Hovercraft_____ ;first defensive weapon (White Flag, Battery and Hovercraft - never use)
cpy #ind_Hovercraft ;first defensive weapon (White Flag, Battery and Hovercraft - never use)
beq NoUseDefensive
lda (temp),y ; has address of TanksWeaponsTable
beq @-
@@ -295,7 +295,7 @@ DefensiveInUse
ldy #last_real_defensive+1 ;the last defensive weapon
@
dey
cpy #ind_Hovercraft_____ ;first defensive weapon (White Flag, Battery and Hovercraft - never use)
cpy #ind_Hovercraft ;first defensive weapon (White Flag, Battery and Hovercraft - never use)
beq NoUseDefensive
lda (temp),y ; has address of TanksWeaponsTable
beq @-
@@ -339,7 +339,7 @@ NotNegativeEnergy
jsr GetDistance
cmp #6 ; 24/4
bcs HighForce
lda #ind_Baby_Missile___
lda #ind_Baby_Missile
sta ActiveWeapon,x
HighForce
rts
@@ -371,7 +371,7 @@ NotNegativeEnergy
jsr GetDistance
cmp #6 ; 24/4
bcs HighForce
lda #ind_Baby_Missile___
lda #ind_Baby_Missile
sta ActiveWeapon,x
HighForce
rts
@@ -389,7 +389,7 @@ HighForce
jsr TakeAim ; direction still in A (0 - left, >0 - right)
; choose the best weapon
ldy #ind_Nuke___________+1
ldy #ind_Nuke +1
jsr ChooseBestOffensive.NotFromAll
lda Force
@@ -400,7 +400,7 @@ HighForce
jsr GetDistance
cmp #8 ;32/4
bcs HighForce
lda #ind_Baby_Missile___
lda #ind_Baby_Missile
sta ActiveWeapon,x
HighForce
rts
@@ -556,7 +556,7 @@ RepeatAim
adc temp2
sta NewAngle
; set virtual weapon :)
lda #ind_Baby_Missile___
lda #ind_Baby_Missile
sta ActiveWeapon,x
; now we have initial valuses
mva #%11000000 TestFlightFlag
@@ -873,7 +873,7 @@ SorryNoPurchase
; mva #2 tempXroller; number of offensive purchases to perform
ldx TankNr
@
randomize ind_Battery________ ind_StrongParachute
randomize ind_Battery ind_StrongParachute
jsr TryToPurchaseOnePiece
; dec tempXroller
; bne @-
@@ -882,7 +882,7 @@ SorryNoPurchase
mva #4 tempXroller; number of offensive purchases to perform
;ldx TankNr
@
randomize ind_Missile________ ind_Heavy_Roller___
randomize ind_Missile ind_Heavy_Roller
jsr TryToPurchaseOnePiece
dec tempXroller
bne @-
@@ -895,7 +895,7 @@ SorryNoPurchase
; mva #2 tempXroller; number of offensive purchases to perform
ldx TankNr
@
randomize ind_Battery________ ind_Bouncy_Castle__
randomize ind_Battery ind_Bouncy_Castle
jsr TryToPurchaseOnePiece
dec tempXroller
; bpl @-
@@ -904,7 +904,7 @@ SorryNoPurchase
mva #6 tempXroller; number of purchases to perform
;ldx TankNr
@
randomize ind_Missile________ ind_Dirt_Charge____
randomize ind_Missile ind_Dirt_Charge
jsr TryToPurchaseOnePiece
dec tempXroller
bne @-
@@ -922,7 +922,7 @@ SorryNoPurchase
; first try to buy defensives
; mva #1 tempXroller; number of defensive purchases to perform
@
randomize ind_Battery________ ind_Bouncy_Castle__
randomize ind_Battery ind_Bouncy_Castle
jsr TryToPurchaseOnePiece
dec tempXroller
bpl @-
@@ -932,7 +932,7 @@ SorryNoPurchase
asl ;*2
sta tempXroller ; perform this many purchase attempts
@
randomize ind_Missile________ ind_Dirt_Charge____
randomize ind_Missile ind_Dirt_Charge
jsr TryToPurchaseOnePiece
dec tempXroller
bpl @-
@@ -950,7 +950,7 @@ SorryNoPurchase
; first try to buy defensives
; mva #1 tempXroller; number of defensive purchases to perform
@
randomize ind_Battery________ ind_Bouncy_Castle__
randomize ind_Battery ind_Bouncy_Castle
jsr TryToPurchaseOnePiece2
dec tempXroller
bpl @-
@@ -960,7 +960,7 @@ SorryNoPurchase
:3 asl ;*8
sta tempXroller ; perform this many purchase attempts
@
randomize first_offensive____ last_offensive_____
randomize first_offensive last_offensive
jsr TryToPurchaseOnePiece2
dec tempXroller
bpl @-
@@ -972,7 +972,7 @@ SorryNoPurchase
; choose the best weapon
; X - TankNr
;----------------------------------------------
ldy #ind_Dirt_Charge____+1 ;the last weapon to choose +1 (not BFG or Laser :) )
ldy #ind_Dirt_Charge +1 ;the last weapon to choose +1 (not BFG or Laser :) )
NotFromAll
; Y - the last offensive weapon to use + 1
lda TanksWeaponsTableL,x
+212 -208
View File
@@ -59,7 +59,12 @@ LineGameOver
seppukuText
dta d"# SEPPUKU! #"
areYouSureText
.IF target != 5200
dta d"# SURE? Y/N #"
.ELSE
dta d"#END? Y-1/N-0#"
.ENDIF
lineClear
dta d" "
@@ -222,113 +227,114 @@ SlideLeftTableLen = *-SlideLeftTable
TanksNamesDefault
dta d"1st.Tank"
dta d"2nd.Tank"
.REPT MaxPlayers-2, #+3
dta d":1rd.Tank"
dta d"3rd.Tank"
.REPT MaxPlayers-3, #+4
dta d":1th.Tank"
.ENDR
;-------------------------------------------------
TankShapesTable .BYTE char_tank1___________
.BYTE char_tank2___________
.BYTE char_tank3___________
.BYTE char_tank4___________
TankShapesTable .BYTE char_tank1
.BYTE char_tank2
.BYTE char_tank3
.BYTE char_tank4
;-------------------------------------------------
WeaponPriceH ; weapons prices (tables with prices of weapons)
.by >price_Baby_Missile___
.by >price_Missile________
.by >price_Baby_Nuke______
.by >price_Nuke___________
.by >price_LeapFrog_______
.by >price_Funky_Bomb_____
.by >price_MIRV___________
.by >price_Death_s_Head___
.by >price_Napalm_________
.by >price_Hot_Napalm_____
.by >price_Tracer_________
.by >price_Smoke_Tracer___
.by >price_Baby_Roller____
.by >price_Roller_________
.by >price_Heavy_Roller___
.by >price_Riot_Charge____
.by >price_Riot_Blast_____
.by >price_Riot_Bomb______
.by >price_Baby_Missile
.by >price_Missile
.by >price_Baby_Nuke
.by >price_Nuke
.by >price_LeapFrog
.by >price_Funky_Bomb
.by >price_MIRV
.by >price_Death_s_Head
.by >price_Napalm
.by >price_Hot_Napalm
.by >price_Tracer
.by >price_Smoke_Tracer
.by >price_Baby_Roller
.by >price_Roller
.by >price_Heavy_Roller
.by >price_Riot_Charge
.by >price_Riot_Blast
.by >price_Riot_Bomb
.by >price_Heavy_Riot_Bomb
.by >price_Baby_Digger____
.by >price_Digger_________
.by >price_Heavy_Digger___
.by >price_Baby_Sandhog___
.by >price_Sandhog________
.by >price_Heavy_Sandhog__
.by >price_Dirt_Clod______
.by >price_Dirt_Ball______
.by >price_Ton_of_Dirt____
.by >price_Liquid_Dirt____
.by >price_Dirt_Charge____
.by >price_Buy_me_________
.by >price_Laser__________
.by >price_White_Flag_____
.by >price_Battery________
.by >price_Hovercraft_____
.by >price_Parachute______
.by >price_Baby_Digger
.by >price_Digger
.by >price_Heavy_Digger
.by >price_Baby_Sandhog
.by >price_Sandhog
.by >price_Heavy_Sandhog
.by >price_Dirt_Clod
.by >price_Dirt_Ball
.by >price_Ton_of_Dirt
.by >price_Liquid_Dirt
.by >price_Dirt_Charge
.by >price_Buy_me
.by >price_Laser
.by >price_White_Flag
.by >price_Battery
.by >price_Hovercraft
.by >price_Parachute
.by >price_StrongParachute
.by >price_Mag_Deflector__
.by >price_Shield_________
.by >price_Heavy_Shield___
.by >price_Force_Shield___
.by >price_Bouncy_Castle__
.by >price_Long_Barrel____
.by >price_Mag_Deflector
.by >price_Shield
.by >price_Heavy_Shield
.by >price_Force_Shield
.by >price_Bouncy_Castle
.by >price_Long_Barrel
.by >price_Nuclear_Winter_
.by >price_Lazy_Boy_______
.by >price_Lazy_Darwin____
.by >price_Auto_Defense___
.by >price_Spy_Hard_______
.by >price_Lazy_Boy
.by >price_Lazy_Darwin
.by >price_Auto_Defense
.by >price_Spy_Hard
WeaponPriceL
.by <price_Baby_Missile___
.by <price_Missile________
.by <price_Baby_Nuke______
.by <price_Nuke___________
.by <price_LeapFrog_______
.by <price_Funky_Bomb_____
.by <price_MIRV___________
.by <price_Death_s_Head___
.by <price_Napalm_________
.by <price_Hot_Napalm_____
.by <price_Tracer_________
.by <price_Smoke_Tracer___
.by <price_Baby_Roller____
.by <price_Roller_________
.by <price_Heavy_Roller___
.by <price_Riot_Charge____
.by <price_Riot_Blast_____
.by <price_Riot_Bomb______
.by <price_Baby_Missile
.by <price_Missile
.by <price_Baby_Nuke
.by <price_Nuke
.by <price_LeapFrog
.by <price_Funky_Bomb
.by <price_MIRV
.by <price_Death_s_Head
.by <price_Napalm
.by <price_Hot_Napalm
.by <price_Tracer
.by <price_Smoke_Tracer
.by <price_Baby_Roller
.by <price_Roller
.by <price_Heavy_Roller
.by <price_Riot_Charge
.by <price_Riot_Blast
.by <price_Riot_Bomb
.by <price_Heavy_Riot_Bomb
.by <price_Baby_Digger____
.by <price_Digger_________
.by <price_Heavy_Digger___
.by <price_Baby_Sandhog___
.by <price_Sandhog________
.by <price_Heavy_Sandhog__
.by <price_Dirt_Clod______
.by <price_Dirt_Ball______
.by <price_Ton_of_Dirt____
.by <price_Liquid_Dirt____
.by <price_Dirt_Charge____
.by <price_Buy_me_________
.by <price_Laser__________
.by <price_White_Flag_____
.by <price_Battery________
.by <price_Hovercraft_____
.by <price_Parachute______
.by <price_Baby_Digger
.by <price_Digger
.by <price_Heavy_Digger
.by <price_Baby_Sandhog
.by <price_Sandhog
.by <price_Heavy_Sandhog
.by <price_Dirt_Clod
.by <price_Dirt_Ball
.by <price_Ton_of_Dirt
.by <price_Liquid_Dirt
.by <price_Dirt_Charge
.by <price_Buy_me
.by <price_Laser
.by <price_White_Flag
.by <price_Battery
.by <price_Hovercraft
.by <price_Parachute
.by <price_StrongParachute
.by <price_Mag_Deflector__
.by <price_Shield_________
.by <price_Heavy_Shield___
.by <price_Force_Shield___
.by <price_Bouncy_Castle__
.by <price_Long_Barrel____
.by <price_Mag_Deflector
.by <price_Shield
.by <price_Heavy_Shield
.by <price_Force_Shield
.by <price_Bouncy_Castle
.by <price_Long_Barrel
.by <price_Nuclear_Winter_
.by <price_Lazy_Boy_______
.by <price_Lazy_Darwin____
.by <price_Auto_Defense___
.by <price_Spy_Hard_______
.by <price_Lazy_Boy
.by <price_Lazy_Darwin
.by <price_Auto_Defense
.by <price_Spy_Hard
;-------------------------------------------------
; how many units (bulletd) of a given weapon we get for a given price
@@ -337,54 +343,54 @@ WeaponPriceL
; is not present in the game.
; This is the slot for adding new weapons.
WeaponUnits
.by 10 ;Baby_Missile___;_00
.by 5 ;Missile________;_01
.by 2 ;Baby_Nuke______;_02
.by 1 ;Nuke___________;_03
.by 2 ;LeapFrog_______;_04
.by 3 ;Funky_Bomb_____;_05
.by 2 ;MIRV___________;_06
.by 1 ;Death_s_Head___;_07
.by 4 ;Napalm_________;_08
.by 2 ;Hot_Napalm_____;_09
.by 20 ;Tracer_________;_10
.by 10 ;Smoke_Tracer___;_11
.by 5 ;Baby_Roller____;_12
.by 3 ;Roller_________;_13
.by 2 ;Heavy_Roller___;_14
.by 5 ;Riot_Charge____;_15
.by 2 ;Riot_Blast_____;_16
.by 5 ;Riot_Bomb______;_17
.by 10 ;Baby_Missile ;_00
.by 5 ;Missile ;_01
.by 2 ;Baby_Nuke ;_02
.by 1 ;Nuke ;_03
.by 2 ;LeapFrog ;_04
.by 3 ;Funky_Bomb ;_05
.by 2 ;MIRV ;_06
.by 1 ;Death_s_Head ;_07
.by 4 ;Napalm ;_08
.by 2 ;Hot_Napalm ;_09
.by 20 ;Tracer ;_10
.by 10 ;Smoke_Tracer ;_11
.by 5 ;Baby_Roller ;_12
.by 3 ;Roller ;_13
.by 2 ;Heavy_Roller ;_14
.by 5 ;Riot_Charge ;_15
.by 2 ;Riot_Blast ;_16
.by 5 ;Riot_Bomb ;_17
.by 2 ;Heavy_Riot_Bomb;_18
.by 10 ;Baby_Digger____;_19
.by 5 ;Digger_________;_20
.by 2 ;Heavy_Digger___;_21
.by 10 ;Baby_Sandhog___;_22
.by 5 ;Sandhog________;_23
.by 2 ;Heavy_Sandhog__;_24
.by 5 ;Dirt_Clod______;_25
.by 3 ;Dirt_Ball______;_26
.by 1 ;Ton_of_Dirt____;_27
.by 4 ;Liquid_Dirt____;_28
.by 2 ;Dirt_Charge____;_29
.by 1 ;Buy_me_________;_30
.by 5 ;Laser__________;_31
.by 1 ;White_Flag_____;_32
.by 3 ;Battery________;_33
.by 2 ;Floating_Tank__;_34
.by 3 ;Parachute______;_35
.by 10 ;Baby_Digger ;_19
.by 5 ;Digger ;_20
.by 2 ;Heavy_Digger ;_21
.by 10 ;Baby_Sandhog ;_22
.by 5 ;Sandhog ;_23
.by 2 ;Heavy_Sandhog ;_24
.by 5 ;Dirt_Clod ;_25
.by 3 ;Dirt_Ball ;_26
.by 1 ;Ton_of_Dirt ;_27
.by 4 ;Liquid_Dirt ;_28
.by 2 ;Dirt_Charge ;_29
.by 1 ;Buy_me ;_30
.by 5 ;Laser ;_31
.by 1 ;White_Flag ;_32
.by 3 ;Battery ;_33
.by 2 ;Floating_Tank ;_34
.by 3 ;Parachute ;_35
.by 2 ;StrongParachute;_36
.by 2 ;Mag_Deflector__;_37
.by 3 ;Shield_________;_38
.by 2 ;Heavy_Shield___;_39
.by 3 ;Force_Shield___;_40
.by 1 ;Auto_Defense___;_41
.by 2 ;Long_Barrel____;_42
.by 2 ;Mag_Deflector ;_37
.by 3 ;Shield ;_38
.by 2 ;Heavy_Shield ;_39
.by 3 ;Force_Shield ;_40
.by 1 ;Auto_Defense ;_41
.by 2 ;Long_Barrel ;_42
.by 1 ;Nuclear_Winter_;_43
.by 2 ;Lazy_Boy_______;_44
.by 2 ;Lazy_Darwin____;_45
.by 2 ;Auto_Defense___;_46
.by 4 ;Spy_Hard_______;_47
.by 2 ;Lazy_Boy ;_44
.by 2 ;Lazy_Darwin ;_45
.by 2 ;Auto_Defense ;_46
.by 4 ;Spy_Hard ;_47
PurchaseMeTable ;weapons good to be purchased by the robot
;the comment is an index in the tables
@@ -431,54 +437,54 @@ PurchaseMeTable2 ;weapons good to be purchased by the robot (Cyborg)
;-------------------------------------------------
; Screen codes of icons (chars) representing a given weapon
WeaponSymbols
.by $40 ;ind_Baby_Missile___ ;_00
.by $41 ;ind_Missile________ ;_01
.by $42 ;ind_Baby_Nuke______ ;_02
.by $43 ;ind_Nuke___________ ;_03
.by $44 ;ind_LeapFrog_______ ;_04
.by $45 ;ind_Funky_Bomb_____ ;_05
.by $46 ;ind_MIRV___________ ;_06
.by $47 ;ind_Death_s_Head___ ;_07
.by $48 ;ind_Napalm_________ ;_08
.by $49 ;ind_Hot_Napalm_____ ;_09
.by $4a ;ind_Tracer_________ ;_10
.by $4b ;ind_Smoke_Tracer___ ;_11
.by $4c ;ind_Baby_Roller____ ;_12
.by $4d ;ind_Roller_________ ;_13
.by $4e ;ind_Heavy_Roller___ ;_14
.by $4f ;ind_Riot_Charge____ ;_15
.by $50 ;ind_Riot_Blast_____ ;_16
.by $51 ;ind_Riot_Bomb______ ;_17
.by $40 ;ind_Baby_Missile ;_00
.by $41 ;ind_Missile ;_01
.by $42 ;ind_Baby_Nuke ;_02
.by $43 ;ind_Nuke ;_03
.by $44 ;ind_LeapFrog ;_04
.by $45 ;ind_Funky_Bomb ;_05
.by $46 ;ind_MIRV ;_06
.by $47 ;ind_Death_s_Head ;_07
.by $48 ;ind_Napalm ;_08
.by $49 ;ind_Hot_Napalm ;_09
.by $4a ;ind_Tracer ;_10
.by $4b ;ind_Smoke_Tracer ;_11
.by $4c ;ind_Baby_Roller ;_12
.by $4d ;ind_Roller ;_13
.by $4e ;ind_Heavy_Roller ;_14
.by $4f ;ind_Riot_Charge ;_15
.by $50 ;ind_Riot_Blast ;_16
.by $51 ;ind_Riot_Bomb ;_17
.by $52 ;ind_Heavy_Riot_Bomb ;_18
.by $53 ;ind_Baby_Digger____ ;_19
.by $54 ;ind_Digger_________ ;_20
.by $55 ;ind_Heavy_Digger___ ;_21
.by $56 ;ind_Baby_Sandhog___ ;_22
.by $57 ;ind_Sandhog________ ;_23
.by $58 ;ind_Heavy_Sandhog__ ;_24
.by $59 ;ind_Dirt_Clod______ ;_25
.by $5a ;ind_Dirt_Ball______ ;_26
.by $5b ;ind_Ton_of_Dirt____ ;_27
.by $60 ;ind_Liquid_Dirt____ ;_28
.by $7b ;ind_Dirt_Charge____ ;_29
.by $1f ;ind_Buy_me_________ ;_30
.by $20 ;ind_Laser__________ ;_31
.by $5f ;ind_White_Flag_____ ;_32
.by $1c ;ind_Battery________ ;_33
.by $06 ;ind_Floating_Tank__ ;_34
.by $1b ;ind_Parachute______ ;_35
.by $53 ;ind_Baby_Digger ;_19
.by $54 ;ind_Digger ;_20
.by $55 ;ind_Heavy_Digger ;_21
.by $56 ;ind_Baby_Sandhog ;_22
.by $57 ;ind_Sandhog ;_23
.by $58 ;ind_Heavy_Sandhog ;_24
.by $59 ;ind_Dirt_Clod ;_25
.by $5a ;ind_Dirt_Ball ;_26
.by $5b ;ind_Ton_of_Dirt ;_27
.by $60 ;ind_Liquid_Dirt ;_28
.by $7b ;ind_Dirt_Charge ;_29
.by $1f ;ind_Buy_me ;_30
.by $20 ;ind_Laser ;_31
.by $5f ;ind_White_Flag ;_32
.by $1c ;ind_Battery ;_33
.by $06 ;ind_Floating_Tank ;_34
.by $1b ;ind_Parachute ;_35
.by $1b ;ind_StrongParachute ;_36
.by $1e ;ind_Mag_Deflector__ ;_37
.by $3b ;ind_Shield_________ ;_38
.by $3d ;ind_Heavy_Shield___ ;_39
.by $3c ;ind_Force_Shield___ ;_40
.by $3f ;ind_Bouncy_Castle__ ;_41
.by $1d ;ind_Long_Barrel____ ;_42
.by $1e ;ind_Mag_Deflector ;_37
.by $3b ;ind_Shield ;_38
.by $3d ;ind_Heavy_Shield ;_39
.by $3c ;ind_Force_Shield ;_40
.by $3f ;ind_Bouncy_Castle ;_41
.by $1d ;ind_Long_Barrel ;_42
.by $7d ;ind_Nuclear_Winter_ ;_43
.by $02 ;ind_Lazy_Boy_______ ;_44
.by $03 ;ind_Lazy_Darwin____ ;_45
.by $5e ;ind_Auto_Defense___ ;_46
.by $7c ;ind_Spy_Hard_______ ;_47
.by $02 ;ind_Lazy_Boy ;_44
.by $03 ;ind_Lazy_Darwin ;_45
.by $5e ;ind_Auto_Defense ;_46
.by $7c ;ind_Spy_Hard ;_47
; Names of weapons (16 chars long)
NamesOfWeapons ;the comment is an index in the tables
@@ -532,7 +538,7 @@ NamesOfWeapons ;the comment is an index in the tables
dta d"Auto Defense " ; 46
dta d"Spy Hard " ; 47
DefensiveEnergy = *-(last_offensive_____ - first_offensive____ +1) ; to fake the table for ALL weapons
DefensiveEnergy = *-(last_offensive - first_offensive +1) ; to fake the table for ALL weapons
.by 00 ; White Flag
.by 00 ; Heat Guidance
.by 98 ; Let's go!
@@ -550,22 +556,22 @@ DefensiveEnergy = *-(last_offensive_____ - first_offensive____ +1) ; to fake th
.by 00 ; Auto Defense
.by 00 ; Spy Hard
weaponsOfDeath ; weapons used in tank death animations
dta ind_Missile________
dta ind_Baby_Nuke______
dta ind_Nuke___________
dta ind_Death_s_Head___
dta ind_Hot_Napalm_____ ; why not?
dta ind_Riot_Bomb______
dta ind_Missile
dta ind_Baby_Nuke
dta ind_Nuke
dta ind_Death_s_Head
dta ind_Hot_Napalm ; why not?
dta ind_Riot_Bomb
dta ind_Heavy_Riot_Bomb
dta ind_Baby_Digger____
dta ind_Digger_________
dta ind_Heavy_Digger___
dta ind_Baby_Sandhog___
dta ind_Sandhog________
dta ind_Heavy_Sandhog__
dta ind_Dirt_Clod______
dta ind_Dirt_Ball______
dta ind_Ton_of_Dirt____
dta ind_Baby_Digger
dta ind_Digger
dta ind_Heavy_Digger
dta ind_Baby_Sandhog
dta ind_Sandhog
dta ind_Heavy_Sandhog
dta ind_Dirt_Clod
dta ind_Dirt_Ball
dta ind_Ton_of_Dirt
weaponsOfDeathEnd
joyToKeyTable
.by $ff ;00
@@ -599,17 +605,15 @@ scrcodes
dta d"ijklmnop"
dta d"qrstuvwx"
dta d"yz"
;-------decimal constans + end of scrcodes
zero
digits ; decimal constans
digits
dta d"0123456"
dta d"789. " ; "-"
;-------decimal constans
;zero
;digits dta d"0123456789"
;-----------------------------------
gameOverSpritesTop
; end of the Gover sprites by number of players
; end of the GameOver sprites by number of players
; 1 2 3 4 5 6
.by 130+7,130+7,136+7,142+7,148+7,154+7
;------credits
@@ -674,6 +678,6 @@ CreditsEnd
.IF target = 5200
; Atari 5200 splash
NewSplashText=*
dta d"copyright 2023 atari"
dta d" 2023 atariage", $4e, "com " ; $4e - non blinking dot
.ENDIF
.endif
+1 -1
View File
@@ -22,4 +22,4 @@ RoundsTable .by 10,20,30,40,50
AIForceTable .wo 375,470,630,720,820 ; starting shoot forces for different gravity
flyDelayTable .by 255,150,75,35,1
seppukuTable .by 255, 45,25,15,9
.endif
.ENDIF
+108 -108
View File
@@ -28,123 +28,123 @@ space = 0 ; space in screencodes
KeyRepeatSpeed = 10 ; (max 127 !!!)
;character codes for symbols (tank, parachute, etc. )
char_parachute_______ = $02
char_flag____________ = $1e
char_flame___________ = $14
char_clear_flame_____ = $1c
char_digger__________ = $04
char_sandhog_________ = $0c
char_sandhog_offset = char_sandhog_________ - char_digger__________
char_tank1___________ = $20
char_tank2___________ = $24
char_tank3___________ = $2c
char_tank4___________ = $28 ; robotank shape
char_parachute = $02
char_flag = $1e
char_flame = $14
char_clear_flame = $1c
char_digger = $04
char_sandhog = $0c
char_sandhog_offset = char_sandhog - char_digger
char_tank1 = $20
char_tank2 = $24
char_tank3 = $2c
char_tank4 = $28 ; robotank shape
;Weapon prices (*10 on screen)
price_Baby_Missile___ = 0 ;_00
price_Missile________ = 96 ;_01
price_Baby_Nuke______ = 111 ;_02
price_Nuke___________ = 144 ;_03
price_LeapFrog_______ = 192 ;_04
price_Funky_Bomb_____ = 293 ;_05
price_MIRV___________ = 456 ;_06
price_Death_s_Head___ = 337 ;_07
price_Napalm_________ = 125 ;_08
price_Hot_Napalm_____ = 162 ;_09
price_Tracer_________ = 102 ;_10
price_Smoke_Tracer___ = 291 ;_11
price_Baby_Roller____ = 211 ;_12
price_Roller_________ = 244 ;_13
price_Heavy_Roller___ = 326 ;_14
price_Riot_Charge____ = 230 ;_15
price_Riot_Blast_____ = 241 ;_16
price_Riot_Bomb______ = 259 ;_17
price_Baby_Missile = 0 ;_00
price_Missile = 96 ;_01
price_Baby_Nuke = 111 ;_02
price_Nuke = 144 ;_03
price_LeapFrog = 192 ;_04
price_Funky_Bomb = 293 ;_05
price_MIRV = 456 ;_06
price_Death_s_Head = 337 ;_07
price_Napalm = 125 ;_08
price_Hot_Napalm = 162 ;_09
price_Tracer = 102 ;_10
price_Smoke_Tracer = 291 ;_11
price_Baby_Roller = 211 ;_12
price_Roller = 244 ;_13
price_Heavy_Roller = 326 ;_14
price_Riot_Charge = 230 ;_15
price_Riot_Blast = 241 ;_16
price_Riot_Bomb = 259 ;_17
price_Heavy_Riot_Bomb = 272 ;_18
price_Baby_Digger____ = 136 ;_19
price_Digger_________ = 176 ;_20
price_Heavy_Digger___ = 207 ;_21
price_Baby_Sandhog___ = 158 ;_22
price_Sandhog________ = 191 ;_23
price_Heavy_Sandhog__ = 223 ;_24
price_Dirt_Clod______ = 104 ;_25
price_Dirt_Ball______ = 130 ;_26
price_Ton_of_Dirt____ = 171 ;_27
price_Liquid_Dirt____ = 330 ;_28
price_Dirt_Charge____ = 343 ;_29
price_Buy_me_________ = 170 ;_30
price_Laser__________ = 277 ;_31
price_White_Flag_____ = $0 ;_32
price_Battery________ = 300 ;_33
price_Hovercraft_____ = 352 ;_34
price_Parachute______ = 234 ;_35
price_Baby_Digger = 136 ;_19
price_Digger = 176 ;_20
price_Heavy_Digger = 207 ;_21
price_Baby_Sandhog = 158 ;_22
price_Sandhog = 191 ;_23
price_Heavy_Sandhog = 223 ;_24
price_Dirt_Clod = 104 ;_25
price_Dirt_Ball = 130 ;_26
price_Ton_of_Dirt = 171 ;_27
price_Liquid_Dirt = 330 ;_28
price_Dirt_Charge = 343 ;_29
price_Buy_me = 170 ;_30
price_Laser = 277 ;_31
price_White_Flag = $0 ;_32
price_Battery = 300 ;_33
price_Hovercraft = 352 ;_34
price_Parachute = 234 ;_35
price_StrongParachute = 1000 ;_36
price_Mag_Deflector__ = 745 ;_37
price_Shield_________ = 224 ;_38
price_Heavy_Shield___ = 628 ;_39
price_Force_Shield___ = 1100 ;_40
price_Bouncy_Castle__ = 512 ;_41
price_Long_Barrel____ = 2100 ;_42
price_Mag_Deflector = 745 ;_37
price_Shield = 224 ;_38
price_Heavy_Shield = 628 ;_39
price_Force_Shield = 1100 ;_40
price_Bouncy_Castle = 512 ;_41
price_Long_Barrel = 2100 ;_42
price_Nuclear_Winter_ = 1000 ;_43
price_Lazy_Boy_______ = 500 ;_44
price_Lazy_Darwin____ = 730 ;_45
price_Auto_Defense___ = 250 ;_46
price_Spy_Hard_______ = 83 ;_47
price_Lazy_Boy = 500 ;_44
price_Lazy_Darwin = 730 ;_45
price_Auto_Defense = 250 ;_46
price_Spy_Hard = 83 ;_47
;Weapon indexes (numbers)
ind_Baby_Missile___ = 0
first_offensive____ = ind_Baby_Missile___
ind_Missile________ = 1
ind_Baby_Nuke______ = 2
ind_Nuke___________ = 3
ind_LeapFrog_______ = 4
ind_Funky_Bomb_____ = 5
ind_MIRV___________ = 6
ind_Death_s_Head___ = 7
ind_Napalm_________ = 8
ind_Hot_Napalm_____ = 9
ind_Tracer_________ = 10
ind_Smoke_Tracer___ = 11
ind_Baby_Roller____ = 12
ind_Roller_________ = 13
ind_Heavy_Roller___ = 14
ind_Riot_Charge____ = 15
ind_Riot_Blast_____ = 16
ind_Riot_Bomb______ = 17
ind_Baby_Missile = 0
first_offensive = ind_Baby_Missile
ind_Missile = 1
ind_Baby_Nuke = 2
ind_Nuke = 3
ind_LeapFrog = 4
ind_Funky_Bomb = 5
ind_MIRV = 6
ind_Death_s_Head = 7
ind_Napalm = 8
ind_Hot_Napalm = 9
ind_Tracer = 10
ind_Smoke_Tracer = 11
ind_Baby_Roller = 12
ind_Roller = 13
ind_Heavy_Roller = 14
ind_Riot_Charge = 15
ind_Riot_Blast = 16
ind_Riot_Bomb = 17
ind_Heavy_Riot_Bomb = 18
ind_Baby_Digger____ = 19
ind_Digger_________ = 20
ind_Heavy_Digger___ = 21
ind_Baby_Sandhog___ = 22
ind_Sandhog________ = 23
ind_Heavy_Sandhog__ = 24
ind_Dirt_Clod______ = 25
ind_Dirt_Ball______ = 26
ind_Ton_of_Dirt____ = 27
ind_Liquid_Dirt____ = 28
ind_Dirt_Charge____ = 29
ind_Buy_me_________ = 30
ind_Laser__________ = 31
last_offensive_____ = ind_Laser__________
ind_White_Flag_____ = 32
first_defensive____ = ind_White_Flag_____
ind_Battery________ = 33
ind_Hovercraft_____ = 34
ind_Parachute______ = 35
ind_Baby_Digger = 19
ind_Digger = 20
ind_Heavy_Digger = 21
ind_Baby_Sandhog = 22
ind_Sandhog = 23
ind_Heavy_Sandhog = 24
ind_Dirt_Clod = 25
ind_Dirt_Ball = 26
ind_Ton_of_Dirt = 27
ind_Liquid_Dirt = 28
ind_Dirt_Charge = 29
ind_Buy_me = 30
ind_Laser = 31
last_offensive = ind_Laser
ind_White_Flag = 32
first_defensive = ind_White_Flag
ind_Battery = 33
ind_Hovercraft = 34
ind_Parachute = 35
ind_StrongParachute = 36
ind_Mag_Deflector__ = 37
ind_Shield_________ = 38
ind_Heavy_Shield___ = 39
ind_Force_Shield___ = 40
ind_Bouncy_Castle__ = 41
ind_Long_Barrel____ = 42
ind_Mag_Deflector = 37
ind_Shield = 38
ind_Heavy_Shield = 39
ind_Force_Shield = 40
ind_Bouncy_Castle = 41
ind_Long_Barrel = 42
ind_Nuclear_Winter_ = 43
ind_Lazy_Boy_______ = 44
ind_Lazy_Darwin____ = 45
ind_Auto_Defense___ = 46
ind_Spy_Hard_______ = 47
last_defensive_____ = ind_Spy_Hard_______
last_real_defensive = ind_Bouncy_Castle__
number_of_offensives = last_offensive_____ - first_offensive____+1
number_of_defensives = (last_defensive_____ - first_defensive____+1)
ind_Lazy_Boy = 44
ind_Lazy_Darwin = 45
ind_Auto_Defense = 46
ind_Spy_Hard = 47
last_defensive = ind_Spy_Hard
last_real_defensive = ind_Bouncy_Castle
number_of_offensives = last_offensive - first_offensive +1
number_of_defensives = (last_defensive - first_defensive +1)
number_of_weapons = number_of_offensives + number_of_defensives
;--------------------------------
; names of RMT instruments (sfx)
+3 -3
View File
@@ -391,9 +391,9 @@ AfterManualShooting
; defensive weapons without flight handling
ldx TankNr
lda ActiveDefenceWeapon,x
cmp #ind_Hovercraft_____
cmp #ind_Hovercraft
beq GoFloat
cmp #ind_White_Flag_____ ; White Flag
cmp #ind_White_Flag ; White Flag
beq ShootWhiteFlag
cmp #ind_Nuclear_Winter_
bne StandardShoot
@@ -784,7 +784,7 @@ B0 dey
;--------------------------------------------------
ldx #(number_of_weapons - 1)
@ lda #$0
cpx #ind_White_Flag_____ ; White Flag
cpx #ind_White_Flag ; White Flag
bne no99
set99 lda #99
no99
+12 -12
View File
@@ -495,7 +495,7 @@ endcircleloop
mwa #0 temptankX
mva #0 temptankNr ;player number
sta temptankNr ;player number
StillRandomize
ldx NumberOfPlayers
lda random
@@ -756,17 +756,17 @@ noTankNoPM
; in xdraw, ydraw we have coordinates left LOWER corner of Tank char
ldx TankNr
lda ActiveDefenceWeapon,x
cmp #ind_Shield_________ ; one shot shield
cmp #ind_Shield ; one shot shield
beq DrawTankSh
cmp #ind_Force_Shield___ ; shield with energy and parachute
cmp #ind_Force_Shield ; shield with energy and parachute
beq DrawTankShieldBold
cmp #ind_Heavy_Shield___ ; shield with energy
cmp #ind_Heavy_Shield ; shield with energy
beq DrawTankShieldBold
cmp #ind_Bouncy_Castle__ ; Auto Defence
cmp #ind_Bouncy_Castle ; Auto Defence
beq DrawTankShieldWihHorns
cmp #ind_Mag_Deflector__ ; Mag Deflector
cmp #ind_Mag_Deflector ; Mag Deflector
beq DrawTankShieldWihHorns
cmp #ind_White_Flag_____ ; White Flag
cmp #ind_White_Flag ; White Flag
beq DrawTankFlag
bne NoShieldDraw
DrawTankSh
@@ -781,7 +781,7 @@ DrawTankShieldBold
jsr DrawTankShieldBoldLine
jmp NoShieldDraw
DrawTankFlag
lda #char_flag____________ ; flag symbol
lda #char_flag ; flag symbol
sta CharCode
lda Ytankstable,x
sec
@@ -916,7 +916,7 @@ tankflash_loop
.proc DrawTankParachute
;Tank number in X
;--------------------------------------------------
lda #char_parachute_______ ; parachute symbol
lda #char_parachute ; parachute symbol
sta CharCode
lda Ytankstable,x
cmp #16
@@ -1028,11 +1028,11 @@ ToHighToParachute
; let's check if the given tank has got the parachute
ldx TankNr
lda ActiveDefenceWeapon,x
cmp #ind_Parachute______ ; parachute
cmp #ind_Parachute ; parachute
beq ParachuteActive
cmp #ind_StrongParachute ; strong parachute
beq ParachuteActive
cmp #ind_Force_Shield___ ; shield witch energy and parachute
cmp #ind_Force_Shield ; shield witch energy and parachute
bne TankFallsX
ParachuteActive
inc Parachute
@@ -1237,7 +1237,7 @@ EndOfFall
bne NoParachuteWeapon
; first we check type of parachute
lda ActiveDefenceWeapon,x
cmp #ind_Parachute______ ; deactivate weapon only if parachute (54)
cmp #ind_Parachute ; deactivate weapon only if parachute (54)
bne NoParachuteWeapon
mva #0 ActiveDefenceWeapon,x ; deactivate defence weapon (parachute)
NoParachuteWeapon
+4 -2
View File
@@ -6,7 +6,9 @@
;Miami & Warsaw 2022, 2023
;---------------------------------------------------
.def TARGET = 800 ; 5200 ; or 800
.IFNDEF TARGET
.def TARGET = 800 ; 5200 ; or 64
.ENDIF
;atari800 -5200 -cart ${outputFilePath} -cart-type 4
;atari800 -run ${outputFilePath}
;---------------------------------------------------
@@ -194,7 +196,7 @@ FirstZpageVariable = $57
.ELSE
icl 'Atari/lib/ATARISYS.ASM'
icl 'Atari/lib/MACRO.ASM'
icl 'artwork/splash_v2/splash.asm' ; splash screen and musix
; icl 'artwork/splash_v2/splash.asm' ; splash screen and musix
.ENDIF
;-----------------------------------------------
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -287,9 +287,9 @@ AfterBFGflag .DS 1
; tables with indexes of weapons on the right lists
; OK (2022) so, L1 is list of offensive weapons, L2 - defensive
IndexesOfWeaponsL1
.ds (last_offensive_____ - first_offensive____+1)
.ds (last_offensive - first_offensive +1)
IndexesOfWeaponsL2
.ds (last_defensive_____ - first_defensive____+1)
.ds (last_defensive - first_defensive +1)
;----------------------------------------------------
; variables storing amount of weapons on the first and second
+58 -58
View File
@@ -22,38 +22,38 @@
pha
rts
ExplosionRoutines
.word babymissile-1 ;Baby_Missile___;_00
.word missile-1 ;Missile________;_01
.word babynuke-1 ;Baby_Nuke______;_02
.word nuke-1 ;Nuke___________;_03
.word leapfrog-1 ;LeapFrog_______;_04
.word funkybomb-1 ;Funky_Bomb_____;_05
.word mirv-1 ;MIRV___________;_06
.word deathshead-1 ;Death_s_Head___;_07
.word napalm-1 ;Napalm_________;_08
.word hotnapalm-1 ;Hot_Napalm_____;_09
.word tracer-1 ;Tracer_________;_10
.word tracer-1 ;Smoke_Tracer___;_11
.word babyroller-1 ;Baby_Roller____;_12
.word roller-1 ;Roller_________;_13
.word heavyroller-1 ;Heavy_Roller___;_14
.word riotcharge-1 ;Riot_Charge____;_15
.word riotblast-1 ;Riot_Blast_____;_16
.word riotbomb-1 ;Riot_Bomb______;_17
.word babymissile-1 ;Baby_Missile ;_00
.word missile-1 ;Missile ;_01
.word babynuke-1 ;Baby_Nuke ;_02
.word nuke-1 ;Nuke ;_03
.word leapfrog-1 ;LeapFrog ;_04
.word funkybomb-1 ;Funky_Bomb ;_05
.word mirv-1 ;MIRV ;_06
.word deathshead-1 ;Death_s_Head ;_07
.word napalm-1 ;Napalm ;_08
.word hotnapalm-1 ;Hot_Napalm ;_09
.word tracer-1 ;Tracer ;_10
.word tracer-1 ;Smoke_Tracer ;_11
.word babyroller-1 ;Baby_Roller ;_12
.word roller-1 ;Roller ;_13
.word heavyroller-1 ;Heavy_Roller ;_14
.word riotcharge-1 ;Riot_Charge ;_15
.word riotblast-1 ;Riot_Blast ;_16
.word riotbomb-1 ;Riot_Bomb ;_17
.word heavyriotbomb-1 ;Heavy_Riot_Bomb;_18
.word babydigger-1 ;Baby_Digger____;_19
.word digger-1 ;Digger_________;_20
.word heavydigger-1 ;Heavy_Digger___;_21
.word babysandhog-1 ;Baby_Sandhog___;_22
.word sandhog-1 ;Sandhog________;_23
.word heavysandhog-1 ;Heavy_Sandhog__;_24
.word dirtclod-1 ;Dirt_Clod______;_25
.word dirtball-1 ;Dirt_Ball______;_26
.word tonofdirt-1 ;Ton_of_Dirt____;_27
.word liquiddirt-1 ;Liquid_Dirt____;_28
.word dirtcharge-1 ;Dirt_Charge____;_29
.word BFG-1 ;Buy_me_________;_30
.word laser-1 ;Laser__________;_31
.word babydigger-1 ;Baby_Digger ;_19
.word digger-1 ;Digger ;_20
.word heavydigger-1 ;Heavy_Digger ;_21
.word babysandhog-1 ;Baby_Sandhog ;_22
.word sandhog-1 ;Sandhog ;_23
.word heavysandhog-1 ;Heavy_Sandhog ;_24
.word dirtclod-1 ;Dirt_Clod ;_25
.word dirtball-1 ;Dirt_Ball ;_26
.word tonofdirt-1 ;Ton_of_Dirt ;_27
.word liquiddirt-1 ;Liquid_Dirt ;_28
.word dirtcharge-1 ;Dirt_Charge ;_29
.word BFG-1 ;Buy_me ;_30
.word laser-1 ;Laser ;_31
VOID
tracer
@@ -288,10 +288,10 @@ RepeatFlame ; internal loop (draw flames)
lda random
and #%00000110
clc
adc #char_flame___________
adc #char_flame
bne PutFlameChar
LastNapalmRepeat
lda #char_clear_flame_____ ; clear flame symbol
lda #char_clear_flame ; clear flame symbol
PutFlameChar
sta CharCode
; check coordinates
@@ -536,7 +536,7 @@ DiggerCharacter
lda random
and #$06
clc
adc #char_digger__________
adc #char_digger
adc sandhogflag
sta CharCode
cpw xdraw #(screenwidth-6)
@@ -813,15 +813,15 @@ DistanceCheckLoop
tay
; check shields
lda ActiveDefenceWeapon,x
cmp #ind_Shield_________ ; one hit shield
cmp #ind_Shield ; one hit shield
beq UseShield
cmp #ind_Force_Shield___ ; shield with energy and parachute
cmp #ind_Force_Shield ; shield with energy and parachute
beq UseShieldWithEnergy
cmp #ind_Heavy_Shield___ ; shield with energy
cmp #ind_Heavy_Shield ; shield with energy
beq UseShieldWithEnergy
cmp #ind_Bouncy_Castle__ ; Auto Defence (it works only if hit ground next to tank. Tank hit is handled in Flight proc)
cmp #ind_Bouncy_Castle ; Auto Defence (it works only if hit ground next to tank. Tank hit is handled in Flight proc)
beq UseShieldWithEnergy
cmp #ind_Mag_Deflector__ ; Mag deflector (it works only if hit ground next to tank. Tank hit is handled in Flight proc)
cmp #ind_Mag_Deflector ; Mag deflector (it works only if hit ground next to tank. Tank hit is handled in Flight proc)
beq UseShieldWithEnergy
jsr DecreaseEnergyX
jmp EndOfDistanceCheckLoop
@@ -1364,9 +1364,9 @@ pressedTAB
mva #sfx_purchase sfx_effect
;ldx TankNr ; optimized
lda ActiveWeapon,x
cmp #last_offensive_____ ; the last possible offensive weapon
cmp #last_offensive ; the last possible offensive weapon
bne ?notlasttofirst
lda #first_offensive____ ; #0
lda #first_offensive ; #0
sta ActiveWeapon,x
beq @+ ; allways = 0
?notlasttofirst
@@ -1381,9 +1381,9 @@ CTRLpressedTAB
mva #sfx_purchase sfx_effect
;ldx TankNr ; optimized
lda ActiveWeapon,x
cmp #first_offensive____ ; #0
cmp #first_offensive ; #0
bne ?notfirsttolast
lda #last_offensive_____ ; the last possible offensive weapon
lda #last_offensive ; the last possible offensive weapon
sta ActiveWeapon,x
bne @+ ; allways <> 0
?notfirsttolast
@@ -1452,7 +1452,7 @@ AfterOffensiveText
mva #0 LaserFlag ; $ff - Laser
ldx TankNr
lda ActiveWeapon,x
cmp #ind_Laser__________ ; laser
cmp #ind_Laser ; laser
bne NotStrongShoot
; Laser: (not)very strong - invisible - shot for laser beam end coordinates
bit Vdebug
@@ -1528,7 +1528,7 @@ ShotUnderGround
bmi noSmokeTracer ; no Smoke Tracer display
ldx TankNr
lda ActiveWeapon,x
cmp #ind_Smoke_Tracer___ ; Smoke tracer
cmp #ind_Smoke_Tracer ; Smoke tracer
bne noSmokeTracer
iny
noSmokeTracer
@@ -1707,7 +1707,7 @@ Loopi
bmi NoTestForMIRV
ldx TankNr
lda ActiveWeapon,x
cmp #ind_MIRV___________ ; MIRV
cmp #ind_MIRV ; MIRV
jeq MIRVdownLoop
NoTestForMIRV
NoGravity
@@ -1859,16 +1859,16 @@ EndOfFlight2
dex ; index of hitted tank in X
ldy TankNr
lda ActiveWeapon,y
cmp #ind_Tracer_________ ; defence not fire by tracers
cmp #ind_Tracer ; defence not fire by tracers
beq JNoDefence
cmp #ind_Smoke_Tracer___
cmp #ind_Smoke_Tracer
beq JNoDefence
cmp #ind_Laser__________ ; Bouncy and Mag not fire by Laser
cmp #ind_Laser ; Bouncy and Mag not fire by Laser
beq JNoDefence
lda ActiveDefenceWeapon,x
cmp #ind_Bouncy_Castle__ ; Auto Defence
cmp #ind_Bouncy_Castle ; Auto Defence
jeq BouncyCastle
cmp #ind_Mag_Deflector__ ; Mag Deflector
cmp #ind_Mag_Deflector ; Mag Deflector
beq MagDeflector
JNoDefence
jmp NoDefence
@@ -1919,7 +1919,7 @@ BouncyCastle
; now in Y we have number of of the attacking player (TankNr) !
lda ActiveWeapon,y
; if Bouncy Castle bounced Funky Bomb - whole screen in range of soil down
cmp #ind_Funky_Bomb_____
cmp #ind_Funky_Bomb
bne @+
jsr SetFullScreenSoilRange
@
@@ -2501,7 +2501,7 @@ StoreMaxAlt
mwa #hoverFull LineAddress4x4
mwa #((ScreenWidth/2)-((hoverFullEnd-hoverFull)*2)) LineXdraw ; centering
mva #hoverFullEnd-hoverFull-1 fx ; length
mva #hoverFullEnd-hoverFull fx ; length
sec
lda FloatingAlt
sbc #12
@@ -2548,7 +2548,7 @@ ReachSky
; display text 4x4 - fuel full (clear text)
mwa #hoverFull LineAddress4x4
mwa #((ScreenWidth/2)-((hoverFullEnd-hoverFull)*2)) LineXdraw ; centering
mva #(hoverFullEnd-hoverFull-1) fx ; length
mva #(hoverFullEnd-hoverFull) fx ; length
sec
lda FloatingAlt
sbc #12
@@ -2593,7 +2593,7 @@ KeyboardAndJoyCheck
; display text 4x4 - low fuel
mwa #hoverEmpty LineAddress4x4
mwa #((ScreenWidth/2)-((hoverEmptyEnd-hoverEmpty)*2)) LineXdraw ; centering
mva #hoverEmptyEnd-hoverEmpty-1 fx ; length
mva #hoverEmptyEnd-hoverEmpty fx ; length
sec
lda FloatingAlt
sbc #12
@@ -2702,7 +2702,7 @@ pressedSpace
; display text 4x4 - low fuel (clear text)
mwa #hoverEmpty LineAddress4x4
mwa #((ScreenWidth/2)-((hoverEmptyEnd-hoverEmpty)*2)) LineXdraw ; centering
mva #hoverEmptyEnd-hoverEmpty-1 fx ; length
mva #hoverEmptyEnd-hoverEmpty fx ; length
sec
lda FloatingAlt
sbc #12
@@ -2893,9 +2893,9 @@ CheckCollisionWithTankLoop
; with or without shield ?
lda ActiveDefenceWeapon,x
cmp #ind_Mag_Deflector__ ; first shielded weapon
cmp #ind_Mag_Deflector ; first shielded weapon
bcc CheckCollisionWithNotShieldedTank
cmp #ind_Bouncy_Castle__+1 ; last shielded weapon
cmp #ind_Bouncy_Castle +1 ; last shielded weapon
bcc CheckCollisionWithShieldedTank ; tank with shield is bigger :)
;lda ShieldEnergy,x ; there is wrong method to check shield :)