From news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.erols.net!cam-news-hub1.bbnplanet.com!cpk-news-hub1.bbnplanet.com!news.bbnplanet.com!news.ums.edu!haven.umd.edu!purdue!mozo.cc.purdue.edu!cartoon.ecn.purdue.edu!bremermr Tue Apr 1 20:33:05 1997 Article: 7419 of rec.games.corewar Path: news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.erols.net!cam-news-hub1.bbnplanet.com!cpk-news-hub1.bbnplanet.com!news.bbnplanet.com!news.ums.edu!haven.umd.edu!purdue!mozo.cc.purdue.edu!cartoon.ecn.purdue.edu!bremermr From: bremermr@cartoon.ecn.purdue.edu (Myer R. Bremer) Newsgroups: rec.games.corewar Subject: Core Warrior 57 Date: 1 Apr 1997 05:57:34 GMT Organization: Purdue University, W. Lafayette, IN Lines: 741 Message-ID: <5hq84e$inq@mozo.cc.purdue.edu> NNTP-Posting-Host: cartoon.ecn.purdue.edu .xX$$x. .x$$$$$$$x. d$$$$$$$$$$$ ,$$$$$$$P' `P' , . $$$$$$P' ' .d b $$$$$P b ,$$x ,$$x ,$$x ,$$b $$. Y$$$$' `$. $$$$$$. $$$$$$ $$P~d$. d$$$b d d$$$ `$$$$ ,$$ $$$$$$$b $$$P `$ $$$b.$$b `Y$$$d$d$$$' . . a . a a .aa . a `$$$ ,$$$,$$' `$$$ $$$' ' $$P$XX$' `$$$$$$$$$ .dP' `$'$ `$'$ , $''$ `$'$ `Y$b ,d$$$P `$b,d$P' `$$. `$$. , `$$P $$$' Y $. $ $ $ Y..P $ `$$$$$$$' $$$P' `$$b `$$$P `P `$' `Y'k. $. $. $. $$' $. Issue 57 30 March, 1997 ______________________________________________________________________________ Core Warrior is a weekly newsletter promoting the game of corewar. Emphasis is placed on the most active hills--currently the '94 draft hill and the beginner hill. Coverage will follow where ever the action is. If you have no clue what I'm talking about then check out these five-star internet locals for more information: FAQs are available by anonymous FTP from rtfm.mit.edu as pub/usenet/news.answers/games/corewar-faq.Z FTP site is: ftp.csua.berkeley.edu /pub/corewar Web pages are at: (Please note new Stormking's address) http://www.koth.org/ ;Stormking http://www.ecst.csuchico.edu/~pizza/koth ;Pizza http://pauillac.inria.fr/~doligez/corewar/ ;Planar Newbies should check the stormking page for the FAQ, language specification, guides, and tutorials. Post questions to rec.games.corewar. All new players are infinitely welcome! If ftp.csua.berkeley.edu is unreachable, you can download pMARS at: Terry's web page--http://www.infi.net/~wtnewton/corewar/ Planar ftp site--ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars Fechter ftp site--ftp://members.aol.com/ofechner/corewar A collection of Bezzi's hints in the first issues is available at: ftp://ftp.volftp.vol.it/pub/pc/msdos/games/solutions/bbhints.zip Beppe Bezzi web page - http://www.aspide.it/freeweb/Bezzi ______________________________________________________________________________ Greetings. Aging is slow on the pizza hills these days, but traffic is heavier than the change in age implies. There have been over 430 mailings to the pizza hills in the last 30 days, most of the submissions going to the limited process hill. The beginner's hill had the next highest number of submissions with the '94 hill relatively quiet. You can find all theses usage statistics in a relatively new addition to the pizza homepage. Very nice. Philip Kendall has been kind enough to provide us with this issues hint on pspace brains. --M R Bremer ______________________________________________________________________________ Current Status of the Internet Pizza Server ICWS '94 Draft Hill: Hill Specs: coresize: 8000 max. processes: 8000 duration: after 80,000 cycles, a tie is declared. max. entry length: 100 minimum distance: 100 rounds fought: 200 instruction set: ICWS '94 Draft Last challenge: Fri Mar 21 06:54:21 PST 1997 # %W / %L / %T Name Author Score Age 1 44.7/ 36.6/ 18.7 The Bloodhound Ian Sutton 152.8 10 2 38.1/ 27.2/ 34.6 Head or Tail Christian Schmidt 149.0 26 3 40.9/ 35.7/ 23.4 Tides v0.1 Ian Oversby 146.1 22 4 33.8/ 21.8/ 44.3 RetroQ P.Kline 145.9 38 5 36.5/ 27.5/ 36.0 Nine Seven Six M R Bremer 145.5 102 6 34.7/ 24.0/ 41.2 Gigolo Core Warrior staff 145.5 292 7 30.8/ 16.2/ 53.0 Return Of The Jedimp John K W 145.5 238 8 41.5/ 37.9/ 20.6 Solomon v0.8 Ian Oversby 145.1 84 9 37.7/ 31.0/ 31.3 Quimp v0.2 Ian Oversby 144.4 6 10 41.1/ 39.0/ 19.9 NCC-1701-A Philip Kendall 143.1 41 11 41.1/ 39.7/ 19.2 The Machine Anton Marsden 142.4 144 12 32.7/ 23.4/ 43.9 unrequited love kafka 142.1 336 13 44.3/ 47.7/ 8.0 He Scans Alone P.Kline 141.0 53 14 29.6/ 18.8/ 51.6 Impish v0.2 Ian Oversby 140.5 277 15 40.4/ 41.1/ 18.6 Blain Nimon 139.7 4 16 38.9/ 38.3/ 22.7 Damage Incorporated Anton Marsden 139.5 279 17 39.2/ 39.0/ 21.8 Ace of Spades 2 Christian Schmidt 139.4 3 18 38.7/ 38.5/ 22.7 Scanitator 5 Christian Schmidt 138.9 3 19 29.9/ 21.3/ 48.8 Trident^2 John K W 138.5 168 20 37.5/ 39.8/ 22.7 More testing Thos 135.3 3 21 27.7/ 21.7/ 50.6 blue spark 0.04 bjoern guenzel 133.8 18 22 37.5/ 41.2/ 21.3 One Man Army v1.0 Ian Sutton 133.7 2 23 33.1/ 33.5/ 33.4 Fast Fast Fast v2 Franz 132.7 52 24 39.3/ 46.7/ 14.0 Instant Ogre Edgar 132.0 1 25 32.4/ 34.8/ 32.8 Instant Ogre Edgar 130.1 21 Monthly age: 12 this month ( 13 last issue, 9 the issue before ) New warriors: Turnover/age rate % Average age: 88 ( 93 last issue, 119 the issue before ) Average score: 141 ( 135 last issue, 134 the issue before ) The top 25 warriors are represented by 14 independent authors: Oversby with 4; Schmidt with 3; Sutton, Kline, JKW, Marsden and Edgar with 2. All others with one warrior each. ______________________________________________________________________________ 94 - What's New # %W / %L / %T Name Author Score Age 1 44.7/ 36.6/ 18.7 The Bloodhound Ian Sutton 152.8 10 9 37.7/ 31.0/ 31.3 Quimp v0.2 Ian Oversby 144.4 6 15 40.4/ 41.1/ 18.6 Blain Nimon 139.7 4 17 39.2/ 39.0/ 21.8 Ace of Spades 2 Christian Schmidt 139.4 3 18 38.7/ 38.5/ 22.7 Scanitator 5 Christian Schmidt 138.9 3 20 37.5/ 39.8/ 22.7 More testing Thos 135.3 3 22 37.5/ 41.2/ 21.3 One Man Army v1.0 Ian Sutton 133.7 2 24 39.3/ 46.7/ 14.0 Instant Ogre Edgar 132.0 1 Bloodhound vaults onto the scene. ______________________________________________________________________________ 94 - What's No More # %W / %L / %T Name Author Score Age 26 1.3/ 1.9/ 0.9 QFalcon (vii) Ian Oversby 4.6 23 26 26.6/ 29.4/ 44.1 Terkonit 0.4 Christian Schmidt 123.8 43 26 30.7/ 41.6/ 27.8 Scanitator 4 Christian Schmidt 119.7 37 26 33.0/ 43.2/ 23.8 Instant Wolf Edgar 122.8 57 26 38.2/ 50.8/ 10.9 Memories Beppe 125.6 152 26 34.4/ 47.1/ 18.4 Oblivion Ian Sutton 121.7 99 26 27.9/ 35.1/ 37.0 Dust 7.0 Justin Kao 120.6 6 26 2.2/ 0.6/ 1.2 Test I Ian Oversby 7.8 3 Bezzi's well known Memories falls. QFalcon was killed by its author and replaced by the successful Quimp. Oblivion falls just short of the New Hall of Fame. ______________________________________________________________________________ 94 - What's Old # %W / %L / %T Name Author Score Age 12 32.7/ 23.4/ 43.9 unrequited love kafka 142.1 336 6 34.7/ 24.0/ 41.2 Gigolo Core Warrior staff 145.5 292 16 38.9/ 38.3/ 22.7 Damage Incorporated Anton Marsden 139.5 279 14 29.6/ 18.8/ 51.6 Impish v0.2 Ian Oversby 140.5 277 7 30.8/ 16.2/ 53.0 Return Of The Jedimp John K W 145.5 238 ______________________________________________________________________________ OLD HALL OF FAME * means the warrior is still active. Pos Name Author Age Strategy 1 Thermite II Robert Macrae 2262 Qscan -> bomber 2 Impfinity v4g1 Planar 1993 Stone/ imp 3 Jack in the box Beppe Bezzi 1620 P-warrior 4 Tornado 3.0 Beppe Bezzi 1567 Bomber 5 Torch t18 P.Kline 1539 Bomber 6 Chameleon Myer R Bremer 1437 P-warrior 7 Frontwards v2 Steven Morrell 1420 One shot scanner 8 Evol Cap 6.6 John Wilkinson 1299 Imp / stone 9 quiz Schitzo 1262 Scanner/ bomber 10 T.N.T. Maurizio Vittuari 1204 Bomber 11 Grilled Octopus v0.5 David Boeren 1154 P-warrior 12 Hazy Shade II John Wilkinson 1102 P-warrior 13 Stepping Stone Kurt Franke 1049 Qscan -> Vampire 14 Rosebud Beppe Bezzi 993 Stone/ imp 15 Iron Gate 1.5 Wayne Sheppard 926 CMP scanner 16 T.N.T. pro Maurizio Vittuari 925 Bomber 17 Agony II Stefan Strack 912 CMP scanner 18 Barrage Anton Marsden 876 Qscan -> replicator 19 Blue Funk Steven Morrell 869 Stone/ imp 20 Flurry Anton Marsden 835 Qscan -> pwarrior 21 Thermite 1.0 Robert Macrae 802 Qscan -> bomber 22 Blue Funk 3 Steven Morrell 766 Stone/ imp 23 Night Train Karl Lewin 755 Replicator 24 Mirage 1.5 Anton Marsden 736 Scanner/ bomber 25 Blizzard Anton Marsden 713 Qscan -> replicator ______________________________________________________________________________ NEW HALL OF FAME * means the warrior is still active. Pos Name Author Age Strategy 1 Probe Anton Marsden 403 Q^2 -> Bomber 2 Blur 2 Anton Marsden 396 Scanner 3 unrequited love kafka 336 * Stone/ imp 4 Gigolo Core Warrior staff 292 * Q^2 -> Stone/ imp 5 Damage Incorporated Anton Marsden 279 * Q^2 -> Bomber 6 Impish v0.2 Ian Oversby 277 * Stone/ imp 7 Falcon v0.3 Ian Oversby 275 P-warrior 8 Return Of The Jedimp John K W 238 * Q^2 -> Stone/ imp 9 Rosebud Beppe 218 Stone/ imp 10 Q^2 Miro Anders Ivner 214 Q^2 -> Scanner/ bomber 11 Instant Wolf 3.4 Edgar 205 P-warrior 12 Goldfinch P.Kline 201 P-warrior 13 Simple v0.4b Ian Oversby 197 Stone/ imp 14 ompega Steven Morrell 189 Stone/ imp 15 Frogz Franz 172 Paper 16 Trident^2 John K W 168 * Stone/ imp 17 Memories Beppe 152 Scanner 18 The Machine Anton Marsden 144 * Scanner 19 Tiberius 3.1 Franz 130 P-warrior 20 CC Paper 3.3 Franz 107 Paper 21 mrb-test m r bremer 106 ? 22 T.N.T. pro Maurizio Vittuari 105 Bomber 23 Nine Seven Six M R Bremer 102 * Q^2 -> Stone / imp 24 Jack in the box II Beppe Bezzi 100 P-warrior Nine Seven Six enter the hall while Bezzi's Memories ends its run. ______________________________________________________________________________ Current Status of the Internet Pizza Server Beginner's Hill: Hill Specs: coresize: 8000 max. processes: 8000 duration: after 80,000 cycles, a tie is declared. max. entry length: 100 minimum distance: 100 maximum age: At age 100, warriors are retired. rounds fought: 200 instruction set: ICWS '94 Draft Last challenge: Sun Mar 30 11:23:28 PST 1997 # %W / %L / %T Name Author Score Age 1 51.4/ 38.5/ 10.1 Pentagram 2.a J.A.Denny 164.4 40 2 47.2/ 34.7/ 18.1 Hexagram J.A.Denny 159.8 38 3 47.4/ 43.6/ 9.0 Scankiller 0.1 Christian Schmidt 151.3 50 4 46.0/ 41.2/ 12.8 Flamberge 13.4 Matt Lewinski 150.7 88 5 37.6/ 24.7/ 37.7 Dust 7.0 Justin Kao 150.5 18 6 46.8/ 43.4/ 9.9 The Stainless Steel Rat Christian Schmidt 150.2 61 7 41.0/ 32.0/ 27.0 Flimsy v0.6 Ian Oversby 149.9 39 8 38.6/ 27.4/ 34.1 Scanitator 3.0 Christian Schmidt 149.7 45 9 45.8/ 42.0/ 12.2 Mostly Harmless v1.1 Justin Kao 149.5 69 10 43.3/ 37.8/ 18.9 Vivid Radiation 2.0 Matt Lewinski 148.7 87 11 44.8/ 41.6/ 13.5 Short Sword 4 JS Pulido 148.1 20 12 40.5/ 33.5/ 26.0 Versatility 1.7 Ross Morgan-Linial 147.5 66 13 38.2/ 30.5/ 31.2 Zorm-B Anonymous 145.9 23 14 45.1/ 46.9/ 8.0 qDeath v .069 Ryan Coleman 143.3 3 15 42.3/ 44.2/ 13.5 Dwa Michaly b Waldemar Bartolik 140.3 26 16 28.8/ 17.9/ 53.3 DemonSpawn J.A.Denny 139.7 48 17 35.3/ 32.6/ 32.0 Apocalypse Matt Lewinski 138.1 96 18 29.7/ 23.2/ 47.1 Quantum Christian Schmidt 136.2 42 19 31.6/ 29.8/ 38.6 Heartworm Edgar 133.3 36 20 30.2/ 31.3/ 38.4 Kohonenian Dream Robert J. Street 129.1 12 21 31.7/ 35.2/ 33.1 Kohonenian Dream Robert J. Street 128.3 11 22 33.6/ 41.7/ 24.7 Time Lag 1c3 Ilmari Karonen 125.4 22 23 31.1/ 39.5/ 29.4 Five-Finger Discount From Ryan Coleman 122.8 2 24 33.8/ 46.1/ 20.1 Five-Finger Discount From Ryan Coleman 121.5 8 25 34.3/ 52.4/ 13.3 Five-Finger Discount From Ryan Coleman 116.1 1 Top 25 Averages: 39.0/ 36.5/ 24.5 141.6 38 ______________________________________________________________________________ Current Status of the Internet Pizza Server Limited Process Hill: Hill Specs: coresize: 8000 max. processes: 8 duration: after 80,000 cycles, a tie is declared. max. entry length: 200 minimum distance: 200 rounds fought: 200 instruction set: ICWS '94 Draft Last challenge: Fri Mar 28 21:18:16 PST 1997 # %W / %L / %T Name Author Score Age 1 60.0/ 29.2/ 10.7 Limb Rending Incisors Ian Sutton 190.8 5 2 55.1/ 34.7/ 10.3 Solomon LP v0.1 Ian Oversby 175.4 2 3 50.2/ 33.0/ 16.8 Flips Zul Nadzri 167.4 6 4 45.8/ 24.3/ 29.9 Indecisive v0.1 Ian Oversby 167.4 11 5 46.3/ 31.9/ 21.8 Bolder v0.01 Ian Oversby 160.7 10 6 49.0/ 37.5/ 13.5 Romulan Warbird Philip Kendall 160.5 15 7 45.0/ 30.6/ 24.4 Twin Flame Ian Oversby 159.4 36 8 43.0/ 28.0/ 28.9 Paper 'LP' II Philip Kendall 158.1 32 9 41.0/ 27.7/ 31.3 Benchmark 1.0 Zul Nadzri 154.3 30 10 42.3/ 36.8/ 21.0 Bag of Tricks Anton Marsden 147.8 20 11 41.5/ 35.8/ 22.7 red marble bjoern guenzel 147.2 25 12 40.7/ 35.7/ 23.5 Romantica Zul Nadzri 145.8 3 13 39.3/ 36.5/ 24.2 Inferno 1.8 Philip Kendall 142.2 52 14 41.8/ 41.3/ 16.9 red eye bjoern guenzel 142.2 26 15 34.1/ 26.3/ 39.6 Paper 'LP' Philip Kendall 141.9 53 16 36.0/ 33.8/ 30.2 Iocane 0.0 John K W 138.2 19 17 36.5/ 38.4/ 25.1 oldtimer bjoern guenzel 134.6 38 18 35.0/ 40.4/ 24.6 rimmer 2.0 jkw 129.6 44 19 37.0/ 45.6/ 17.4 Hopefully Indestructible Ian Sutton 128.5 24 20 37.0/ 46.6/ 16.4 Juggernaut Anton Marsden 127.4 29 21 33.7/ 45.1/ 21.2 Dr. Gate v4 Franz 122.3 40 22 31.0/ 46.1/ 22.9 Dr. Gate Franz 115.9 42 23 21.5/ 33.9/ 44.6 Completely Indestructible Ian Sutton 109.1 22 24 32.3/ 56.7/ 11.0 One Man Army v1.0 Ian Sutton 107.8 28 25 4.0/ 0.0/ 0.0 test Philip Kendall 12.0 1 Top 25 Averages: 39.2/ 35.0/ 22.0 139.5 24 ______________________________________________________________________________ The Hint--by Philip Kendall Some pspace engines Whilst I was developing NCC-1701-A (the Starship Enterprise, for any non-trekkies out there :-) ), a pspaced one shot and suicidal stone, I got the feeling that the simple switch-on-loss pspace algorithm wasn't working that well: an unlucky loss for my one shot would kick the stone in, which would then lose again, and my losses would be doubled. So, I went looking for some more complex pspace algorithms, but didn't find anything that really grabbed my attention. Quite a few concentrated on detecting brainwashing, and recovering from it, but at the time I wrote Enterprise, there weren't any brainwashers on the hill, and there were a lot of qscans, making fast response times crucial. Eventually, a couple of things that looked like what I wanted showed up: the switcher from Core Warrior 39, which switched on loss/loss,loss/tie,tie/loss or tie/tie and that used in Ian Sutton's Oblivion, which switched on n losses without a win. However, both of these looked like they could have a couple of cycles and instructions shaved off them, so I went about building my own. Whilst I was at it, I built up a small library of pspace routines, which is basically what's here - the entry point for all routines is pGo, and also any constants are defined only in the first switcher they are used in, so check back if you get any undefined symbol errors. (For those of you not familiar with pspace, Beppe wrote a brief introduction in Core Warrior 5, available from Planar's page: http://pauillac.inria.fr/~doligez/corewar/ as are all warriors mentioned in this article) Basic switch-on-loss from Core Warrior 5 This is just the switcher used by Beppe in Core Warrior 5, just re-labelled. It's probably the simplest switcher possible: it's main virtues are that it is short and fast (always good!) and that it won't suicide if brainwashed. However, as mentioned above, spurious losses will mean that the optimal strategy will not always be running, and this costs points. One simple modification which can be made to this is to change the pThink line to sne.ab #1,pGo which changes this from a switch-on-loss to a switch-on-loss or tie. pResult equ 0 ; pMARS puts results in here pSpace equ 1 ; we store our current strategy here pNum equ 2 ; how many strategies are we using? pGo ldp.ab #pResult,#0 ldp.a #pSpace,pTable pThink sne.ab #0,pGo add.a #1,pTable mod.a #pNum,pTable stp.ab pTable,#pSpace pTable jmp.a @0,strat1 dat.f 0,strat2 [other strategies if you want them, remember to increase pNum] end pGo Length: 6 + 1/strategy Cycles to completion: after Win/Tie: 6 Loss : 7 Improved switch-on-loss This is very similar to the above switcher, but with two changes: firstly, and less important, the add.a #1,pTable line has been changed to nop.f }pTable,}-1000: this has two advantages 1) If the b-field of this instruction happens to be hit very early in the round, the warrior will still behave properly and 2) It gets a free bomb in. Both minor advantages, but there are no disadvantages, so why not? The second, and more important, change is that the pspace value is not re-stored unless it has changed (note that it still always undergoes a mod before being used); this saves a cycle and leads to exactly the same behaviour (well, almost exactly... bonus point to the first person to e-mail me with the difference). Disadvantages of this switcher: same as before, and also it can't be modified to a switch-on-loss or tie, without losing it's speed advantage. If the jmn.b pGood,pGo line is changed to jmn.b pTable,pGo, the switcher gets another cycle quicker on a win or a tie, but it then has the possibility of suicide if it is brainwashed and doesn't lose. Whether this is a good thing or not depends on the number of brainwashers on the hill, what they're brainwashing with, how quick your boot routine is and countless other things. pGo ldp.ab #pResult,#0 ldp.a #pSpace,pTable jmn.b pGood,pGo nop.f }pTable,}-1000 stp.ab pTable,#pSpace pGood mod.a #pNum,pTable pTable jmp.a @0,strat1 dat.f 0,strat2 end pGo Length: 6 + 1/strategy Cycles: Win/Tie: 5 Loss: 7 Switch on n consecutive losses This is the switcher used in NCC-1701-A: if the warrior loses for pLosses consecutive rounds, then it will switch to the next strategy in its table. This means that a spurious loss for the optimal strategy won't kick in another strategy, and so the hill placing is (hopefully) improved. Also, after a win or a tie, it is as quick as the above switchers, but is quite a bit slower after a loss, and also bigger. One potential problem with this switcher is that it is very zero brainwash sensitive: if it is brainwashed with a zero, the first strategy in the table will be selected, and the loss counter reset, which could produce problems if this strategy lost reguarly to the brainwasher. If pLosses is 2, the switcher can be modified by changing pLoss to ldp.ab #pSpace2,#1 and pThink to jmz.b pWin,pLoss, to make it sensitive to a 1-brainwash rather than 0-brainwash, whilst if pLosses>2, then changing pLoss to ldp.ab #pSpace2,#1 and pThink to cmp.b pLoss,#1 will have the same effect, but increasing the running time by 1 cycle for a loss without switch. One final modification that can be made is changing the first three lines to pGo ldp.ab #pResult,pJump ldp.a #pSpace1,pTable pJump jmp.a @0,pLoss dat.f 0,pTie which will lead to a switch after pLosses rounds without a win. Note that this modification is not compatible with the brainwash changes above, and changes the stats to: Length: 12+1/strategy. Cycles: Win: 6, Tie/Loss no switch:10, Tie/Loss switch: 12, First round: 4 pSpace1 equ 1 ; used to store the current strategy pSpace2 equ 2 ; used to store the loss counter pLosses equ 3 ; how many losses before we switch pGo ldp.ab #pResult,#0 ldp.a #pSpace1,pTable pJump jmn.b pWin,pGo pLoss ldp.ab #pSpace2,#0 nop.f >pLoss,}-1000 mod.ab #pLosses,pLoss pThink jmn.b pWin,pLoss nop.f }pTable,}-2000 stp.ab pTable,#pSpace1 pWin stp.b pLoss,#pSpace2 mod.a #pNum,pTable pTable jmp.a @0,strat1 dat.f 0,strat2 end pGo Length: 11 + 1/strategy Cycles: Win/Tie: 6 Loss: when no strategy switch occurs: 10 when switch occurs: 12 Switch on loss, select on tie number 1 This switcher and the next have the same behaviour: on a loss, they will change to the next strategy in their table, whilst they will select a specific strategy after a tie. This first switcher (taken from Ian Oversby's Falcon v0.5, hope he doesn't mind :-) ) is slower but smaller than the second. pSelect equ 0 ; which to select on tie pGo ldp.ab #pResult,#0 ldp.a #pSpace,pTable sne.ab #0,pGo add.a #1,pTable sne.ab #2,pGo mov.a #pSelect,pTable mod.a #pNum,pTable stp.ab pTable,#pSpace pTable jmp.a @0,strat1 dat.f 0,strat2 Length: 8 + 1/strategy Cycles: Win: 7 Tie/Loss: 8 Switch on loss, select on tie number 2 pGo ldp.a #pResult,pJump ldp.a #pSpace,pTable pJump jmp.a @0,pLoss dat.f 0,pWin dat.f 0,pTie [any number of instructions you like in here] pTie mov.a #(pSelect-1),pTable pLoss nop.f }pTable,}-1000 stp.ab pTable,#pSpace pWin mod.a #pNum,pTable pTable jmp.a @0,strat1 dat.f 0,strat2 Length: 9 + 1/strategy Cycles: First round: 4 Win: 5 Tie: 8 Loss: 7 Switch on n losses without a win This switcher is very similar to the switch on n consecutive losses switcher above, but has different enough behaviour to warrant a separate entry (I think, and I'm writing this, so it does!). The only difference here is that a tie will not reset the loss count, so a sequence of loss-tie-loss-loss will cause a switch, if pLosses is equal to 3. Note that this is both smaller and faster than that used by Ian Sutton in Oblivion :-) pGo ldp.ab #pResult,pJump ldp.a #pSpace1,pTable pJump jmp.a @0,pLoss dat.f 0,pWin dat.f 0,pTie [any number of instructions here] pLoss ldp.ab #pSpace2,#0 nop.f >pLoss,}-1000 mod.ab #pLosses,pLoss pThink jmn.b pWin,pLoss nop.f }pTable,}-2000 stp.ab pTable,#pSpace1 pWin stp.b pLoss,#pSpace2 pTie mod.a #pNum,pTable pTable jmp.a @0,strat1 dat.f 0,strat2 Length: 13+1/strategy Cycles: First round: 4 Win: 6 Tie: 5 Loss: switch: 12 no switch: 10 Now, the difficult question: which of these switchers should you use? Well, as you'd expect, there's no simple answer to that: it depends on your components and the warriors on the hill, and the warriors to come on the hill in the future. All these switchers have fast response times, meaning that quickscans are not a serious problem, if you have fast boot routines, but are quite sensitive to brainwashing. This reflects the make-up of the hill when I wrote them, but who's to say what the future will hold? - a brainwashing paper has already appeared on the hill... Other switchers I could mention include that used by Paul Kline in Yogi Bear, which can actually have different responses for each component depending on whether a win, a loss or a tie occured, but which is rather big and slow, and that used by John K Wilkinson in Hazy Shade II, which is very resistant to brainwashes. Philip Kendall pak21@cam.ac.uk ----------------------------------------------------------------------------- Extra Extra NCC-1701-A by Philip Kendall By most successful '94 warrior to date, there's nothing really original in this warrior apart from the switcher - everything else has been seen before. As it comes in three parts, Phasers, a suicidal stone, Photon Torpedoes, a one-shot scanner and the switcher, I'll make some quick comments on each part individually: 1. Phasers: this is basically Carbonite, taken from Ian Sutton's Oblivion, with just a few changes by me: firstly, I increased the bombing run to its maximum duration (about another 30 bombs in 3500), and also I made the spare field on the spl drive the djn stream. As Beppe mentioned back in Core Warrior 31, this has three advantages: it make the djn stream cover a wider area (decrementing most of a warrior will normally be effective), it can trigger more cmp scans, and it can decrement a warrior without triggering its decrement detector (eg jmz.b loop,#0 in Torch t18). The boot routine has also been changed slightly. The suicidal tendency of this component is an advantage here, as it means the switcher can be more responsive, as Phasers tends to either win or lose, with very few ties. 2. Photon Torpedoes: this is just One Shot, as was seen in the lower reaches of the hill a while back: it was designed specifically as a stone/imp killer, and still does that job quite effectively, even when pspaced with Phasers, but maybe a spl/spl/dat clear would be better than the stargate clear used here on the hill as it is - oh well, ideas for the future! 3. Captain Kirk: this switcher, a switch on 5 consecutive losses (see above) basically has the effect of switching at most once during the fight - it starts off with Phasers active, and if something beats this 5 times consecutively, then Photon Torpedoes will be used instead; whilst many things can get 5 consecutive wins against Phasers, due to its suicidal coreclear, not much get can do this against Photon Torpedoes, meaning that this component will tend to stay active once it is switched to. As I write this, Memories, which NCC-1701-A trashed due to its pure stone, has just been kicked off the hill, so I predict a downward jump for the Enterprise :-( Well, it was good while it lasted! One last thing - in case you hadn't noticed, most of the source code has been available via ;show source, but here's the full version, with all the constants etc as on the hill, so don't abuse them... ;redcode-94 ;name NCC-1701-A ;author Philip Kendall ;strategy Captain Kirk is commanding the USS Enterprise ;strategy He has two weapons at his disposal: ;strategy 1) Photon Torpedoes (aka One Shot) ;strategy 2) Phasers (modified Carbonite) ;strategy Original self-destructed over Genesis to prevent Khan ;strategy from gaining possession ;strategy The new version has an improved phaser array ;strategy Also, Kirk has had advanced tactical training from Starfleet ;assert CORESIZE==8000 ;planar pspace,boot,stone,scan,clear,gate ;show source ;show off tStep equ 30 tSep equ 15 tStream equ (tPtr-412) ;show on tScan1 equ (tInc+tStep) tImp equ 2667 tCstart equ (tLast+2-tPtr) tPtr dat.f tBomb1,#0 ; scanned-low tBomb3 dat.f >tImp,>(2*tImp) tInc dat.f tStep,tStep tBomb2 spl.a #(tBomb3-tPtr),tCstart tLoop add.f tInc,tScan tScan sne.i tScan1,tScan1+tSep djn.f tLoop,tPtr mov.i *tPtr,>tPtr tLast djn.f tClear,tBptr rof spl.a *tBptr,>-1000 div.f tBptr,tBptr tBptr dat.f (tScan+tBdist),(tPtr+tBdist) ; scanned-low spl.a #1,1 ;show off pspace1 equ 318 pspace2 equ 167 ;show on losses equ 4 kirk ldp.ab #0,#0 ldp.a #pspace1,strat jmn.b win,kirk loss ldp.ab #pspace2,#0 nop.f >loss,}-400 mod.ab #losses,loss jmn.b win,loss nop.f }strat,>-800 stp.ab strat,#pspace1 win stp.b loss,#pspace2 mod.a #2,strat strat jmp.a @0,pBoot spl.a #1,tBoot dat.f 1,1 ; scanned-hi spl.a #1,*1 ;show off pBdist equ -2138 ;show on pBoot mov.i {pBomb,{pBptr mov.i pBomb,@pBptr mov.i {pBomb,{pBptr mov.i {pBomb,{pBptr mov.i {pBomb,{pBptr spl.a *pBptr,<4000 div.f pBptr,pBptr pBptr dat.f #pStart+pBdist,#pStart+pBdist-pOffset-4 spl.ab *1,#1 spl.ba *1,#1 spl.f *1,#1 spl.x *1,#1 spl.i *1,#1 spl.a #1,#1 ; scanned-low spl.a #1,*1 spl.b #1,*1 ;show off pOffset equ 15 pStep equ 197 pStream equ (pStart-1152) ;show on pStart spl.a #0, 0, >2667 ; a-field changed to -1 by boot spl.a *1,#1 spl.b *1,#1 spl.ab *1,#1 spl.ba *1,#1 spl.f *1,#1 spl.x *1,#1 spl.i *1,#1 spl.a #1,#1 ; scanned-hi spl.a #1,*1 spl.b #1,*1 spl.ab #1,*1 spl.ba #1,*1 spl.f #1,*1 spl.x #1,*1 spl.i #1,*1 spl.a *1,#1 spl.b *1,#1 spl.ab *1,#1 spl.ba *1,#1 spl.f *1,#1 spl.x *1,#1 spl.i *1,#1 dat.f 0,0 ; scanned-low spl.a #1,1 spl.a #1,1 spl.a #1,1 spl.a #1,1 spl.a #1,1 spl.a #1,1 spl.a #1,1 spl.a #1,1 spl.a #1,1 end kirk _____________________________________________________________________________ Questions? Concerns? Comments? Complaints? Mail them to people who care. authors: Beppe Bezzi or Myer Bremer or Anton Marsden