; @com.wudsn.ide.asm.mainsourcefile=scorch.asm .IF *>0 ;this is a trick that prevents compiling this file alone ;=================================================================================== ;==========================CONSTANT TABLES, do not erase!=========================== ;=================================================================================== TankColoursTable .BYTE $52,$32,$72,$92,$B2,$02 CashOptionL ;(one zero less than on the screen) .by 0,<200,<500,<800,<1000 CashOptionH .by 0,>200,>500,>800,>1000 GravityTable .by 10,20,25,30,40 MaxWindTable .by 5,20,40,60,80 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 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 ;-----4x4 texts----- LineTop dta d"(%%%%%%%%%%%%)" .byte $ff ;# - vertical, () * +, % - horizontal LineBottom dta d"*%%%%%%%%%%%%+" .byte $ff LineEmpty dta d"# #" .byte $ff LineHeader1 dta d"# ROUND: " RoundNrDisplay dta d" #" .byte $ff LineHeader2 dta d"# RESULTS #" .byte $ff LineGameOver dta d"# GAME OVER #" .byte $ff seppukuText dta d"# SEPPUKU! #" .byte $ff lineClear dta d" " .byte $ff ;----------- pmtableL ; addressess of the P/M memory for 5 tanks (6th is without P/M background) .by <(pmgraph+$400) .by <(pmgraph+$500) .by <(pmgraph+$600) .by <(pmgraph+$700) .by <(pmgraph+$300) ; this is a missile background pmtableH .by >(pmgraph+$400) .by >(pmgraph+$500) .by >(pmgraph+$600) .by >(pmgraph+$700) .by >(pmgraph+$300) ;----------- ; this table changes Angle to the appropriate tank character BarrelTableL .by $02,$02,$02,$02,$02,$02,$02,$02 .by $04,$04,$04,$04,$04,$04,$04,$04 .by $06,$06,$06,$06,$06,$06,$06,$06,$06 .by $08,$08,$08,$08,$08,$08,$08,$08 .by $0a,$0a,$0a,$0a,$0a,$0a,$0a,$0a .by $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .by $0e,$0e,$0e,$0e,$0e,$0e,$0e,$0e .by $10,$10,$10,$10,$10,$10,$10,$10 .by $12,$12,$12,$12,$12,$12,$12,$12,$12 .by $14,$14,$14,$14,$14,$14,$14,$14 .by $16,$16,$16,$16,$16,$16,$16,$16 BarrelTableR .by $2c,$2c,$2c,$2c,$2c,$2c,$2c,$2c .by $2a,$2a,$2a,$2a,$2a,$2a,$2a,$2a .by $28,$28,$28,$28,$28,$28,$28,$28,$28 .by $26,$26,$26,$26,$26,$26,$26,$26 .by $24,$24,$24,$24,$24,$24,$24,$24 .by $22,$22,$22,$22,$22,$22,$22,$22,$22 .by $20,$20,$20,$20,$20,$20,$20,$20 .by $1e,$1e,$1e,$1e,$1e,$1e,$1e,$1e .by $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c .by $1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a .by $18,$18,$18,$18,$18,$18,$18,$18 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 costable .by 255 ;anti self destruction byte .by 255 .by 255 .by 255 .by 255 .by 255 .by 254 .by 254 .by 253 .by 252 .by 252 .by 251 .by 250 .by 249 .by 248 .by 247 .by 246 .by 244 .by 243 .by 242 .by 240 .by 238 .by 237 .by 235 .by 233 .by 232 .by 230 .by 228 .by 226 .by 223 .by 221 .by 219 .by 217 .by 214 .by 212 .by 209 .by 207 .by 204 .by 201 .by 198 .by 196 .by 193 .by 190 .by 187 .by 184 .by 181 .by 177 .by 174 .by 171 .by 167 .by 164 .by 161 .by 157 .by 154 .by 150 .by 146 .by 143 .by 139 .by 135 .by 131 .by 128 .by 124 .by 120 .by 116 .by 112 .by 108 .by 104 .by 100 .by 95 .by 91 .by 87 .by 83 .by 79 .by 74 .by 70 .by 66 .by 61 .by 57 .by 53 .by 48 .by 44 .by 40 .by 35 .by 31 .by 26 .by 22 .by 17 .by 13 .by 8 .by 4 .by 0 linetableL :screenheight .by <(display+screenBytes*#) linetableH :screenheight .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 ; there are 3 bits used here ; bit 0 - go down ; bit 1 - go left ; bit 2 - go right ; position in the table equals to bit pattern of soil below tank WhereToSlideTable ; we have 3 bits, when set: 2 - go left, 1 - go right, 0 - go down .BY %001 ; 00000000 .BY %101 ; 00000001 .BY %100 ; 00000010 .BY %100 ; 00000011 .BY %100 ; 00000100 .BY %100 ; 00000101 .BY %100 ; 00000110 .BY %100 ; 00000111 .BY %100 ; 00001000 .BY %000 ; 00001001 .BY %000 ; 00001010 .BY %000 ; 00001011 .BY %100 ; 00001100 .BY %000 ; 00001101 .BY %000 ; 00001110 .BY %000 ; 00001111 .BY %010 ; 00010000 .BY %000 ; 00010001 .BY %000 ; 00010010 .BY %000 ; 00010011 .BY %000 ; 00010100 .BY %000 ; 00010101 .BY %000 ; 00010110 .BY %000 ; 00010111 .BY %000 ; 00011000 .BY %000 ; 00011001 .BY %000 ; 00011010 .BY %000 ; 00011011 .BY %000 ; 00011100 .BY %000 ; 00011101 .BY %000 ; 00011110 .BY %000 ; 00011111 .BY %010 ; 00100000 .BY %000 ; 00100001 .BY %000 ; 00100010 .BY %000 ; 00100011 .BY %000 ; 00100100 .BY %000 ; 00100101 .BY %000 ; 00100110 .BY %000 ; 00100111 .BY %000 ; 00101000 .BY %000 ; 00101001 .BY %000 ; 00101010 .BY %000 ; 00101011 .BY %000 ; 00101100 .BY %000 ; 00101101 .BY %000 ; 00101110 .BY %000 ; 00101111 .BY %010 ; 00110000 .BY %000 ; 00110001 .BY %000 ; 00110010 .BY %000 ; 00110011 .BY %000 ; 00110100 .BY %000 ; 00110101 .BY %000 ; 00110110 .BY %000 ; 00110111 .BY %000 ; 00111000 .BY %000 ; 00111001 .BY %000 ; 00111010 .BY %000 ; 00111011 .BY %000 ; 00111100 .BY %000 ; 00111101 .BY %000 ; 00111110 .BY %000 ; 00111111 .BY %010 ; 01000000 .BY %000 ; 01000001 .BY %000 ; 01000010 .BY %000 ; 01000011 .BY %000 ; 01000100 .BY %000 ; 01000101 .BY %000 ; 01000110 .BY %000 ; 01000111 .BY %000 ; 01001000 .BY %000 ; 01001001 .BY %000 ; 01001010 .BY %000 ; 01001011 .BY %000 ; 01001100 .BY %000 ; 01001101 .BY %000 ; 01001110 .BY %000 ; 01001111 .BY %000 ; 01010000 .BY %000 ; 01010001 .BY %000 ; 01010010 .BY %000 ; 01010011 .BY %000 ; 01010100 .BY %000 ; 01010101 .BY %000 ; 01010110 .BY %000 ; 01010111 .BY %000 ; 01011000 .BY %000 ; 01011001 .BY %000 ; 01011010 .BY %000 ; 01011011 .BY %000 ; 01011100 .BY %000 ; 01011101 .BY %000 ; 01011110 .BY %000 ; 01011111 .BY %010 ; 01100000 .BY %000 ; 01100001 .BY %000 ; 01100010 .BY %000 ; 01100011 .BY %000 ; 01100100 .BY %000 ; 01100101 .BY %000 ; 01100110 .BY %000 ; 01100111 .BY %000 ; 01101000 .BY %000 ; 01101001 .BY %000 ; 01101010 .BY %000 ; 01101011 .BY %000 ; 01101100 .BY %000 ; 01101101 .BY %000 ; 01101110 .BY %000 ; 01101111 .BY %000 ; 01110000 .BY %000 ; 01110001 .BY %000 ; 01110010 .BY %000 ; 01110011 .BY %000 ; 01110100 .BY %000 ; 01110101 .BY %000 ; 01110110 .BY %000 ; 01110111 .BY %000 ; 01111000 .BY %000 ; 01111001 .BY %000 ; 01111010 .BY %000 ; 01111011 .BY %000 ; 01111100 .BY %000 ; 01111101 .BY %000 ; 01111110 .BY %000 ; 01111111 .BY %011 ; 10000000 .BY %000 ; 10000001 .BY %000 ; 10000010 .BY %000 ; 10000011 .BY %000 ; 10000100 .BY %000 ; 10000101 .BY %000 ; 10000110 .BY %000 ; 10000111 .BY %000 ; 10001000 .BY %000 ; 10001001 .BY %000 ; 10001010 .BY %000 ; 10001011 .BY %000 ; 10001100 .BY %000 ; 10001101 .BY %000 ; 10001110 .BY %000 ; 10001111 .BY %000 ; 10010000 .BY %000 ; 10010001 .BY %000 ; 10010010 .BY %000 ; 10010011 .BY %000 ; 10010100 .BY %000 ; 10010101 .BY %000 ; 10010110 .BY %000 ; 10010111 .BY %000 ; 10011000 .BY %000 ; 10011001 .BY %000 ; 10011010 .BY %000 ; 10011011 .BY %000 ; 10011100 .BY %000 ; 10011101 .BY %000 ; 10011110 .BY %000 ; 10011111 .BY %010 ; 10100000 .BY %000 ; 10100001 .BY %000 ; 10100010 .BY %000 ; 10100011 .BY %000 ; 10100100 .BY %000 ; 10100101 .BY %000 ; 10100110 .BY %000 ; 10100111 .BY %000 ; 10101000 .BY %000 ; 10101001 .BY %000 ; 10101010 .BY %000 ; 10101011 .BY %000 ; 10101100 .BY %000 ; 10101101 .BY %000 ; 10101110 .BY %000 ; 10101111 .BY %000 ; 10110000 .BY %000 ; 10110001 .BY %000 ; 10110010 .BY %000 ; 10110011 .BY %000 ; 10110100 .BY %000 ; 10110101 .BY %000 ; 10110110 .BY %000 ; 10110111 .BY %000 ; 10111000 .BY %000 ; 10111001 .BY %000 ; 10111010 .BY %000 ; 10111011 .BY %000 ; 10111100 .BY %000 ; 10111101 .BY %000 ; 10111110 .BY %000 ; 10111111 .BY %010 ; 11000000 .BY %000 ; 11000001 .BY %000 ; 11000010 .BY %000 ; 11000011 .BY %000 ; 11000100 .BY %000 ; 11000101 .BY %000 ; 11000110 .BY %000 ; 11000111 .BY %000 ; 11001000 .BY %000 ; 11001001 .BY %000 ; 11001010 .BY %000 ; 11001011 .BY %000 ; 11001100 .BY %000 ; 11001101 .BY %000 ; 11001110 .BY %000 ; 11001111 .BY %000 ; 11010000 .BY %000 ; 11010001 .BY %000 ; 11010010 .BY %000 ; 11010011 .BY %000 ; 11010100 .BY %000 ; 11010101 .BY %000 ; 11010110 .BY %000 ; 11010111 .BY %000 ; 11011000 .BY %000 ; 11011001 .BY %000 ; 11011010 .BY %000 ; 11011011 .BY %000 ; 11011100 .BY %000 ; 11011101 .BY %000 ; 11011110 .BY %000 ; 11011111 .BY %010 ; 11100000 .BY %000 ; 11100001 .BY %000 ; 11100010 .BY %000 ; 11100011 .BY %000 ; 11100100 .BY %000 ; 11100101 .BY %000 ; 11100110 .BY %000 ; 11100111 .BY %000 ; 11101000 .BY %000 ; 11101001 .BY %000 ; 11101010 .BY %000 ; 11101011 .BY %000 ; 11101100 .BY %000 ; 11101101 .BY %000 ; 11101110 .BY %000 ; 11101111 .BY %000 ; 11110000 .BY %000 ; 11110001 .BY %000 ; 11110010 .BY %000 ; 11110011 .BY %000 ; 11110100 .BY %000 ; 11110101 .BY %000 ; 11110110 .BY %000 ; 11110111 .BY %000 ; 11111000 .BY %000 ; 11111001 .BY %000 ; 11111010 .BY %000 ; 11111011 .BY %000 ; 11111100 .BY %000 ; 11111101 .BY %000 ; 11111110 .BY %000 ; 11111111 EndOfTheBarrelX .by 4,4,4,4,4,4,4,4,4,4,4 .by 5,5,5,5,5,5,5,5,5,5 .by 6,6,6,6,6,6,6,6,6 .by 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 .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,7,7 .by 7,7,7,7,7,7,7,7,7,7,7,7,7,7 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .by 1,1,1,1,1,1,1,1,1 .by 2,2,2,2,2,2,2,2,2,2 .by 3,3,3,3,3,3,3,3,3,3,3 EndOfTheBarrelY .by 7,7,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 .by 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 .by 6,6,6,6,6,6,6,6,6 .by 5,5,5,5,5,5,5,5,5,5 .by 4,4,4,4,4,4,4,4,4,4,4,4,4 .by 3,3,3,3,3,3,3,3,3,3,3,3,3,3 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0 .by 3,3,3,3,3,3,3,3,3,3,3,3,3,3 .by 4,4,4,4,4,4,4,4,4,4,4,4,4 .by 5,5,5,5,5,5,5,5,5,5 .by 6,6,6,6,6,6,6,6,6 .by 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 .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" dta d"3rd.Tank" dta d"4th.Tank" dta d"5th.Tank" dta d"6th.Tank" ;Weapon prices (*10 on screen) price_Baby_Missile___ = 0 ;_0 price_Missile________ = 96 ;_1 price_Baby_Nuke______ = 111 ;_2 price_Nuke___________ = 144 ;_3 price_LeapFrog_______ = 192 ;_4 price_Funky_Bomb_____ = 293 ;_5 price_MIRV___________ = 456 ;_6 price_Death_s_Head___ = 337 ;_7 price_Napalm_________ = 0 ;496 ;_8 price_Hot_Napalm_____ = 0 ;511 ;_9 price_Tracer_________ = 102 ;_10 price_Smoke_Tracer___ = 291 ;_11 price_Baby_Roller____ = 689 ;_12 price_Roller_________ = 600 ;_13 price_Heavy_Roller___ = 592 ;_14 price_Riot_Charge____ = 0 ;330 ;_15 price_Riot_Blast_____ = 0 ;341 ;_16 price_Riot_Bomb______ = 369 ;_17 price_Heavy_Riot_Bomb = 322 ;_18 price_Baby_Digger____ = 336 ;_19 price_Digger_________ = 276 ;_20 price_Heavy_Digger___ = 253 ;_21 price_Baby_Sandhog___ = 218 ;_22 price_Sandhog________ = 191 ;_23 price_Heavy_Sandhog__ = 305 ;_24 price_Dirt_Clod______ = 104 ;_25 price_Dirt_Ball______ = 130 ;_26 price_Ton_of_Dirt____ = 171 ;_27 price_Liquid_Dirt____ = 0 ;530 ;_28 price_Dirt_Charge____ = 581 ;_29 price_Earth_Disrupter = 0 ;430 ;_30 price_Plasma_Blast___ = 0 ;274 ;_31 price_Laser__________ = 577 ;_32 price______________33 = 0 price______________34 = 0 price______________35 = 0 price______________36 = 0 price______________37 = 0 price______________38 = 0 price______________39 = 0 price______________40 = 0 price______________41 = 0 price______________42 = 0 price______________43 = 0 price______________44 = 0 price______________45 = 0 price______________46 = 0 price______________47 = 0 price_Heat_Guidance__ = 0 ;_48_($30) price_Bal_Guidance___ = 0 ;_49 price_Horz_Guidance__ = 0 ;_50 price_Vert_Guidance__ = 0 ;_51 price_Lazy_Boy_______ = 0 ;_52 price_Parachute______ = 1100 ;_53 price_Battery________ = 0 ;_54 price_Mag_Deflector__ = 0 ;_55 price_Shield_________ = 0 ;_56 price_Force_Shield___ = 0 ;_57 price_Heavy_Shield___ = 0 ;_58 price_Super_Mag______ = 0 ;_59 price_Auto_Defense___ = 0 ;_60 price_Fuel_Tank______ = 0 ;_61 price_Contact_Trigger = 0 ;_62 price______________63 = 0 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_Earth_Disrupter .by >price_Plasma_Blast___ .by >price_Laser__________ .by >price______________33 .by >price______________34 .by >price______________35 .by >price______________36 .by >price______________37 .by >price______________38 .by >price______________39 .by >price______________40 .by >price______________41 .by >price______________42 .by >price______________43 .by >price______________44 .by >price______________45 .by >price______________46 .by >price______________47 .by >price_Heat_Guidance__ .by >price_Bal_Guidance___ .by >price_Horz_Guidance__ .by >price_Vert_Guidance__ .by >price_Lazy_Boy_______ .by >price_Parachute______ .by >price_Battery________ .by >price_Mag_Deflector__ .by >price_Shield_________ .by >price_Force_Shield___ .by >price_Heavy_Shield___ .by >price_Super_Mag______ .by >price_Auto_Defense___ .by >price_Fuel_Tank______ .by >price_Contact_Trigger .by >price______________63 WeaponPriceL .by