; @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 $88,$cc,$38,$1c,$6a,$02 TankStatusColoursTable .BYTE $80,$c0,$30,$10,$60,$00 dliColorsBack :10 .by $02,$00 dliColorsFore .by $0a TextBackgroundColor = $02 ; REAL constans - use: LDA #TextBackgroundColor TextForegroundColor = $0c 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 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"(%%%%%%%%%%%%)", $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 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 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 ; 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 %000 ; 00001000 .BY %000 ; 00001001 .BY %000 ; 00001010 .BY %000 ; 00001011 .BY %100 ; 00001100 .BY %000 ; 00001101 .BY %000 ; 00001110 .BY %000 ; 00001111 .BY %000 ; 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 ; right angles from 0 (vertically up) to 90 (horizontally to the right) .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 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0 ; not used ; left angles from 90 (horizontally to the left) to 1 (vertically up) .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 ; right angles from 0 (vertically up) to 90 (horizontally to the right) .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 4,4,4,4,4,4,4,4,4,4,4,4,4,4 ; one pixel Up for fix problems with colision check ; .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 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0,0,0,0,0,0,0 ; not used .by 0,0,0,0 ; not used ; left angles from 90 (horizontally to the left) to 1 (vertically up) ; .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,4 ; one pixel Up for fix problems with colision check .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" 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_White_Flag_____ .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_StrongParachute .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 WeaponPriceL .by