; @com.wudsn.ide.asm.mainsourcefile=scorch.asm .IF *>0 ;this is a trick that prevents compiling this file alone ; initial values for some variables initialvaluesStart I_OptionsTable .by 0,1,2,2,0,1,3,2,0 I_RoundsInTheGame .by 10 ;how many rounds in the current game I_seppukuVal .by 75 I_mountainDeltaH .by 3 I_mountainDeltaL .by $ff ;---------------------------------------------------- I_LineHeader1 dta d"# ROUND: " I_RoundNrDisplay dta d" #", $ff initialvaluesCount = *-initialvaluesstart ; MAX 128 bytes ! ;=================================================================================== ;==========================CONSTANT TABLES, do not erase!=========================== ;=================================================================================== mountainsDeltaTableH .by 0,1,3,5,7 mountainsDeltaTableL .by $1f, $7f, $ff, $7f, $ff ;------------------------------------------------ LevelNameBeginL ; begins of level names .by NamesOfLevels,>(NamesOfLevels+10),>(NamesOfLevels+20) .by >(NamesOfLevels+32),>(NamesOfLevels+42),>(NamesOfLevels+52) .by >(NamesOfLevels+64),>(NamesOfLevels+74),>(NamesOfLevels+84) ;-------------- TanksWeaponsTableL .REPT MaxPlayers, #+1 .by TanksWeapon:1 .ENDR ;-------------- XtankOffsetGO_L .by 6,56,106,156,206,0 XtankOffsetGO_H .by 0,0,0,0,0,1 ;-----4x4 texts----- LineTop dta d"(%%%%%%%%%%%%)" ;# - vertical, () * +, % - horizontal LineBottom dta d"*%%%%%%%%%%%%+" LineEmpty dta d"# #" LineHeader2 dta d"# RESULTS #" LineGameOver dta d"# GAME OVER #" seppukuText dta d"# SEPPUKU! #" areYouSureText .IF TARGET = 800 dta d"# SURE? Y/N #" .ELIF TARGET = 5200 dta d"#END? Y-1/N-0#" .ENDIF lineClear dta d" " ; Additional texts - Teams Player_Header dta d"Player" Team_Header dta d"A-Team" ; :) TankColoursTable .BYTE $58,$2a,$96,$ca,$7a,$ed TankColoursTableT .BYTE $2a,$2a,$7a,$7a,$2a,$7a ; Teams colors ;TankStatusColoursTable .BYTE $54,$24,$92,$c4,$74,$e4 ; standard order TankStatusColoursTable .BYTE $74,$c4,$24,$e4,$54,$94 ; Adam's order TankStatusColoursTableT .BYTE $24,$74,$24,$74,$24,$74 ; Teams colors ;----------- GradientAddrL .by dliColorsFore, >dliColorsFore, >dliColorsFore2 dliColorsFore2 ; colors for NTSC .by $0a ; one mountains color .by $7a,$7a,$7a,$6a,$6a,$5a,$5a,$4a,$4a,$3a .by $3a,$1a,$1a,$ea,$ea,$d8,$d8,$b8,$b8,$b8 dliColorsFore2PAL ; colors for PAL .by $0a ; one mountains color .by $7a,$7a,$7a,$6a,$6a,$5a,$5a,$4a,$4a,$3a .by $3a,$1a,$1a,$ea,$ea,$c8,$c8,$a8,$a8,$a8 ;----------- pmtableL ; addressess of the P/M memory for 6 tanks .by <(pmgraph+$400) .by <(pmgraph+$500) .by <(pmgraph+$600) .by <(pmgraph+$700) .by <(pmgraph+$300) ; this is a missile background .by <(pmgraph+$300) ; this is a missile background pmtableH .by >(pmgraph+$400) .by >(pmgraph+$500) .by >(pmgraph+$600) .by >(pmgraph+$700) .by >(pmgraph+$300) .by >(pmgraph+$300) ;----------- sintable .by 1 .by 4 .by 8 .by 13 .by 17 .by 22 .by 26 .by 31 .by 35 .by 40 .by 44 .by 48 .by 53 .by 57 .by 61 .by 66 .by 70 .by 74 .by 79 .by 83 .by 87 .by 91 .by 95 .by 100 .by 104 .by 108 .by 112 .by 116 .by 120 .by 124 .by 128 .by 131 .by 135 .by 139 .by 143 .by 146 .by 150 .by 154 .by 157 .by 161 .by 164 .by 167 .by 171 .by 174 .by 177 .by 181 .by 184 .by 187 .by 190 .by 193 .by 196 .by 198 .by 201 .by 204 .by 207 .by 209 .by 212 .by 214 .by 217 .by 219 .by 221 .by 223 .by 226 .by 228 .by 230 .by 232 .by 233 .by 235 .by 237 .by 238 .by 240 .by 242 .by 243 .by 244 .by 246 .by 247 .by 248 .by 249 .by 250 .by 251 .by 252 .by 252 .by 253 .by 254 .by 254 .by 255 .by 255 .by 255 .by 255 .by 255 .by 255 ;anti self destruction byte ;linetableL ; :screenheight+1 .by <(display+screenBytes*#) ;linetableH ; :screenheight+1 .by >(display+screenBytes*#) ;---------------------------- ; now long (256 bytes) bittables are generated in RAM based on one bittable: ;bittable ; .by $80,$40,$20,$10,$08,$04,$02,$01 ;bittable2 ; .by $7f,$bf,$df,$ef,$f7,$fb,$fd,$fe ;---------------------------- disktance ;tanks distance .by 0,0 .REPT MaxPlayers-1, #+3 .by screenwidth/:1 .ENDR ; this table is for deciding where a tank should slide ; accordingly to what is below the tank ; values in table mean that tank is moving to the left SlideLeftTable .BY %00000001 .BY %00000010 .BY %00000011 .BY %00000100 .BY %00000101 .BY %00000110 .BY %00000111 ; .BY %00001100 SlideLeftTableLen = *-SlideLeftTable ;------------------------------------------------- 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_Heavy_Riot_Bomb .by >price_Digger .by >price_Heavy_Digger .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_Propaganda .by >price_Punch .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_Nuclear_Winter_ .by >price_Lazy_Boy .by >price_Lazy_Darwin .by >price_Auto_Defense .by >price_Spy_Hard WeaponPriceL .by 0