; @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 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+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 .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" 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