From news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.reston.ans.net!newsfeed.internetmci.com!tank.news.pipex.net!pipex!dish.news.pipex.net!pipex!wave.news.pipex.net!pipex!soap.news.pipex.net!pipex!usenet Fri Feb 9 18:36:09 1996 Article: 3830 of rec.games.corewar Path: news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.reston.ans.net!newsfeed.internetmci.com!tank.news.pipex.net!pipex!dish.news.pipex.net!pipex!wave.news.pipex.net!pipex!soap.news.pipex.net!pipex!usenet From: Robert Macrae Newsgroups: rec.games.corewar Subject: Re: Secret Handshake :) Date: 9 Feb 1996 15:30:39 GMT Organization: UnipalmPIPEX server (post doesn't reflect views of UnipalmPIPEX) Lines: 181 Message-ID: <4ffpav$dkh@soap.news.pipex.net> References: NNTP-Posting-Host: ai044.du.pipex.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 1.1 (Windows; I; 16bit) lewin@netcom.com (Karl Lewin) wrote: >I think I accidently discovered the secret handshake :) > >Program "Mason 2.0" (length 100) by "Robert Macrae" >(contact address "ff95@dial.pipex.com"): >;strategy Rebadged Torch with Handshake + Boot >crow again wins: 199 >Mason 2.0 wins: 1 >Ties: 0 Yes, and Kurt Franke got there too with Hector 2 :( Actually Mason had some pretty glaring holes in security; I took a straight copy of the code I used in BigBoy for the NSFCT big-core round. The simplest gaffe is to bomb myself (JMP fixgame, >-8000 works fine in big core) but a far bigger problem is that an attack can catch me after I've started identifying my opponent but before I've recorded the result. This can easily lead to a wrong identification of quickscanners, or of warriors which usually draw, quite apart from any brainwashing threats. I'm not sure that, even cleaned up, the Masonic handshake has a future in small core; its just too big. OTOH 1) You are unlikely to score 297 (which is fun) any other way 2) Codebreakers have fun scoring 297 against you 3) Thermite II will love you :) Other features of potential interest are: -- the SPL #1, x1 decoy, which sometimes helps against Silks. When you bomb a Silk, you often leave SPL/MOV fragments flying about. The DAT clear is not much use against them, but the decoy may achieve a stun. The STPs are intended to nudge P-switchers containing a Silk into something else which I can beat; no evidence this works. -- the step of 17. This creates a rather nice mod-1 pattern, which leaves gaps just wide enough for slimline Brand to hide in, so no use for Tornado, quiz et al. The biggest problem is that it does very poorly against really big targets, so I lose a few quick kills against quickscanners. Hey! Why not put a QS in front? ;-) -- Mason is actually a LESS robust warrior than Brand would have been on its own (at least thats what the longevity of venerable t18 suggests to me). Though Mason initially scored higher, its handshake gave such a big edge to warriors which could fool it that it soon attracted predators. The secret of long life must be a good general-purpose attack with few weaknesses, not any one gimmick... Improvements are left as an exercise for the reader. ;redcode-94 ;name Mason 2.0 ;kill Brand 3.0 ;author Robert Macrae ;strategy Rebadged Torch with Handshake + Boot ; Brand 3.0 Beat torch t15 by about 3 points. Made hill with 133 ; points, so now adding handshake! ;assert CORESIZE == 8000 PIN 2171 _RESULT equ #0 _ROUNDS equ #1936 _BOOT equ #1937 _FRIEND equ #1940 _ENEMY equ #1942 _LOSE equ #1956 _WIN equ _LOSE+1 _SANE equ #1945 _TEST equ #1960 notmad equ #2362 first enemy ldp _ENEMY, #0 jmn boot, enemy ; If enemy identified, boot. friend ldp _FRIEND, #0 jmz hands, friend ; Handshake if status U/K jmp fixgame, >-8000; or else allot win as appropriate hands ldp _RESULT, #0 sne.b hands, #-1 jmp startup, >-7600; Initialise _SANE on first round sane ldp _SANE, #0 seq.b sane, notmad jmp asylum, >-7800 ; Rebuild P-space if brainwashed. rounds ldp _ROUNDS, #0 add.ba -1, 1 stp #1, _ROUNDS ; increment round counter, sne.b hands, #2 jmp boot, }1100 ; and fight until someone wins. add.b hands, wflag ; Store a Flag for winner and loser wflag stp #1, _LOSE sub.ba hands, rflag ; Won->1, Lost->2 rflag ldp _WIN, #0 ; Read the other flag jmz.b asylum, rflag ; If zero I must have an enemy. stp #1, _FRIEND ; Whoopee! stp #1, _TEST ; Flag the fact that I'm stp #0, _WIN ; identifying future winner stp #0, _LOSE ; clean up dat #0, #0 ; Yes, Anders, I like it too :-) ; First mover loses, sadly. fixgame ldp _TEST, #0 sane2 ldp _SANE, #0 ; Throw in a paranoid sanity check seq.b sane2, notmad jmp asylum, }1200 jmz winlose, fixgame ; If I've finished testing, do it. round2 ldp _ROUNDS, #0 mod.ab #2, round2 stp #0, _TEST ; Don't need to test again. jmn.b winlose, round2 ; Choose which block... losewin ldp _RESULT, #0 jmz.b 0, losewin ; Wrong winner last round. dat #0, #0 winlose ldp _RESULT, #0 jmn.b 0, winlose ; Winner keeps on winning! dat #0, #0 ; Addicted? Me? asylum stp #1, _ENEMY ; If I've been washed, somebody startup stp notmad, _SANE ; _is_ out to get me! jmp boot, }1300 ; Drop QS if time wasted. ; ----------------------------------------------------------- step equ 17 ; Used to be 54. Hits -20,-16,-13,-10,-6, ; -3 (at 941), 1 (at 2353?), 4 (at 1412) bootoff equ 3100 gate dat -100, 200 wipe dat -2, #cp-gate+2 +18 ; Insert gap of 18 here sp spl #-step, >1-step ; spl half of the incendiary in add #step*2, @msp ; Used to be sub... msm mov sm +15, *tgt-1+step ; Used to have count*step... msp mov sp, @msm ; bomb alternately with spl & mov tgt djn.f in, <4500 ; bombed with spl to start clear clr mov wipe -17, >gate -17 cp djn.f clr, {gate -17 ; Insert gap of 15 here sm mov step, >step ; mov half of the incendiary boot mov cp, bootoff for cp-sp mov {boot, 1 spl #1, #1 spl #1, }1 spl #1, *1 stp >0, #1 rof for (MAXLENGTH-CURLINE) spl #1, >1 rof end first