From news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.erols.net!cam-news-hub1.bbnplanet.com!news.bbnplanet.com!news.maxwell.syr.edu!newsfeeder.toronto.ican.net!torfree!bx880 Mon Apr 7 18:57:05 1997 Article: 7441 of rec.games.corewar Newsgroups: rec.games.corewar Path: news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.erols.net!cam-news-hub1.bbnplanet.com!news.bbnplanet.com!news.maxwell.syr.edu!newsfeeder.toronto.ican.net!torfree!bx880 From: bx880@torfree.net (Ian Sutton) Subject: The Bloodhound Message-ID: Organization: Toronto Free-Net X-Newsreader: TIN [version 1.2 PL2] Date: Mon, 7 Apr 1997 15:33:53 GMT Lines: 133 Well, I see that The Bloodhound has been easily eclipsed by Anton's mighty Electric Head. Also, Anton has written a new warrior (Just kidding 8-). Onto TBH. Firstly, it scans score to find enemy Q-scans or other code. If it finds some, it does a bit of bombing and then boots the one shot _just in front of_ the code. This has the effect of obviating the enemy's decoy and hopefully placing us just behind his boot location. Another side benefit may be that close to our adversary's code is the safest place to be since it is often the last place to be attacked by him. There may be more vicious uses for this idea. As most programs use a constant boot pointer, it may be possible to use P-space to vary our boot positioning and ascertain what it is. Does Electric Head use this idea or something like it? It will be interesting to see. Ian Sutton bx880@torfree.net ---------------------------------------------------------------------- ;redcode-94 ;name The Bloodhound ;author Ian Sutton ;strategy A one shot. No Pspace this time, but assorted other sneaky tricks. ;strategy v1.0 ;strategy v1.1 Same as v1.0 but commented ;assert CORESIZE == 8000 stscan equ (hit1-step*500) step equ 15 ;\ these MUST be the same or the one shot will be out qbstep equ 15 ;/ of sync and we will scan ourself too quickly after ; booting. startq equ (ptr+step*20) qstep equ (7*step) ; multiple of step to keep spacing right org qscan ; ----------one shot----------- ; We put this before the slow scan code, otherwise we fall easy prey ; to some other scanners like The Machine ptr dat stscan+step, stscan dat 0,0 hit1 dat 0,0 dat #-85, 16 dat #-85, 16 bombs spl #-85, 16 dat 0,0 nxt add incr, ptr scanner sne *ptr, @ptr jmp nxt sub #14, ptr incr spl #step*2, >step*2 cc mov @dj, >ptr mov @dj, >ptr dj djn.b cc, {bombs dat 0,0 dat 0,0 hit2 dat 0,0 for 44 dat 0,0 rof hit3 dat 0, 0 ; ----------"quick" (slow) scan-------------- ; scan core mod qstep at 0.8c ; could trim a few instructions here, for additional anti Q resistance qbomb dat #1, 1 qptr dat startq, startq+qstep qbinc dat qbstep, -qbstep qinc dat qstep*2, qstep*2 qnxt add qinc, qptr qscan sne *qptr, @qptr add qinc, qptr sne *qptr, @qptr qdj djn qnxt, #12 jmz.b scanner, -1 ; if couldn't find anything, straight to scan jmz.f qok, *qptr mov.ab qptr, qptr jmp qok+1 dat 0, 0 hit4 dat 0, 0 ; bomb 4 times each way mod 15 ; similarly to probe's Q scan. ; Maybe worthwhile skipping bombing code if it took us a long time to ; find the enemy. (Save about 20 cycles, less vulnerable to other Qs) qok mov.ba qptr, qptr mov qbomb, @qptr qbloop add qbinc, qptr mov qbomb, @qptr mov qbomb, *qptr djn qbloop, #4 add qinc, qptr ; move boot ptr after found code jmn.f scanner, @qptr ; make sure there is nothing there, ; otherwise we might end up in the ; middle of replicator imps! ; slow boot takes 20 cycles instead of ~15, but ; is worth it for brevity. cnxt mov >pcopy, >qptr mov >pcopy, >qptr mov >pcopy, >qptr djn cnxt, #5 sub #7, qptr pcopy jmp @qptr, ptr hit5 dat 0, 0 for MAXLENGTH-CURLINE dat 0, 0 rof end