Path: ibmpcug!wendy.ibmpcug.co.uk!pipex!howland.reston.ans.net!news.sprintlink.net!cs.utexas.edu!swrinde!emory!nntp.msstate.edu!nntp.memphis.edu!nntp.rhodes.edu!harlie.mathcs.rhodes.edu!graham Newsgroups: rec.games.corewar Subject: Strahd Message-ID: <1995Apr3.142955.2369@rhodes> From: graham@harlie.mathcs.rhodes.edu (Randy Graham) Date: 3 Apr 95 14:29:54 -0500 Nntp-Posting-Host: harlie.mathcs.rhodes.edu X-Newsreader: TIN [version 1.2 PL2] Lines: 112 Well, I've put another attempt at the '94 hill on, and I don't expect it to last long. So, anyone wanting to get ideas from this, help yourself. I took the QVamp concept from Pyramid 5.5. I never understood it when I read the source to Pyramid, but recently I thought I'd try on my own. Maybe someone else could optimize it. Also, I had to re-order code and made the pit the end of my regular code to Comp-Hunter (I feel like I'm in a rut, but I haven't made anything that does better on the hills). So, to really see how Comp-Hunter really looks now after the QVamp runs, you need to reconstruct how the moveme sets up Hunter. There may be a way to further optimize any part of the QVamp or the scanner, but I haven't found them. The last thing I tried, which made an insignificant difference is changing my add line after carpet bombing and changing my jmz to a different location. The idea from this came from the source of Iron Sword I have. So, any suggestions are welcome: -----[Snip, Snip]----- ;redcode-94 ;name Strahd the Night Hunter ;kill ;Author Randy Graham ;strategy Combine the startup effectiveness of a Quick Vamp against ;strategy imps with the long term effectiveness of a cmp-scanner ;strategy against paper. ;assert 1 OPT equ 42 ;mod 2 LEN equ (fini-adder) DIFF equ 11 BOMBS equ (DIFF+3) ;how many bombs to lay MOVETO equ -744 ;where we move to OFF equ -397 ;djn stream offset - longest run QSTART equ fini ;reference point for all scans QSTEP equ 95 ;how far apart to look QJUMP equ 3900 ;how far away from sne to seq QFORW equ (2*QSPACE);how far past found location QBACK equ (4*QSPACE);how far extra to start back to when bombing QSPACE equ 7 ;how far apart to space the fangs QRUN equ (QSTEP+QBACK+QFORW)/QSPACE+1 ;how many bombs to ;meet above criteria A equ 7 ;how many scan triples in first run B equ 6 ;how many scan triples in first run C equ 6 ;how many scan triples in first run start qscana for A sne.x (QSTART+(2*qscana*QSTEP)), (QSTART+(2*qscana*QSTEP)+QSTEP) seq.x (QSTART+(2*qscana*QSTEP)+QJUMP), (QSTART+(2*qscana*QSTEP)+QSTEP+QJUMP) mov.ab #(QSTART+(2*qscana*QSTEP)+QSTEP)-found, found ;point to sne.a rof jmn.b found+1, found qscanb for B sne.x (QSTART+(2*(qscanb+A)*QSTEP)), (QSTART+(2*(qscanb+A)*QSTEP)+QSTEP) seq.x (QSTART+(2*(qscanb+A)*QSTEP)+QJUMP), (QSTART+(2*(qscanb+A)*QSTEP)+QSTEP+QJUMP) mov.ab #(QSTART+(2*(qscanb+A)*QSTEP)+QSTEP)-found, found rof jmn.b found+1, found qscanc for C sne.x (QSTART+(2*(qscanc+A+B)*QSTEP)), (QSTART+(2*(qscanc+A+B)*QSTEP)+QSTEP) seq.x (QSTART+(2*(qscanc+A+B)*QSTEP)+QJUMP), (QSTART+(2*(qscanc+A+B)*QSTEP)+QSTEP+QJUMP) mov.ab #(QSTART+(2*(qscanc+A+B)*QSTEP)+QSTEP)-found, found rof found jmz.b moveme, #0 add.b found, repeat sne.x @found, @repeat add.ab #QJUMP, found sne.i start-1, @found sub.ab #QSTEP, found sub.ab #QBACK, found add.b found, qvamp sub.ba found, qvamp attack mov.i qvamp, @qvamp add.f qdatadd, qvamp djn.b attack, #QRUN moveme mov.i >traps, >moveto for 6 mov.i >traps, >moveto rof moveto spl.a MOVETO+1, #MOVETO for 3 mov.i >traps, >moveto rof mov.i sweep, >moveto mov.i datline, >moveto qdatadd dat.f #-QSPACE, #QSPACE qvamp jmp.a -found+spltrp, found sweep mov.i 1, <-4 ;lay dats down til we bomb here datline dat.f <0-OPT-BOMBS, <0-OPT ;sets up gate ;here's Cmp-Hunter adder add.f spltrp, cmper ;adjust our compare sites cmper cmp.i adder-DIFF-OPT-OPT, adder-OPT-OPT ;see if they differ slt.ab #LEN+BOMBS, cmper ;different, only bomb if not us djn.i adder,