; @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!=========================== ;=================================================================================== TankColoursTable .BYTE $58,$2a,$96,$ca,$7a,$ed ;TankStatusColoursTable .BYTE $54,$24,$92,$c4,$74,$e4 ; standard order ;TanksPMOrder .BYTE 4,3,1,5,0,2 ; 0-3 = P0-P3 , 4 = M0+M1 , 5 = M2+M3 TankStatusColoursTable .BYTE $74,$c4,$24,$e4,$54,$94 ; Adam's order TanksPMOrder .BYTE 4,3,1,5,0,2 ; 0-3 = P0-P3 , 4 = M0+M1 , 5 = M2+M3 TankShapesTable .BYTE char_tank1___________,char_tank2___________,char_tank3___________ .BYTE char_tank1___________,char_tank2___________,char_tank3___________ dliColorsBack :10 .by $02,$00 dliColorsFore .by $0a CashOptionL ;(one zero less than on the screen) .by 0,<200,<800,<1200,<2000 CashOptionH .by 0,>200,>800,>1200,>2000 GravityTable .by 10,20,25,30,40 MaxWindTable .by 5,20,40,70,99 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 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 .by TanksWeapon1,>TanksWeapon2,>TanksWeapon3,>TanksWeapon4,>TanksWeapon5,>TanksWeapon6 ;-------------- XtankOffsetGO_L .by 6,56,106,156,206,0 XtankOffsetGO_H .by 0,0,0,0,0,1 ;-----4x4 texts----- LineTop dta d"(%%%%%%%%%%%%)", $ff ;# - vertical, () * +, % - horizontal LineBottom dta d"*%%%%%%%%%%%%+", $ff LineEmpty dta d"# #", $ff LineHeader2 dta d"# RESULTS #", $ff LineGameOver dta d"# GAME OVER #", $ff seppukuText dta d"# SEPPUKU! #", $ff areYouSureText dta d"# SURE? Y/N #", $ff lineClear dta d" ", $ff ;----------- 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 0 .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*#) ;---------------------------- 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 .by screenwidth/3 .by screenwidth/4 .by screenwidth/5 .by screenwidth/6 .by screenwidth/7 ;max number of players=6 ; 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 ;------------------------------------------------- TanksNamesDefault dta d"1st.Tank" dta d"2nd.Tank" dta d"3rd.Tank" dta d"4th.Tank" dta d"5th.Tank" dta d"6th.Tank" 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_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_Nuclear_Winter_ .by >price_Lazy_Boy_______ .by >price_Lazy_Darwin____ .by >price_Auto_Defense___ .by >price_Spy_Hard_______ WeaponPriceL .by