; ==== IMPORTANT NOTE ==== ;I know there are some people out there writing bots. ;Unfornately nobody takes care of the atrobots page anymore... ;Here is my please: let us rescue at-robots from its death ;The first step is to exchange e-mails; so if you're interested ;in writing at-robots than send me an email (georg.schnabel@aon.at) ;THANK YOU VERY MUCH GUYS ; ========================= ; ;Robot's name : MadBot ;Author : (c) Georg Schnabel (GreatGeorge) ;Author's Country : Austria ;Author's E-mail : georg.schnabel@mycity.at ;Date of completion : 5/30/2001 (MM/TT/YY) ;Class : Heavy Weight ;Tournament : Standard ;Version : v3.0 (Typ B) ; ;Comment: ;Combined the features of Madbot v1 and Madbot v2 ;For furhter comments read in my previous bots... ; ;*************************************************************** #msg MADBOT IS ALIVE! ; ************************************** ; ; ROBOT CONFIGURATION ; ; ************************************** ; #config scanner=3 #config weapon=4 #config heatsinks=2 #config mines=0 #config armor=2 #config engine=1 jmp !SETUP ; ************************************** ; ; TARGET PREDICTION TABLE (TPT) ; ; ************************************** ; *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *257, 257, 257, 257 *257, 257, 257, 257 *257, 257, 257, 257 *257, 257, 257, 257 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *255, 255, 255, 255 *255, 255, 255, 255 *255, 255, 255, 255 *255, 255, 255, 255 *256, 256, 256, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 257, 257, 257 *257, 257, 257, 257 *257, 257, 257, 257 *257, 257, 257, 257 *257, 257, 257, 257 *257, 257, 257, 256 *256, 256, 256, 256 *256, 256, 256, 256 *256, 255, 255, 255 *255, 255, 255, 255 *255, 255, 255, 255 *255, 255, 255, 255 *255, 255, 255, 255 *255, 255, 255, 256 *256, 256, 256, 256 *256, 256, 256, 257 *257, 257, 257, 257 *257, 257, 257, 257 *258, 258, 258, 258 *258, 258, 258, 258 *257, 257, 257, 257 *257, 257, 257, 257 *257, 256, 256, 256 *256, 256, 256, 255 *255, 255, 255, 255 *255, 255, 255, 255 *254, 254, 254, 254 *254, 254, 254, 254 *255, 255, 255, 255 *255, 255, 255, 255 *255, 256, 256, 256 *256, 256, 257, 257 *257, 257, 257, 257 *258, 258, 258, 258 *258, 258, 258, 258 *258, 258, 258, 258 *258, 258, 258, 258 *257, 257, 257, 257 *257, 257, 256, 256 *256, 256, 255, 255 *255, 255, 255, 255 *254, 254, 254, 254 *254, 254, 254, 254 *254, 254, 254, 254 *254, 254, 254, 254 *255, 255, 255, 255 *255, 255, 256, 256 *256, 256, 257, 257 *257, 257, 258, 258 *258, 258, 258, 258 *258, 258, 259, 259 *259, 259, 258, 258 *258, 258, 258, 258 *258, 258, 257, 257 *257, 257, 256, 256 *256, 256, 255, 255 *255, 255, 254, 254 *254, 254, 254, 254 *254, 254, 253, 253 *253, 253, 254, 254 *254, 254, 254, 254 *254, 254, 255, 255 *255, 255, 256, 256 *256, 256, 257, 257 *257, 258, 258, 258 *258, 258, 259, 259 *259, 259, 259, 259 *259, 259, 259, 259 *259, 259, 258, 258 *258, 258, 258, 257 *257, 257, 256, 256 *256, 256, 255, 255 *255, 254, 254, 254 *254, 254, 253, 253 *253, 253, 253, 253 *253, 253, 253, 253 *253, 253, 254, 254 *254, 254, 254, 255 *255, 255, 256, 256 *256, 257, 257, 257 *257, 258, 258, 258 *259, 259, 259, 259 *259, 259, 259, 259 *259, 259, 259, 259 *259, 259, 259, 259 *258, 258, 258, 257 *257, 257, 257, 256 *256, 255, 255, 255 *255, 254, 254, 254 *253, 253, 253, 253 *253, 253, 253, 253 *253, 253, 253, 253 *253, 253, 253, 253 *254, 254, 254, 255 *255, 255, 255, 256 *256, 257, 257, 257 *258, 258, 258, 259 *259, 259, 259, 260 *260, 260, 260, 260 *260, 260, 260, 260 *260, 259, 259, 259 *259, 258, 258, 258 *257, 257, 257, 256 *256, 255, 255, 255 *254, 254, 254, 253 *253, 253, 253, 252 *252, 252, 252, 252 *252, 252, 252, 252 *252, 253, 253, 253 *253, 254, 254, 254 *255, 255, 255, 256 *256, 257, 257, 257 *258, 258, 259, 259 *259, 260, 260, 260 *260, 260, 260, 260 *260, 260, 260, 260 *260, 260, 260, 259 *259, 259, 258, 258 *257, 257, 257, 256 *256, 255, 255, 255 *254, 254, 253, 253 *253, 252, 252, 252 *252, 252, 252, 252 *252, 252, 252, 252 *252, 252, 252, 253 *253, 253, 254, 254 *255, 255, 255, 256 *256, 257, 257, 258 *258, 259, 259, 259 *260, 260, 260, 260 *261, 261, 261, 261 *261, 261, 261, 261 *260, 260, 260, 260 *259, 259, 259, 258 *258, 257, 257, 256 *256, 255, 255, 254 *254, 253, 253, 253 *252, 252, 252, 252 *251, 251, 251, 251 *251, 251, 251, 251 *252, 252, 252, 252 *253, 253, 253, 254 *254, 255, 255, 256 *256, 257, 257, 258 *258, 259, 259, 260 *260, 260, 261, 261 *261, 261, 261, 261 *261, 261, 261, 261 *261, 261, 260, 260 *260, 259, 259, 258 *258, 257, 257, 256 *256, 255, 255, 254 *254, 253, 253, 252 *252, 252, 251, 251 *251, 251, 251, 251 *251, 251, 251, 251 *251, 251, 252, 252 *252, 253, 253, 254 *254, 255, 255, 256 *256, 257, 257, 258 *258, 259, 259, 260 *260, 261, 261, 261 *261, 262, 262, 262 *262, 262, 262, 261 *261, 261, 261, 260 *260, 259, 259, 258 *258, 257, 257, 256 *256, 255, 255, 254 *254, 253, 253, 252 *252, 251, 251, 251 *251, 250, 250, 250 *250, 250, 250, 251 *251, 251, 251, 252 *252, 253, 253, 254 *254, 255, 255, 256 *256, 257, 258, 258 *259, 259, 260, 260 *261, 261, 261, 262 *262, 262, 262, 262 *262, 262, 262, 262 *262, 261, 261, 261 *260, 260, 259, 259 *258, 258, 257, 256 *256, 255, 254, 254 *253, 253, 252, 252 *251, 251, 251, 250 *250, 250, 250, 250 *250, 250, 250, 250 *250, 251, 251, 251 *252, 252, 253, 253 *254, 254, 255, 256 *256, 257, 258, 258 *259, 259, 260, 261 *261, 261, 262, 262 *262, 263, 263, 263 *263, 263, 263, 262 *262, 262, 261, 261 *261, 260, 259, 259 *258, 258, 257, 256 *256, 255, 254, 254 *253, 253, 252, 251 *251, 251, 250, 250 *250, 249, 249, 249 *249, 249, 249, 250 *250, 250, 251, 251 *251, 252, 253, 253 *254, 254, 255, 256 *256, 257, 258, 258 *259, 260, 260, 261 *261, 262, 262, 263 *263, 263, 263, 263 *263, 263, 263, 263 *263, 262, 262, 261 *261, 260, 260, 259 *258, 258, 257, 256 *256, 255, 254, 254 *253, 252, 252, 251 *251, 250, 250, 249 *249, 249, 249, 249 *249, 249, 249, 249 *249, 250, 250, 251 *251, 252, 252, 253 *254, 254, 255, 256 *256, 257, 258, 259 *259, 260, 261, 261 *262, 262, 263, 263 *263, 263, 264, 264 *264, 264, 263, 263 *263, 263, 262, 262 *261, 261, 260, 259 *259, 258, 257, 256 *256, 255, 254, 253 *253, 252, 251, 251 *250, 250, 249, 249 *249, 249, 248, 248 *248, 248, 249, 249 *249, 249, 250, 250 *251, 251, 252, 253 *253, 254, 255, 256 *256, 257, 258, 259 *259, 260, 261, 261 *262, 263, 263, 263 *264, 264, 264, 264 *264, 264, 264, 264 *263, 263, 263, 262 *261, 261, 260, 259 *259, 258, 257, 256 *256, 255, 254, 253 *253, 252, 251, 251 *250, 249, 249, 249 *248, 248, 248, 248 *248, 248, 248, 248 *249, 249, 249, 250 *251, 251, 252, 253 *253, 254, 255, 256 *256, 257, 258, 259 *260, 260, 261, 262 *262, 263, 263, 264 *264, 264, 265, 265 *265, 265, 264, 264 *264, 263, 263, 262 *262, 261, 260, 260 *259, 258, 257, 256 *256, 255, 254, 253 *252, 252, 251, 250 *250, 249, 249, 248 *248, 248, 247, 247 *247, 247, 248, 248 *248, 249, 249, 250 *250, 251, 252, 252 *253, 254, 255, 256 *256, 257, 258, 259 *260, 261, 261, 262 *263, 263, 264, 264 *265, 265, 265, 265 *265, 265, 265, 265 *264, 264, 263, 263 *262, 261, 261, 260 *259, 258, 257, 256 *256, 255, 254, 253 *252, 251, 251, 250 *249, 249, 248, 248 *247, 247, 247, 247 *247, 247, 247, 247 *248, 248, 249, 249 *250, 251, 251, 252 *253, 254, 255, 256 *256, 257, 258, 259 *260, 261, 262, 262 *263, 264, 264, 265 *265, 265, 266, 266 *266, 266, 265, 265 *265, 264, 264, 263 *262, 262, 261, 260 *259, 258, 257, 256 *256, 255, 254, 253 *252, 251, 250, 250 *249, 248, 248, 247 *247, 247, 246, 246 *246, 246, 247, 247 *247, 248, 248, 249 *250, 250, 251, 252 *253, 254, 255, 256 *256, 257, 258, 259 *260, 261, 262, 263 *263, 264, 265, 265 *266, 266, 266, 266 *266, 266, 266, 266 *265, 265, 264, 263 *263, 262, 261, 260 *259, 258, 257, 256 *256, 255, 254, 253 *252, 251, 250, 249 *249, 248, 247, 247 *246, 246, 246, 246 *246, 246, 246, 246 *247, 247, 248, 249 *249, 250, 251, 252 *253, 254, 255, 256 *257, 258, 259, 260 *260, 261, 262, 263 *264, 264, 265, 266 *266, 266, 266, 267 *267, 266, 266, 266 *266, 265, 264, 264 *263, 262, 261, 260 *260, 259, 258, 257 *255, 254, 253, 252 *252, 251, 250, 249 *248, 248, 247, 246 *246, 246, 246, 245 *245, 246, 246, 246 *246, 247, 248, 248 *249, 250, 251, 252 *252, 253, 254, 255 *257, 258, 259, 260 *261, 262, 263, 263 *264, 265, 265, 266 *266, 267, 267, 267 *267, 267, 267, 266 *266, 265, 265, 264 *263, 263, 262, 261 *260, 259, 258, 257 *255, 254, 253, 252 *251, 250, 249, 249 *248, 247, 247, 246 *246, 245, 245, 245 *245, 245, 245, 246 *246, 247, 247, 248 *249, 249, 250, 251 *252, 253, 254, 255 *257, 258, 259, 260 *261, 262, 263, 264 *265, 265, 266, 266 *267, 267, 267, 268 *268, 267, 267, 267 *266, 266, 265, 265 *264, 263, 262, 261 *260, 259, 258, 257 *255, 254, 253, 252 *251, 250, 249, 248 *247, 247, 246, 246 *245, 245, 245, 244 *244, 245, 245, 245 *246, 246, 247, 247 *248, 249, 250, 251 *252, 253, 254, 255 *257, 258, 259, 260 *261, 262, 263, 264 *265, 266, 266, 267 *267, 268, 268, 268 *268, 268, 268, 267 *267, 266, 266, 265 *264, 263, 262, 261 *260, 259, 258, 257 *255, 254, 253, 252 *251, 250, 249, 248 *247, 246, 246, 245 *245, 244, 244, 244 *244, 244, 244, 245 *245, 246, 246, 247 *248, 249, 250, 251 *252, 253, 254, 255 *257, 258, 259, 260 *261, 262, 263, 264 *265, 266, 267, 267 *268, 268, 268, 269 *269, 268, 268, 268 *267, 267, 266, 265 *264, 263, 262, 261 *260, 259, 258, 257 *255, 254, 253, 252 *251, 250, 249, 248 *247, 246, 245, 245 *244, 244, 244, 243 *243, 244, 244, 244 *245, 245, 246, 247 *248, 249, 250, 251 *252, 253, 254, 255 *257, 258, 259, 260 *261, 263, 264, 265 *266, 266, 267, 268 *268, 269, 269, 269 *269, 269, 269, 268 *268, 267, 266, 266 *265, 264, 263, 261 *260, 259, 258, 257 *255, 254, 253, 252 *251, 249, 248, 247 *246, 246, 245, 244 *244, 243, 243, 243 *243, 243, 243, 244 *244, 245, 246, 246 *247, 248, 249, 251 *252, 253, 254, 255 *257, 258, 259, 260 *262, 263, 264, 265 *266, 267, 268, 268 *269, 269, 269, 270 *270, 269, 269, 269 *268, 268, 267, 266 *265, 264, 263, 262 *260, 259, 258, 257 *255, 254, 253, 252 *250, 249, 248, 247 *246, 245, 244, 244 *243, 243, 243, 242 *242, 243, 243, 243 *244, 244, 245, 246 *247, 248, 249, 250 *252, 253, 254, 255 *257, 258, 259, 261 *262, 263, 264, 265 *266, 267, 268, 269 *269, 270, 270, 270 *270, 270, 270, 269 *269, 268, 267, 266 *265, 264, 263, 262 *261, 259, 258, 257 *255, 254, 253, 251 *250, 249, 248, 247 *246, 245, 244, 243 *243, 242, 242, 242 *242, 242, 242, 243 *243, 244, 245, 246 *247, 248, 249, 250 *251, 253, 254, 255 *257, 258, 259, 261 *262, 263, 265, 266 *267, 268, 268, 269 *270, 270, 270, 270 *270, 270, 270, 270 *269, 268, 268, 267 *266, 265, 263, 262 *261, 259, 258, 257 *255, 254, 253, 251 *250, 249, 247, 246 *245, 244, 244, 243 *242, 242, 242, 242 *242, 242, 242, 242 *243, 244, 244, 245 *246, 247, 249, 250 *251, 253, 254, 255 *257, 258, 260, 261 *262, 264, 265, 266 *267, 268, 269, 270 *270, 271, 271, 271 *271, 271, 271, 270 *270, 269, 268, 267 *266, 265, 264, 262 *261, 260, 258, 257 *255, 254, 252, 251 *250, 248, 247, 246 *245, 244, 243, 242 *242, 241, 241, 241 *241, 241, 241, 242 *242, 243, 244, 245 *246, 247, 248, 250 *251, 252, 254, 255 *257, 258, 260, 261 *262, 264, 265, 266 *267, 268, 269, 270 *271, 271, 271, 271 *271, 271, 271, 271 *270, 269, 268, 267 *266, 265, 264, 262 *261, 260, 258, 257 *255, 254, 252, 251 *250, 248, 247, 246 *245, 244, 243, 242 *241, 241, 241, 241 *241, 241, 241, 241 *242, 243, 244, 245 *246, 247, 248, 250 *251, 252, 254, 255 ; ************************************** ; ; TURRET CORRECTION TABLE (TCT) ; ; ************************************** ; *0, 0, 0, 0 *0, 0, 0, 0 *0, 0, 0, 0 *0, 0, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *2, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 1 *1, 1, 1, 0 *0, 0, 0, 0 *0, 0, 0, 0 *0, 0, 0, 0 *0, 0, 0, 0 *0, 0, 0, 0 *0, 0, 0, 0 *0, 0, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-2, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, -1 *-1, -1, -1, 0 *0, 0, 0, 0 *0, 0, 0, 0 *0, 0, 0, 0 ; ************************************** ; ; USEFUL VARS ; ; ************************************** ; #def WTURNR #def TRPRED_TBL #def TRPRED_IDX #def TUCORR_TBL #def TUCORR_IDX #def TDSP #def TRDEG #def TRSPD #def TRRNG #def SCANARC #def RANGE #def HEAT #def PFIRE_JMP #def SPDSWITCH #def ROTSCAN_JMP #def EVADE_JMP #def PFIRE1_JMP #def PFIRE2_JMP ; ************************************** ; ; SETUP ; ; ************************************** ; !SETUP or ax, 1 int I_KEEPSHIFT mov WTURNR, 32 mov TRPRED_TBL, 1028 mov TUCORR_TBL, 3140 mov SCANARC, 64 mov SPDSWITCH, 500 mov PFIRE1_JMP, 100 mov PFIRE2_JMP, 101 mov EVADE_JMP, 301 opo P_MINELAYER, 20 opo P_MINELAYER, 20 opo P_ARC, SCANARC opo P_SHUTDOWN, 400 ; ************************************** ; ; DRIVE CONTROL ; ; ************************************** ; !DRIVE ; - KEEP AWAY FROM WALLS - ; int I_LOCATE !LW cmp ex, 300 ja !RW !LDIR cmp @1, 128 jb !UW opo P_STEERING, WTURNR jae !LDIR !RW cmp ex, 700 jb !UW !RDIR cmp @1, 128 ja !UW opo P_STEERING, WTURNR jbe !RDIR !UW cmp fx, 300 ja !DW !UDIR cmp @1, 64 jb !UTMP cmp @1, 192 jb !SPDCHECK !UTMP opo P_STEERING, WTURNR jae !UDIR !DW cmp fx, 700 jb !INAREA !DDIR cmp @1, 192 ja !SPDCHECK cmp @1, 64 jb !SPDCHECK !DTMP opo P_STEERING, WTURNR jae !DDIR jb !SPDCHECK ; - SPEED CONTROL - ; !INAREA !SPDCHECK cmp [0], 100 jeq !NOACC opo P_STEERING, 30 opo P_THROTTLE, 100 !NOACC jeq EVADE_JMP jne EVADE_JMP :300 ipo P_RAND, dx and dx, 64 sub dx, 32 opo P_STEERING, dx :301 ; MadBot version check, which version will do best? cmp @13, SPDSWITCH jb !MBot2 !Mbot1 mov PFIRE_JMP, PFIRE1_JMP mov ROTSCAN_JMP, 201 mov EVADE_JMP, 301 jae !SCAN !Mbot2 mov PFIRE_JMP, PFIRE2_JMP mov ROTSCAN_JMP, 200 mov EVADE_JMP, 300 ; ************************************** ; ; SCANNING CONTROL ; ; ************************************** ; !SCAN ipo P_SCAN, RANGE cmp RANGE, 1500 jb !FOUND cmp SCANARC, 64 jb !WIDE opo P_TROTATE, 128 jae !DRIVE !WIDE shl SCANARC, 1 opo P_ARC, SCANARC jb !SCAN !FOUND jb ROTSCAN_JMP :200 opo P_STEERING, 40 :201 ; - FIRE MODE DECISION - ; cmp @13, 0 jls !NEGSPD cmp SCANARC, 2 jgr !POS_TRNEAR cmp @13, 30 jgr PFIRE_JMP jls !SFIRE !POS_TRNEAR cmp RANGE, 250 ja !SHRINK cmp @13, 600 jls !SHRINK cmp SCANARC, 32 jbe !QFIRE ja !SHRINK !NEGSPD cmp SCANARC, 2 jgr !NEG_TRNEAR cmp @13, -30 jls PFIRE_JMP jgr !SFIRE !NEG_TRNEAR cmp RANGE, 250 ja !SHRINK cmp @13, -600 jgr !SHRINK cmp SCANARC, 32 jbe !QFIRE ; - SHRINK SCANARC - ; !SHRINK cmp @3, -1 jls !nAcc2 jeq !nAcc1 cmp @3, 1 jeq !pAcc1 jgr !pAcc2 cmp SCANARC, 4 ja !shr2 shr SCANARC, 1 opo P_ARC, SCANARC jbe !SCAN !shr2 shr SCANARC, 2 opo P_ARC, SCANARC ja !SCAN !nAcc2 mov dx, SCANARC neg dx opo P_TROTATE, dx shr SCANARC, 1 opo P_ARC, SCANARC jls !SCAN !nAcc1 shr SCANARC, 1 mov dx, SCANARC neg dx opo P_TROTATE, dx opo P_ARC, SCANARC jeq !SCAN !pAcc1 shr SCANARC, 1 opo P_TROTATE, SCANARC opo P_ARC, SCANARC jeq !SCAN !pAcc2 opo P_TROTATE, SCANARC shr SCANARC, 1 opo P_ARC, SCANARC jgr !SCAN ; ************************************** ; ; HEAT CONTROL ; ; ************************************** ; !HEATCHECK ipo P_HEAT, HEAT cmp HEAT, 150 jb !DRIVE ipo P_RAND, ax and ax, 64 sub ax, 32 opo P_STEERING, ax cmp [0], 100 jeq !HnoAcc opo P_STEERING, 34 opo P_THROTTLE, 100 !HnoAcc ipo P_SCAN, RANGE cmp RANGE, 1500 jb !hFOUND cmp SCANARC, 64 jb !hWIDE opo P_TROTATE, 128 jae !HEATCHECK !hWIDE shl SCANARC, 1 opo P_ARC, SCANARC jb !HEATCHECK !hFOUND cmp SCANARC, 2 jgr !hSHRINK cmp @13, 30 jgr !hCENTER cmp @13, -30 jgr !SFIRE !hCENTER opo P_TROTATE, @3 jeq !HEATCHECK jne !HEATCHECK !hSHRINK cmp @3, -1 jls !hnAcc2 jeq !hnAcc1 cmp @3, 1 jeq !hpAcc1 jgr !hpAcc2 cmp SCANARC, 4 ja !hshr2 shr SCANARC, 1 opo P_ARC, SCANARC jbe !HEATCHECK !hshr2 shr SCANARC, 2 opo P_ARC, SCANARC ja !HEATCHECK !hnAcc2 mov dx, SCANARC neg dx opo P_TROTATE, dx shr SCANARC, 1 opo P_ARC, SCANARC jls !HEATCHECK !hnAcc1 shr SCANARC, 1 mov dx, SCANARC neg dx opo P_TROTATE, dx opo P_ARC, SCANARC jeq !HEATCHECK !hpAcc1 shr SCANARC, 1 opo P_TROTATE, SCANARC opo P_ARC, SCANARC jeq !HEATCHECK !hpAcc2 opo P_TROTATE, SCANARC shr SCANARC, 1 opo P_ARC, SCANARC jgr !HEATCHECK ; ***************************************** ; ; "PREDICTION" - FIRE MODE ; ; ***************************************** ; :101 ; PFIRE2_JMP ipo P_HEAT, dx cmp dx, 220 ja !DRIVE ipo P_SCAN, TRRNG cmp TRRNG, 1500 ja !HEATCHECK mov TRSPD, @13 mov TRDEG, @6 cmp @13, 0 ja !pSpdv2 neg TRSPD add TRDEG, 128 and TRDEG, 255 !pSpdv2 shr TRSPD, 5 shr TRDEG, 2 shl TRSPD, 6 mov TRPRED_IDX, TRPRED_TBL add TRPRED_IDX, TRSPD add TRPRED_IDX, TRDEG mov TUCORR_IDX, TUCORR_TBL add TUCORR_IDX, @2 mov TDSP, [TRPRED_IDX] add TDSP, [TUCORR_IDX] opo P_TROTATE, TDSP opo P_FIRE, @3 opo P_FIRE, @3 opo P_STEERING, 45 ja PFIRE_JMP jbe PFIRE_JMP ; =============== THE OLD ONE OF MADBOT ======================== ; :100 ; PFIRE1_JMP ipo P_SCAN, TRRNG cmp TRRNG, 1500 ja !HEATCHECK mov TRSPD, @13 mov TRDEG, @6 cmp @13, 0 ja !pSpdv1 neg TRSPD add TRDEG, 128 and TRDEG, 255 !pSpdv1 shr TRSPD, 5 shr TRDEG, 2 shl TRSPD, 6 mov TRPRED_IDX, TRPRED_TBL add TRPRED_IDX, TRSPD add TRPRED_IDX, TRDEG mov TUCORR_IDX, TUCORR_TBL add TUCORR_IDX, @2 mov TDSP, [TRPRED_IDX] add TDSP, [TUCORR_IDX] opo P_TROTATE, TDSP opo P_FIRE, @3 opo P_FIRE, @3 jeq PFIRE_JMP jne PFIRE_JMP ; ***************************************** ; ; "SLOW TARGET" - FIRE MODE ; ; ***************************************** ; !SFIRE or ax, 1 int I_OVERBURN !SLOOP ipo P_HEAT, HEAT cmp HEAT, 400 ja !SEND ipo P_SCAN, RANGE cmp RANGE, 1500 ja !SEND opo P_FIRE, @3 cmp @13, 30 ja !SEND cmp @13, -30 jls !SEND opo P_TROTATE, @3 jeq !SLOOP jne !SLOOP !SEND xor ax, ax int I_OVERBURN jeq !HEATCHECK jne !HEATCHECK ; ***************************************** ; ; "FAST TARGET NEAR" - FIRE MODE ; ; ***************************************** ; !QFIRE ipo P_HEAT, HEAT cmp HEAT, 360 ja !HEATCHECK ipo P_SCAN, RANGE cmp RANGE, 250 ja !HEATCHECK mov TRSPD, @13 mov TRDEG, @6 cmp TRSPD, 0 ja !pSpd2 neg TRSPD add TRDEG, 128 and TRDEG, 255 !pSpd2 shr TRSPD, 5 shr TRDEG, 2 shl TRSPD, 6 mov TRPRED_IDX, TRPRED_TBL add TRPRED_IDX, TRSPD add TRPRED_IDX, TRDEG mov dx, @3 cmp SCANARC, 32 jne !ARC16 sal dx, 4 jeq !QNROT !ARC16 cmp SCANARC, 16 jne !ARC8 sal dx, 3 jeq !QNROT !ARC8 cmp SCANARC, 8 jne !ARC4 sal dx, 2 jeq !QNROT !ARC4 sal dx, 1 !QNROT add dx, [TRPRED_IDX] opo P_TROTATE, dx opo P_FIRE, @3 jeq !QFIRE jne !QFIRE