From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: A corewar timeline Date: 1 Apr 2002 13:29:10 -0800 Message-ID: <92b0a3d6.0204011329.78218d6a@posting.google.com> > > Continuous Paul Kline > Imp Rings If this is in reference to Die Hard, I think there may have been a continuous launcher prior to that. Die Hard was the first to launch imps from paper, not very good imps at that :-) Paul Kline pk6811s@acad.drake.edu From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: A corewar timeline Date: 1 Apr 2002 14:41:17 -0800 Message-ID: <92b0a3d6.0204011441.2acb390@posting.google.com> * Self-repair Five Musketeers (author?) * Stone+Paper Flash Paper (Matt Hastings) * Intelligence Bombs CIA (Anders Ivner) * Wimp Brant Thomsen * Silk Silk Warrior (J. Pohjalainen) Brant had a lot of good ideas, hope he doesn't get credit just for Wimp :-) When Silk first appeared on the Hill, and just before J.P. posted the code, several folks had worked out the basic algorithm and may have published ahead of him. But he deserves all the credit! ";strategy one tiny paper" indeed!!! Closest thing to zero losses since The Impire Strikes Back, which gets my vote for: * Best Named Warrior Anders Ivner from the '87 tournament (someone should do a complete inventory of the '86-89 contests to find the earliest types): * Spl/Dat Clear More than one in the '87 tournament * CMP Scanner Ferret (Robert Reed III) Not sure I was the first one-shot scanner, it is too obvious a strategy for it not to have appeared somewhere before my time. My work was to speed up the scan to .75, .8 and 2c (quick-scan). Perhaps my all-time favorite, AntiVamp. Solved the vampire problem completely in its day, almost 100% wins and easily incorporated into stones and papers. * Antivamp Paul Kline It is going to be a long list, there are many, many innovations, small and great. Paul Kline From: waknuk@yahoo.com (Philip Thorne) Subject: Re: A corewar timeline Date: 1 Apr 2002 18:07:36 -0800 Message-ID: <4ee41bd6.0204011807.59a9eaff@posting.google.com> oversby@hotmail.com (Ian Oversby) wrote in message news:<21fc098d.0203301015.9ba5069@posting.google.com>... > I'm interested in putting together a timeline of the significant advances > in corewar state of the art and who discovered them for possible inclusion > in the FAQ. I'm sure I have made a number of mistakes in the attributions > so I would appreciate any corrections. Can anyone else think of other > significant advances? > > Regards, > > Ian > Retro warriors. e.g. RetroQ, Paul Kline Also interesting the "pmars -F" exploits Cheater 2.0, Nathan Green / Certain Abuse, Dave Hillis From: oversby@hotmail.com (Ian Oversby) Subject: Re: A corewar timeline Date: 2 Apr 2002 04:53:55 -0800 Message-ID: <21fc098d.0204020453.7d73d08a@posting.google.com> Hi, Thanks for the input. This is what I have so far. It seems to be almost ready for me to add some commentary to the result of each invention (or at least the results I am aware of!). Ian * Bomber A. K. Dewdney * CMP-Scanner Robert Reed III * B-Scanner * Paper * Self-repair * PMARS Stefan Strack et al. * Vampire Eugene P. Lilitko * Bomber with optimal step * Core-clear * Wimp Brant Thompson * Two-pass coreclear Mintardjo * Stone / Paper Matt Hastings * Imp Rings Anders Ivner * Imp / Stone Dan Nabutovsky * Gate-busting imps Paul Kline * One-shot scanner Paul Kline * QScan Paul Kline * Incendiary bomber Paul Kline * Silk / Timescape Juha Pohjalainen * Tornado bomber Beppe Bezzi * Imp-paper Paul Kline * Intelligence bombs Anders Ivner * Spiral Clear John K Wilkinson * Handshaking Kurt Franke * Optimised QScan Anders Ivner / Anton Marsden * RetroQ Paul Kline * Mirage Scanner Anton Marsden * Blur Scanner Anton Marsden * Fast P-switcher Anton Marsden * DClear Bjoern Guenzel * He Scans Alone Paul Kline From: birk@andromeda.ociw.edu Subject: Re: A corewar timeline Date: 2 Apr 2002 14:07:54 -0500 Message-ID: <200204021838.g32IcQE08598@andromeda.ociw.edu> Paul Kline wrote: > * Self-repair Five Musketeers (author?) Does anyone have the source code the this? Neither Koenigstuhl nor Planar's archive list this warrior. Christoph From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 04/01/02 Date: 2 Apr 2002 16:45:44 -0500 Message-ID: <200204010509.AAA02444@gevjon.ttsg.com> Weekly Status on 04/01/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Fri Mar 29 07:04:19 EST 2002 # %W/ %L/ %T Name Author Score Age 1 45/ 36/ 20 Hazy Lazy ... again Steve Gunnell 154 15 2 38/ 25/ 37 Inky Ian Oversby 151 459 3 36/ 21/ 43 Purifier Lukasz Grabun 151 16 4 35/ 21/ 43 Son of Vain Oversby/Pihlaja 149 569 5 44/ 40/ 16 Vanquisher Lukasz Grabun 148 71 6 38/ 28/ 34 Quicksilver Michal Janeczek 148 742 7 44/ 41/ 15 Behemot Michal Janeczek 147 803 8 34/ 21/ 45 nPaper II Paul-V Khuong 147 980 9 36/ 27/ 37 Uninvited John Metcalf 145 662 10 35/ 27/ 37 Olivia Ben Ford 144 708 11 35/ 29/ 36 Revival Fire P.Kline 141 448 12 33/ 26/ 41 Hopper Phooey 141 106 13 40/ 39/ 21 Blue test 3 Lukasz Grabun 140 1 14 37/ 34/ 29 Keyser Soze Anton Marsden 140 681 15 36/ 33/ 31 Blacken Ian Oversby 140 1227 16 41/ 43/ 16 Deep Freeze X Lukasz Grabun 139 169 17 42/ 44/ 14 Test C Phooey 139 107 18 43/ 46/ 11 G3-b David Moore 139 250 19 39/ 47/ 14 Dettol Test 10 Steve Gunnell 130 19 20 5/ 0/ 0 test v mj 14 3 21 2/ 98/ 0 test mj 7 0 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 04/01/02 Date: 2 Apr 2002 16:47:09 -0500 Message-ID: <200204010506.AAA02376@gevjon.ttsg.com> Weekly Status on 04/01/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Tue Mar 26 12:18:53 EST 2002 # %W/ %L/ %T Name Author Score Age 1 53/ 34/ 13 Fire and Ice II David Moore 172 3 2 33/ 21/ 47 KAT v5 Dave Hillis 144 35 3 38/ 36/ 27 Black Moods Ian Oversby 140 99 4 35/ 32/ 33 Controlled Aggression Ian Oversby 137 103 5 25/ 17/ 58 Katafutr Michal Janeczek 134 43 6 23/ 14/ 63 Kin John Metcalf 132 11 7 19/ 7/ 73 Evol Cap 4 X John Wilkinson 131 172 8 19/ 8/ 73 Denial David Moore 131 44 9 38/ 45/ 18 Greetings From Asbury Par JKW 130 63 10 27/ 25/ 48 Damage Inflicted Robert Macrae 129 42 11 33/ 37/ 31 Ogre Christian Schmidt 128 51 12 29/ 33/ 38 Big I.F.F.S. Dave Hillis 126 32 13 17/ 7/ 76 Evolve X v4.0 John Wilkinson 126 120 14 16/ 7/ 76 Black Box v1.1 JKW 125 66 15 22/ 20/ 58 Venom v0.2b Christian Schmidt 123 125 16 31/ 45/ 25 Pagan John K W 117 157 17 21/ 28/ 51 Disaster Area 2.8 Stefan Foerster 114 30 18 18/ 23/ 59 Purple v0.1 Christian Schmidt 114 124 19 26/ 39/ 35 La Vibra 19 Lukasz Grabun 113 1 20 24/ 36/ 40 test CS 112 60 21 11/ 39/ 50 35092-7762-eve2 bvowk 83 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 04/01/02 Date: 2 Apr 2002 16:48:33 -0500 Message-ID: <200204010503.AAA02323@gevjon.ttsg.com> Weekly Status on 04/01/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Fri Mar 8 21:49:35 EST 2002 # Name Author Score Age 1 fclear Brian Haskin 63 72 2 D-clearM Ken Espiritu 62 88 3 test John Metcalf 56 16 4 Her Majesty P.Kline 44 107 5 Tinyshot John Metcalf 31 1 6 Xord Monominer XOSC:01 Gino Oblena 30 27 7 8thTest Gino Oblena 28 19 8 clock strikes twelve John Metcalf 27 2 9 QuiVa John Metcalf 25 181 10 Pitbull Christian Schmidt 20 44 11 Glorious October Revoluti Beable van Polasm Subject: KOTH.ORG: Status - Standard 04/01/02 Date: 2 Apr 2002 16:56:05 -0500 Message-ID: <200204010500.AAA02269@gevjon.ttsg.com> Weekly Status on 04/01/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Tue Feb 26 04:22:56 EST 2002 # %W/ %L/ %T Name Author Score Age 1 44/ 37/ 18 Oneshot '88 John Metcalf 152 1 2 34/ 21/ 45 Freight Train David Moore 148 80 3 33/ 21/ 47 Test Alexander (Sasha) Wa 145 19 4 42/ 43/ 15 Foggy Swamp Beppe Bezzi 142 76 5 31/ 22/ 46 Guardian Ian Oversby 140 79 6 42/ 43/ 15 Blur '88 Anton Marsden 140 117 7 32/ 23/ 45 sIMPly.Red v0.95 Leonardo Humberto 140 37 8 33/ 30/ 37 vala John Metcalf 137 2 9 37/ 37/ 26 PacMan David Moore 136 109 10 36/ 38/ 26 Tangle Trap David Moore 134 153 11 37/ 41/ 23 Stasis David Moore 133 187 12 24/ 17/ 59 EV Paper John K Wilkinson 132 93 13 26/ 20/ 54 Jinglo John Metcalf 131 4 14 27/ 23/ 50 Shish-Ka-Bob Ben Ford 131 35 15 25/ 20/ 54 Test I Ian Oversby 131 136 16 31/ 32/ 37 Frog Sticker P.Kline 131 29 17 26/ 22/ 52 Evoltmp 88 John K W 130 130 18 35/ 42/ 23 Beholder's Eye V1.7 W. Mintardjo 128 355 19 37/ 47/ 16 Iron Gate Wayne Sheppard 128 405 20 37/ 48/ 15 ig Wayne Sheppard 126 7 21 0/ 44/ 56 Test Test 56 0 Message-ID: <3CAAB78B.9FB44BDA@bgb-consulting.com> From: Don Garrett Subject: Scoring anomoly Date: Wed, 03 Apr 2002 08:04:51 GMT I was fiddling with some scripts to try developing a warrior genetically, when I ran across some very odd scoring behavior from pmars. For testing, I built on warrior which loops forever, and another kills itself immediatly. idle.red and die.red. When only two warriors are competing, the behavior is as I would expect. However, when I add a third into the mix it doesn't act as I would expect. asimov$pmars-server -v portable MARS v0.8.5, 2/20/96, corewar simulator with ICWS'94 extensions Why would die.red ever score versus idle? asimov$pmars-server -r 100 idle.red die.red die.red Program "idle.red" (length 1) by "Anonymous" ORG START START JMP.B $ 0, $ 0 Program "die.red" (length 1) by "Anonymous" ORG START START DAT.F $ 0, $ 0 Program "die.red" (length 1) by "Anonymous" ORG START START DAT.F $ 0, $ 0 idle.red by Anonymous scores 400 Results: 0 100 0 0 die.red by Anonymous scores 132 Results: 0 33 0 67 die.red by Anonymous scores 268 Results: 0 67 0 33 -- Don Garrett http://www.bgb.cc/garrett/ BGB Consulting garrett@bgb.cc From: Planar Subject: Re: A corewar timeline Date: 3 Apr 2002 13:24:40 GMT Message-ID: >From: birk@andromeda.ociw.edu >> * Self-repair Five Musketeers (author?) > >Does anyone have the source code the this? Neither Koenigstuhl nor >Planar's archive list this warrior. This is *annoying*. I clearly remember running Five Musketeers on one of the older MacOS-based corewar simulators sometime around 1988. Now of course I can't find the file anywhere. If anyone has it, I would really like to get a copy. -- Planar From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: A corewar timeline Date: 3 Apr 2002 13:37:45 -0800 Message-ID: <92b0a3d6.0204031337.7748e785@posting.google.com> Planar wrote in message news: This is *annoying*. I clearly remember running Five Musketeers on one > of the older MacOS-based corewar simulators sometime around 1988. Now > of course I can't find the file anywhere. If anyone has it, I would > really like to get a copy. I don't seem to have it either. From the following link it must have been one of Jon Newman's programs. Probably never posted to rec.games.corewar but emailed on request, maybe also printed in the old newsletter. Maybe its on an old floppy at home. http://groups.google.com/groups?hl=en&selm=1992Jun15.002325.5396%40microsoft.com Self-repair, excluding imps, is a strategy in search of efficient code. Paul Kline pk6811s@acad.drake.edu From: dhillismail@netscape.net (Dave Hillis) Subject: Re: Scoring anomoly Date: 3 Apr 2002 19:33:00 -0800 Message-ID: <5d6847b2.0204031932.41864b2b@posting.google.com> Don Garrett wrote in message news:<3CAB7550.C10DC884@bgb-consulting.com>... > Lukasz Adamowski wrote: > > > > Beautiful! What version of pMARS do You use? > > > > Lukasz > > 0.8.5 > > But I just had a thought.... I compiled it myself, and turned on compiler > optimizations. This made a BIG boost in performance, which matters a lot for a > genetic algorithm that going to call to pmars repeatedly. > > Am I correct assuming that the scoring is not supposed to work this way? > > If I only have two warriors, it comes out like I would expect. Idle wins > versus Die (always). Die versus Die they both win half the rounds, Idle versus > Idle they both always tie. > > I just figured I was doing something really stupid. I think that version had "the bug": multiwarrior battles end when the number of warriors drops to 2 instead of 1. The latest version of pmars works properly. (Or you fix the version you have if you've already invested time modifying it.) Also, check out the "exhaust" mars simulator at http://www.cs.Helsinki.FI/u/jpihlaja/exhaust/exhaust.html Dave Hillis Message-ID: <3CAB7550.C10DC884@bgb-consulting.com> From: Don Garrett Subject: Re: Scoring anomoly Date: Wed, 03 Apr 2002 21:33:33 GMT Lukasz Adamowski wrote: > > Beautiful! What version of pMARS do You use? > > Lukasz 0.8.5 But I just had a thought.... I compiled it myself, and turned on compiler optimizations. This made a BIG boost in performance, which matters a lot for a genetic algorithm that going to call to pmars repeatedly. Am I correct assuming that the scoring is not supposed to work this way? If I only have two warriors, it comes out like I would expect. Idle wins versus Die (always). Die versus Die they both win half the rounds, Idle versus Idle they both always tie. I just figured I was doing something really stupid. -- Don Garrett http://www.bgb.cc/garrett/ BGB Consulting garrett@bgb.cc Message-ID: <3CABA6FB.60902@nowhere.com> From: Brett Greenfield Subject: Re: Scoring anomoly Date: Thu, 04 Apr 2002 01:02:17 GMT your pmars works fine, the reason the die.red is getting points is because the other die.red is dieing first giving points to the other for surviving longer. try making die vs die in a 2 warrior battle, notice one manages to score wins instead of all ties(as you may think), thats because pmars doesnt run warriors concurently. if this is a problem change the scoring formula to score for wins losses and ties only and not number remaining when killed. Message-ID: <3CABB0D5.EE7CE7E8@bgb-consulting.com> From: Don Garrett Subject: Re: Scoring anomoly Date: Thu, 04 Apr 2002 01:48:35 GMT Brett Greenfield wrote: > > your pmars works fine, the reason the die.red is getting points is > because the other die.red is dieing first giving points to the other for > surviving longer. try making die vs die in a 2 warrior battle, notice > one manages to score wins instead of all ties(as you may think), thats > because pmars doesnt run warriors concurently. > > if this is a problem change the scoring formula to score for wins losses > and ties only and not number remaining when killed. Okay, that explains it. I didn't realize that any points were being assigned based on how many were remaining when killed. Thanks! -- Don Garrett http://www.bgb.cc/garrett/ BGB Consulting garrett@bgb.cc From: Randy Graham Subject: Re: A corewar timeline Message-ID: Date: Thu, 04 Apr 2002 01:55:08 GMT On 3 Apr 2002 13:37:45 -0800, pk6811s@acad.drake.edu (P. Kline) wrote: >Planar wrote in message news: >> This is *annoying*. I clearly remember running Five Musketeers on one >> of the older MacOS-based corewar simulators sometime around 1988. Now >> of course I can't find the file anywhere. If anyone has it, I would >> really like to get a copy. > >I don't seem to have it either. From the following link it must have >been one of Jon Newman's programs. Probably never posted to >rec.games.corewar but emailed on request, maybe also printed in the >old newsletter. Maybe its on an old floppy at home. > >http://groups.google.com/groups?hl=en&selm=1992Jun15.002325.5396%40microsoft.com > >Self-repair, excluding imps, is a strategy in search of efficient code. You know, I finally thought of a self-repair strategy that I thought would work a few weeks ago while on vacation (and away from a computer). Of course, I didn't write it down, thinking I could remember it and try it when I got home. That didn't happen, and I hadn't thought of it until you posted this today. I really need to try to remember what it was. I don't know that it would work, but I remember coming up with some routing that would only take a few cycles (I think around 6-8 was what I'd estimated). Now if I can just get my brain working to come up with that strategy again. Drat, I hate when I do stupid things. >Paul Kline >pk6811s@acad.drake.edu RagManX http://www.gamingideas.com/ - an "I could make a better game" forum. Message-ID: <3CAC0A76.1688200@bgb-consulting.com> From: Don Garrett Subject: Re: Scoring anomoly Date: Thu, 04 Apr 2002 08:11:39 GMT > I think that version had "the bug": multiwarrior battles end when the > number of warriors drops to 2 instead of 1. The latest version of > pmars works properly. (Or you fix the version you have if you've > already invested time modifying it.) In the middle of trying to figure this out, I updatd to 0.8.6 with no change, running on both XP, and on Redhat 7.0. A post here from Brett Greenfield says that it's being caused by points being awarded for outliving some other warriors. pmars-server -b -r 1000 die.red die.red idle.red die.red by Anonymous scores 1332 Results: 0 333 0 667 die.red by Anonymous scores 2668 Results: 0 667 0 333 idle.red by Anonymous scores 4000 Results: 0 1000 0 0 I think I must be being bitten by the bug you describe, since idle.red is not being given credit for any solitary wins in the Results line. This is despite the fact that I updated to what I thought was the latest version 0.8.6. I'll go looking for the bug in question tomorrow. Is there a more current version that 0.8.6? PS: Exhaust looks interesting, but I didn't look at the programming interface. To make best use of it, I'd have to write a Python interface. Since this project was an excuse for learning Python, that might not be a bad thing. -- Don Garrett http://www.bgb.cc/garrett/ BGB Consulting garrett@bgb.cc From: pak21@cam.ac.uk (Philip Kendall) Subject: Re: Scoring anomoly Date: 4 Apr 2002 09:20:37 +0100 Message-ID: In article <3CAC0A76.1688200@bgb-consulting.com>, Don Garrett wrote: > >Is there a more current version that 0.8.6? https://sourceforge.net/projects/corewar/ Can somebody with appropriate permissions please update koth.org? Phil -- Philip Kendall http://www.srcf.ucam.org/~pak21/ From: "Martin Ankerl" Subject: Re: Scoring anomoly Date: Thu, 4 Apr 2002 10:32:57 +0200 Message-ID: > PS: > Exhaust looks interesting, but I didn't look at the programming interface. > To make best use of it, I'd have to write a Python interface. Since this > project was an excuse for learning Python, that might not be a bad thing. perhaps qmars http://qmars.martinankerl.cjb.net/ is easier to use with python, it should also be faster than pmars. have fun, Martin From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: A corewar timeline Date: 4 Apr 2002 11:27:09 -0800 Message-ID: <872a85cc.0204041127.2cf3143c@posting.google.com> > * Paper The first Paper I remember any mention of is Mice by Chip Wendell, from A.K. Dewdney's article about the first Corewars tourney, which also happened to win that tourney: ptr DAT #0 start MOV #12 ptr loop MOV @ptr <5 DJN loop @ptr SPL @3 ADD #653 2 JMZ -5 -6 DAT 833 I don't know (and doubt) it is the first ever real paper. Certainly one of the first successful ones though. Message-ID: <3CACE158.7463503C@bgb-consulting.com> From: Don Garrett Subject: Re: Scoring anomoly Date: Thu, 04 Apr 2002 23:27:40 GMT Philip Kendall wrote: > > In article <3CAC0A76.1688200@bgb-consulting.com>, > Don Garrett wrote: > > > >Is there a more current version that 0.8.6? > > https://sourceforge.net/projects/corewar/ > > Can somebody with appropriate permissions please update koth.org? > > Phil > If anyone is interested, I've produced RedHat RPMS for 0.9.2 based on Planar's older RPM version. If there is interest, I'll try to keep them current. They can be found here: http://www.bgb.cc/garrett/originals/pMars/ -- Don Garrett http://www.bgb.cc/garrett/ BGB Consulting garrett@bgb.cc From: M Joonas Pihlaja Subject: Re: A corewar timeline Date: 5 Apr 2002 19:36:14 -0500 Message-ID: On Mon, 1 Apr 2002, P. Kline wrote: > Brant had a lot of good ideas, hope he doesn't get credit > just for Wimp :-) One of those amusing coincidences: in the mars.tar.z archive on soda there's a program called whimp.rc (or W.H.Imp) which is nothing but a jmp 0. It's attributed to Wilmard Halfed and dates to 1988 at least. Not that that constitutes a wimp, exactly. :-) Joonas From: birk@andromeda.ociw.edu Subject: Re: A corewar timeline Date: 5 Apr 2002 19:43:44 -0500 Message-ID: <200204042316.g34NGXJ18186@andromeda.ociw.edu> > From: pagaltzis@gmx.de (Aristoteles Pagaltzis) > > * Paper > > The first Paper I remember any mention of is Mice by Chip Wendell, > from A.K. Dewdney's article about the first Corewars tourney, which > also happened to win that tourney: > > ptr DAT #0 > start MOV #12 ptr > loop MOV @ptr <5 > DJN loop @ptr > SPL @3 > ADD #653 2 > JMZ -5 -6 > DAT 833 > > I don't know (and doubt) it is the first ever real paper. Certainly > one of the first successful ones though. > This version does not perform very well. The copy I have on the ICWS-Koenigstuhl is on rank #76: ptr: DAT #12 prg: MOV #12, ptr loop: MOV @ptr, Subject: Re: Scoring anomoly Date: 5 Apr 2002 19:45:11 -0500 Message-ID: On Wed, 3 Apr 2002, Don Garrett wrote: [...] > asimov$pmars-server -r 100 idle.red die.red die.red > Program "idle.red" (length 1) by "Anonymous" > > ORG START > START JMP.B $ 0, $ 0 > > Program "die.red" (length 1) by "Anonymous" > > ORG START > START DAT.F $ 0, $ 0 > > Program "die.red" (length 1) by "Anonymous" > > ORG START > START DAT.F $ 0, $ 0 > > idle.red by Anonymous scores 400 > Results: 0 100 0 0 > die.red by Anonymous scores 132 > Results: 0 33 0 67 > die.red by Anonymous scores 268 > Results: 0 67 0 33 [...] Beautiful! What version of pMARS do You use? Lukasz From: Paul-V Khuong Subject: Re: A corewar timeline Date: 5 Apr 2002 19:52:39 -0500 Message-ID: <20020403004048.95984.qmail@web11602.mail.yahoo.com> --- Ian Oversby wrote: > Hi, > > Thanks for the input. This is what I have so far. > It seems to be > almost ready for me to add some commentary to the > result of each > invention (or at least the results I am aware of!). Comments inline. > Ian > > * Bomber A. K. Dewdney > * CMP-Scanner Robert Reed III > * B-Scanner > * Paper mice.red? > * Self-repair > * PMARS Stefan Strack et al. > * Vampire Eugene P. Lilitko > * Bomber with > optimal step Erh, the very idea of optimal steps would be good too. > * Core-clear > * Wimp Brant Thompson > * Two-pass coreclear Mintardjo > * Stone / Paper Matt Hastings > * Imp Rings Anders Ivner > * Imp / Stone Dan Nabutovsky > * Gate-busting imps Paul Kline > * One-shot scanner Paul Kline > * QScan Paul Kline > * Incendiary bomber Paul Kline > * Silk / Timescape Juha Pohjalainen > * Tornado bomber Beppe Bezzi > * Imp-paper Paul Kline > * Intelligence bombs Anders Ivner > * Spiral Clear John K Wilkinson > * Handshaking Kurt Franke > * Optimised QScan Anders Ivner / Anton Marsden > * RetroQ Paul Kline > * Mirage Scanner Anton Marsden > * Blur Scanner Anton Marsden > * Fast P-switcher Anton Marsden > * DClear Bjoern Guenzel > * He Scans Alone Paul Kline Self modifying codes for the stepping. It's very narrow, but it is seeing use not only in bombers, but also in scanner(s). ("THE" 3 line stone and zoooom) Intelligence bombs... Is it such an important concept? I know it's better to be inclusive than exclusive, but still. CIA was oen warrior, with a ncie concept, but did it really affect the world of corewar that much? Paul __________________________________________________ Do You Yahoo!? Yahoo! Tax Center - online filing with TurboTax http://taxes.yahoo.com/ From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: A corewar timeline Date: 6 Apr 2002 01:54:07 -0800 Message-ID: <872a85cc.0204060154.28b3736a@posting.google.com> birk@andromeda.ociw.edu wrote in message > > ADD #653 2 > ADD #635, copy This is the only at all significant difference I can find. From: metcalf@uboot.com (John Metcalf) Subject: Re: A corewar timeline Date: 6 Apr 2002 05:44:06 -0800 Message-ID: Greetings... > > DJN loop @ptr > DJN loop, ptr This is the difference which is causing the big variation in score. The lower is correct (I am just looking at the Scientific American article now). The correct step is 653, not 635. Regards, John PS - results & Core Warrior in just a few days! From: waknuk@yahoo.com (Philip Thorne) Subject: Re: Christoph's :) page Date: 6 Apr 2002 10:41:26 -0800 Message-ID: <4ee41bd6.0204061041.75fe8442@posting.google.com> Lukasz Grabun wrote in message news:... > is it just me or the Koenigstuhl is unavailable? I couldn't get in last night [or now] Cristoph's not been including the url in his sig recently. From: Lukasz Grabun Subject: IRC meeting Date: Sat, 6 Apr 2002 11:25:41 +0000 (UTC) Message-ID: I'll probably be on irc.koth tomorrow for the whole day. Anyone for a chat? -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: Lukasz Grabun Subject: Christoph's :) page Date: Sat, 6 Apr 2002 13:20:55 +0000 (UTC) Message-ID: is it just me or the Koenigstuhl is unavailable? -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: Christoph Birk Subject: Koenigstuhl Date: 7 Apr 2002 18:20:09 -0400 Message-ID: <200204072141.OAA05166@andromeda.ociw.edu> Sorry, due to some technical problems the Koenigstuhl is temporarily unavailable. I hope it will be back online early next wee. Christoph From: Lukasz Grabun Subject: Re: Christoph's :) page Date: Sun, 7 Apr 2002 19:17:41 +0000 (UTC) Message-ID: sob, 06 kwi 2002 o 18:41 GMT, Philip Thorne: > Lukasz Grabun wrote in message news:... >> is it just me or the Koenigstuhl is unavailable? > I couldn't get in last night [or now] > Cristoph's not been including the url in his sig recently. that would be most unconvienent since one needs some warriors unusual hills (LP in this case, large core). oh and btw: sorry for the irc session, Phil. Got some problems with my PC. -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: Donnyboy8@aol.com (Don) Subject: EVERYONE PLEASE READ Date: 7 Apr 2002 22:03:06 -0700 Message-ID: Hey Everyone. I started a new online store I would appreciate it if everyone would stop in and take a look around. I sell high quality merchandise at reasonable prices. Some of the item you just can'y find in stores. http://www.aroundthehouse.bigstep.com aroundthehouse - Home - High quality low priced items for you or as gifts Thanks so much for taking a look ..... I can't tell you how much I appreciate it. Please pass it along to your friends and family Don Message-ID: <3CB0F28E.8090103@nowhere.com> From: Brett Greenfield Subject: a little hill program i made a while ago Date: Mon, 08 Apr 2002 01:26:02 GMT here is my own koth style hill program so you all dont have to wait from results from the server for testing your warriors use it all you want, just tell me if you like it you should be able to copy and paste it, hopfully word wrap won't break it, also i found a similar progam in basic reacently and cooincedently it uses a hill.dat file just like mine if you have this other hill program use it someplace else it is not compatible with mine, and it will break the hill if the hill gets broken just delete the hill.dat file ' THIS PROGRAM IS COPYRIGHT (C) 1998 BY BRETT GREENFIELD ' PLACE THIS PROGRAM IN THE SAME DIRECTORY AS ' PMARS AND YOUR WARRIORS FOR ' BEST RESULTS ' THIS PROGRAM REQUIRES QBASIC AND PMARS ' THIS PROGRAM MAY BE COPIED AND DISTRIBUTED FREELY ' THIS PROGRAM IS BASED ON THE COREWAR HILLS ON THE PIZZA AND STORMKING ' WEB SITES ' IF YOU COPY OR MODIFY THIS PROGRAM ' YOU MUST MAINTAIN THE ORIGINAL COPYRIGHT ' IF YOU MODIFY THIS PROGRAM ' YOU MAY ADD A FEW LINES SIMILAR TO THE FOLLOWING ' UNDER MY COPYRIGHT ' MODIFIED BY ... ' CHANGES MADE ' IMPROVED ... ' FIXED ... ' ADDED ... ' ECT ... ' THIS PROGRAM USES FILES HILL.DAT AND BATTLE.TMP FOR STORAGE ' AND NEEDS TO USE PMARS FOR SCORING PMARS$ = "PMARS -b -r 100" 'PATH AND ROUNDS SETUP ' THE -b IS REQUIRED BUT YOU MAY CHANGE ' THE NUMBER OF ROUNDS AND/OR ADD A PATH. ' FOR EXAMPLE ' PMARS$="D:\COREWARS\PMARS -b -r 50" CLS : SCREEN 0: WIDTH 80, 43: DEFINT A-Z: OPTION BASE 1 SHAP$ = ">BATTLE.TMP": ON ERROR GOTO ERRH DIM CWTB(26, 26), CWFN$(26), CWAG(26), PRP$(26), PLC(26), WFD(26) 1 ERS = 0: OPEN "HILL.DAT" FOR INPUT AS #1 IF ERS = 0 THEN 2 PRINT "CREATING NEW HILL": GOSUB KEYP: CLS ERS = 0: CLOSE : OPEN "HILL.DAT" FOR OUTPUT AS #2 IF ERS <> 0 THEN PRINT "ERROR: CAN'T ACCESS HILL.DAT": END PRINT #2, 0: CLOSE #2 IF ERS <> 0 THEN PRINT "ERROR: CAN'T READ/WRITE HILL.DAT": END GOTO 1 2 INPUT #1, NUMW: FOR A = 1 TO NUMW: INPUT #1, PLC(A): INPUT #1, CWFN$(A) INPUT #1, PRP$(A): FOR B = 1 TO 26: INPUT #1, CWTB(A, B): NEXT B INPUT #1, CWAG(A): NEXT A CLOSE #1: HCHNG = 0 10 CLS : PRINT : PRINT "1. VIEW HILL": PRINT "2. CHALLENGE HILL" PRINT "3. RESCORE WARRIOR": PRINT "4. KILL WARRIOR" PRINT "5. INFO ON WARRIOR" PRINT "6. QUIT": PRINT : INPUT NIN: GOSUB SORT IF NIN < 1 OR NIN > 6 THEN 10 ON NIN GOSUB 20, 30, 40, 50, 60, FIN GOTO 10 20 CLS : IF NUMW = 0 THEN PRINT : PRINT " THE HILL IS EMPTY": GOTO KEYP PRINT "|PLACE| NAME | AUTHOR | SCORE | AGE" PRINT "|-----|----------------|--------------|-------|-----" FOR C = 1 TO NUMW: A = WFD(C): PRINT USING "| ### |"; PLC(A); : TMP = 0 PRINT USING "\ \|"; PRP$(A); : FOR B = 1 TO 26 TMP = TMP + CWTB(A, B): NEXT B: PRINT USING " ##### | ####"; TMP; CWAG(A) NEXT C: IF NIN = 1 THEN GOTO KEYP RETURN 30 CLS : PRINT : PRINT "ENTER FILE NAME "; 31 ERS = 0: INPUT CFN$ 32 IF CFN$ = "" THEN RETURN OPEN CFN$ FOR INPUT AS #1 CLOSE #1: IF ERS = 0 THEN 33 PRINT : PRINT "ERROR #"; FOG: GOSUB KEYP: CLS PRINT : PRINT "ENTER FILE NAME OR PRESS ENTER TO CANCEL "; : GOTO 31 33 HCHNG = 1: IF NUMW < 26 THEN NUMW = NUMW + 1: MPC = NUMW: GOTO 34 MPC = WFD(26) 34 CWFN$(MPC) = CFN$: CWAG(MPC) = 0: FOR B = 1 TO 26: CWTB(MPC, B) = 0 NEXT B: OPEN CFN$ FOR INPUT AS #1: ERS = 0: FL1 = 0: FL2 = 0 NAM$ = "Unknown" ATH$ = "Anonymous": TAG$ = " " WHILE ERS = 0 AND (FL1 = 0 OR FL2 = 0) WHILE INPUT$(1, 1) <> ";": WEND: FOR A = 1 TO 4: TMP$ = INPUT$(1, 1) IF TMP$ >= "a" AND TMP$ <= "z" THEN TMP$ = CHR$(ASC(TMP$) - 32) MID$(TAG$, A, 1) = TMP$: NEXT A IF TAG$ = "NAME" THEN LINE INPUT #1, TMP$: NAM$ = LEFT$(LTRIM$(TMP$), 16): FL1 = 1 IF TAG$ = "AUTH" THEN WHILE INPUT$(1, 1) <> " ": WEND: LINE INPUT #1, TMP$: ATH$ = LEFT$(LTRIM$(TMP$), 14): FL2 = 1 WEND: PRP$(MPC) = SPACE$(31): MID$(PRP$(MPC), 17, 1) = "|" MID$(PRP$(MPC), 1, 16) = NAM$: MID$(PRP$(MPC), 18, 14) = ATH$ PLC(MPC) = 26: WFD(26) = MPC: CLOSE #1: GOTO FIGHT 40 CLS IF NUMW = 0 THEN PRINT : PRINT "NO WARRIORS TO RESCORE": GOTO KEYP GOSUB 20: PRINT : PRINT "SELECT A WARRIOR TO RESCORE (0=CANCEL)" INPUT NIN: IF NIN = 0 THEN RETURN IF NIN < 1 OR NIN > NUMW THEN 40 CFN$ = CWFN$(WFD(NIN)): GOSUB 51: GOSUB SORT IF NUMW < 26 THEN B = NUMW: WHILE CFN$ <> CWFN$(WFD(B)): B = B - 1: WEND MPC = WFD(B) ELSE MPC = WFD(26) END IF: GOTO 34 50 CLS : IF NUMW = 0 THEN PRINT : PRINT "NO WARRIORS TO KILL": GOTO KEYP GOSUB 20: PRINT : PRINT "SELECT A WARRIOR TO KILL (0=CANCEL)" INPUT NIN: IF NIN = 0 THEN RETURN IF NIN < 1 OR NIN > NUMW THEN 50 51 FOR B = 1 TO 26: CWTB(WFD(NIN), B) = 0: NEXT B FOR C = 1 TO NUMW: CWTB(C, WFD(NIN)) = 0: NEXT C HCHNG = 1: RETURN 60 CLS : IF NUMW = 0 THEN PRINT : PRINT "HILL IS EMPTY": GOTO KEYP GOSUB 20: PRINT : PRINT "SELECT A WARROR TO DISPLAY (0=CANCEL)" INPUT NIN: IF NIN = 0 THEN RETURN IF NIN < 1 OR NIN > NUMW THEN 60 CLS PRINT " | NAME | AUTHOR | FILE NAME" PRINT "---------------------|----------------|--------------|-----------" PRINT USING "WARRIOR NUMBER ### |"; NIN; PRINT USING "\ \|"; PRP$(WFD(NIN)); PRINT CWFN$(WFD(NIN)) PRINT "=====================|================|==============|===========" FOR B = 1 TO 26 IF (WFD(NIN) <> B) AND (CWFN$(B) <> "") THEN PRINT "SCORED"; PRINT USING " ##### "; CWTB(WFD(NIN), B); PRINT "AGAINST |"; PRINT USING "\ \|"; PRP$(B); PRINT CWFN$(B); "." END IF NEXT B: GOTO KEYP FIN: IF HCHNG = 0 THEN END CLS : WHILE INKEY$ <> "": WEND PRINT : PRINT "SAVE CHANGES Y/N "; SS$ = "": WHILE SS$ = "": SS$ = INKEY$: WEND IF SS$ = "n" OR SS$ = "N" THEN PRINT "NO": END PRINT "YES": PRINT : PRINT " SAVING CHANGES..."; ERS = 0: OPEN "HILL.DAT" FOR OUTPUT AS #2 PRINT #2, NUMW: FOR A = 1 TO NUMW: PRINT #2, PLC(A): PRINT #2, CWFN$(A) PRINT #2, PRP$(A): FOR B = 1 TO 26: PRINT #2, CWTB(A, B): NEXT B PRINT #2, CWAG(A): NEXT A CLOSE #2: HCHNG = 0: IF ERS <> 0 THEN PRINT "ERROR": PRINT END ERRH: NIN = 0: ERS = 1: FOG = ERR: RESUME NEXT KEYP: WHILE INKEY$ <> "": WEND PRINT : PRINT " PRESS ANY KEY TO CONTINUE ..." WHILE INKEY$ = "": WEND: RETURN FIGHT: CLS : CFN = WFD(26): FOR A = 1 TO NUMW IF A = CFN THEN GOTO EFIGHT PRINT LEFT$(PRP$(CFN), 16) + " VS " + LEFT$(PRP$(A), 16) BLD$ = SPACE$(LEN(PMARS$) + LEN(CWFN$(CFN)) + LEN(CWFN$(A)) + LEN(SHAP$) + 3) MID$(BLD$, 1, LEN(PMARS$)) = PMARS$ MID$(BLD$, LEN(PMARS$) + 2, LEN(CWFN$(CFN))) = CWFN$(CFN) MID$(BLD$, LEN(PMARS$) + LEN(CWFN$(CFN)) + 3, LEN(CWFN$(A))) = CWFN$(A) MID$(BLD$, LEN(BLD$) - LEN(SHAP$) + 1, LEN(SHAP$)) = SHAP$ SHELL BLD$: ERS = 0: OPEN "BATTLE.TMP" FOR INPUT AS #1 LINE INPUT #1, SC1$ LINE INPUT #1, SC2$: CLOSE #1: IF ERS <> 0 THEN GOTO EFIGHT PRINT SC1$: PRINT SC2$: SC1$ = RTRIM$(SC1$): SC2$ = RTRIM$(SC2$) LTRM = LEN(SC1$) - 1: WHILE MID$(SC1$, LTRM, 1) <> " ": LTRM = LTRM - 1 WEND SC1 = VAL(RIGHT$(SC1$, LEN(SC1$) - LTRM)): CWTB(CFN, A) = SC1 LTRM = LEN(SC2$) - 1: WHILE MID$(SC2$, LTRM, 1) <> " ": LTRM = LTRM - 1 WEND SC2 = VAL(RIGHT$(SC2$, LEN(SC2$) - LTRM)): CWTB(A, CFN) = SC2 CWAG(A) = CWAG(A) + 1 EFIGHT: NEXT A: IF NUMW = 1 THEN RETURN ELSE GOTO KEYP SORT: FOR A = 1 TO NUMW: PLC(A) = 0: NEXT A: HSW = 0 FOR A = 1 TO NUMW: HSC = -999: FOR B = 1 TO NUMW: CSC = 0 IF PLC(B) = 0 THEN FOR C = 1 TO 26: CSC = CSC + CWTB(B, C): NEXT C ELSE CSC = -999 IF CSC > HSC THEN HSC = CSC: HSW = B NEXT B: PLC(HSW) = A: WFD(A) = HSW: NEXT A: RETURN From: Christoph Birk Subject: Re: Koenigstuhl Date: 8 Apr 2002 15:58:04 -0400 Message-ID: <200204081947.MAA08478@andromeda.ociw.edu> The Koenigstuhl is up again! Christoph http://www.ociw.edu/~birk/COREWAR/koenigstuhl.html From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 04/08/02 Date: 8 Apr 2002 16:48:01 -0400 Message-ID: <200204080409.AAA19824@gevjon.ttsg.com> Weekly Status on 04/08/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Wed Apr 3 13:20:21 EST 2002 # %W/ %L/ %T Name Author Score Age 1 43/ 37/ 20 Hazy Lazy ... again Steve Gunnell 148 23 2 36/ 24/ 40 Inky Ian Oversby 147 467 3 33/ 21/ 46 Purifier Lukasz Grabun 145 24 4 42/ 40/ 18 Vanquisher Lukasz Grabun 144 79 5 32/ 20/ 49 nPaper II Paul-V Khuong 143 988 6 33/ 23/ 44 Son of Vain Oversby/Pihlaja 142 577 7 32/ 25/ 43 Hopper Phooey 140 114 8 33/ 28/ 39 Olivia Ben Ford 138 716 9 34/ 29/ 37 Quicksilver Michal Janeczek 138 750 10 33/ 28/ 38 Uninvited John Metcalf 138 670 11 40/ 43/ 17 Behemot Michal Janeczek 137 811 12 40/ 44/ 16 Deep Freeze X Lukasz Grabun 135 177 13 41/ 47/ 12 G3-b David Moore 135 258 14 34/ 33/ 33 Blacken Ian Oversby 134 1235 15 34/ 35/ 31 Keyser Soze Anton Marsden 134 689 16 37/ 40/ 23 Blue test 3 Lukasz Grabun 133 9 17 40/ 47/ 13 Test C Phooey 133 115 18 31/ 29/ 40 Revival Fire P.Kline 133 456 19 36/ 52/ 13 Aoshi Test B 15 Steve Gunnell 120 2 20 34/ 56/ 9 Hazy Test A 25 Steve Gunnell 112 1 21 20/ 34/ 46 Ice Joshua 107 0 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 04/08/02 Date: 8 Apr 2002 16:49:26 -0400 Message-ID: <200204080406.AAA19773@gevjon.ttsg.com> Weekly Status on 04/08/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Tue Apr 2 16:22:24 EST 2002 # %W/ %L/ %T Name Author Score Age 1 53/ 34/ 13 Fire and Ice II David Moore 172 3 2 31/ 21/ 48 KAT v5 Dave Hillis 142 35 3 35/ 32/ 33 Controlled Aggression Ian Oversby 139 103 4 37/ 36/ 27 Black Moods Ian Oversby 138 99 5 26/ 16/ 58 Katafutr Michal Janeczek 135 43 6 29/ 25/ 46 Damage Inflicted Robert Macrae 134 42 7 23/ 14/ 63 Kin John Metcalf 132 11 8 20/ 8/ 72 Denial David Moore 131 44 9 19/ 7/ 73 Evol Cap 4 X John Wilkinson 131 172 10 38/ 45/ 17 Greetings From Asbury Par JKW 131 63 11 33/ 37/ 30 Ogre Christian Schmidt 128 51 12 29/ 33/ 38 Big I.F.F.S. Dave Hillis 126 32 13 16/ 7/ 77 Evolve X v4.0 John Wilkinson 125 120 14 16/ 7/ 77 Black Box v1.1 JKW 124 66 15 22/ 20/ 58 Venom v0.2b Christian Schmidt 123 125 16 19/ 23/ 58 Purple v0.1 Christian Schmidt 115 124 17 21/ 28/ 51 Disaster Area 2.8 Stefan Foerster 114 30 18 30/ 46/ 25 Pagan John K W 114 157 19 26/ 39/ 35 La Vibra 19 Lukasz Grabun 112 1 20 24/ 37/ 39 test CS 112 60 21 14/ 40/ 46 68675-7709-eve2 bvowk 88 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 04/08/02 Date: 8 Apr 2002 16:50:50 -0400 Message-ID: <200204080403.AAA19742@gevjon.ttsg.com> Weekly Status on 04/08/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Fri Mar 8 21:49:35 EST 2002 # Name Author Score Age 1 fclear Brian Haskin 63 72 2 D-clearM Ken Espiritu 62 88 3 test John Metcalf 56 16 4 Her Majesty P.Kline 44 107 5 Tinyshot John Metcalf 31 1 6 Xord Monominer XOSC:01 Gino Oblena 30 27 7 8thTest Gino Oblena 28 19 8 clock strikes twelve John Metcalf 27 2 9 QuiVa John Metcalf 25 181 10 Pitbull Christian Schmidt 20 44 11 Glorious October Revoluti Beable van Polasm Subject: KOTH.ORG: Status - Standard 04/08/02 Date: 8 Apr 2002 16:52:15 -0400 Message-ID: <200204080400.AAA19694@gevjon.ttsg.com> Weekly Status on 04/08/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Tue Feb 26 04:22:56 EST 2002 # %W/ %L/ %T Name Author Score Age 1 44/ 37/ 18 Oneshot '88 John Metcalf 152 1 2 34/ 21/ 45 Freight Train David Moore 148 80 3 33/ 21/ 47 Test Alexander (Sasha) Wa 145 19 4 42/ 43/ 15 Foggy Swamp Beppe Bezzi 142 76 5 31/ 22/ 46 Guardian Ian Oversby 140 79 6 42/ 43/ 15 Blur '88 Anton Marsden 140 117 7 32/ 23/ 45 sIMPly.Red v0.95 Leonardo Humberto 140 37 8 33/ 30/ 37 vala John Metcalf 137 2 9 37/ 37/ 26 PacMan David Moore 136 109 10 36/ 38/ 26 Tangle Trap David Moore 134 153 11 37/ 41/ 23 Stasis David Moore 133 187 12 24/ 17/ 59 EV Paper John K Wilkinson 132 93 13 26/ 20/ 54 Jinglo John Metcalf 131 4 14 27/ 23/ 50 Shish-Ka-Bob Ben Ford 131 35 15 25/ 20/ 54 Test I Ian Oversby 131 136 16 31/ 32/ 37 Frog Sticker P.Kline 131 29 17 26/ 22/ 52 Evoltmp 88 John K W 130 130 18 35/ 42/ 23 Beholder's Eye V1.7 W. Mintardjo 128 355 19 37/ 47/ 16 Iron Gate Wayne Sheppard 128 405 20 37/ 48/ 15 ig Wayne Sheppard 126 7 21 0/ 44/ 56 Test Test 56 0 From: oversby@hotmail.com (Ian Oversby) Subject: Re: A corewar timeline Date: 10 Apr 2002 10:40:56 -0700 Message-ID: <21fc098d.0204100940.6c884368@posting.google.com> Okay, I've had a couple of really good pointers from T. Hsu and Martin Ankerl, cheers guys. I will follow them up and post an update in a few days. Ian Message-ID: From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 10 Apr 2002 11:49:30 GMT Archive-name: games/corewar-faq Last-Modified: September 4, 1999 Version: 4.2 URL: http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Copyright: (c) 1999 Anton Marsden Maintainer: Anton Marsden Posting-Frequency: once every 2 weeks Core War Frequently Asked Questions (rec.games.corewar FAQ) These are the Frequently Asked Questions (and answers) from the Usenet newsgroup rec.games.corewar. A plain text version of this document is posted every two weeks. The latest hypertext version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html and the latest plain text version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.txt. This document is currently being maintained by Anton Marsden (anton@paradise.net.nz). Last modified: Sat Sep 4 00:22:22 NZST 1999 ------------------------------------------------------------------------ To Do * Add the new No-PSpace '94 hill location * Add online location of Dewdney's articles * Make question 17 easier to understand. Add a state diagram? * Add info about infinite hills, related games (C-Robots, Tierra?, ...) * New question: How do I know if my warrior is any good? Refer to beginners' benchmarks, etc. * Add a Who's Who list? * Would very much like someone to compile a collection of the "revolutionary" warriors so that beginners can see how the game has developed over the years. Mail me if interested. ------------------------------------------------------------------------ What's New * Changed primary location of FAQ (again!) * Changed Philip Kendall's home page address. * Updated list server information * Changed primary location of FAQ * Vector-launching code was fixed thanks to Ting Hsu. * Changed the location of Ryan Coleman's paper (LaunchPad -> Launchpad) * Changed pauillac.inria.fr to para.inria.fr ------------------------------------------------------------------------ Table of Contents 1. What is Core War 2. Is it "Core War" or "Core Wars"? 3. Where can I find more information about Core War? 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? 5. What is ICWS'94? Which simulators support ICWS'94? 6. What is the ICWS? 7. What is Core Warrior? 8. Where are the Core War archives? 9. Where can I find a Core War system for ...? 10. Where can I find warrior code? 11. I do not have FTP. How do I get all this great stuff? 12. I do not have access to Usenet. How do I post and receive news? 13. Are there any Core War related WWW sites? 14. What is KotH? How do I enter? 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 16. How does SLT (Skip if Less Than) work? 17. What is the difference between in-register and in-memory evaluation? 18. What is P-space? 19. What does "Missing ;assert .." in my message from KotH mean? 20. How should I format my code? 21. Are there any other Core War related resources I should know about? 22. What does (expression or term of your choice) mean? 23. Other questions? ------------------------------------------------------------------------ 1. What is Core War? Core War is a game played by two or more programs (and vicariously by their authors) written in an assembly language called Redcode and run in a virtual computer called MARS (for Memory Array Redcode Simulator). The object of the game is to cause all processes of the opposing program to terminate, leaving your program in sole posession of the machine. There are Core War systems available for most computer platforms. Redcode has been standardised by the ICWS, and is therefore transportable between all standard Core War systems. The system in which the programs run is quite simple. The core (the memory of the simulated computer) is a continuous array of instructions, empty except for the competing programs. The core wraps around, so that after the last instruction comes the first one again. There are no absolute addresses in Core War. That is, the address 0 doesn't mean the first instruction in the memory, but the instruction that contains the address 0. The next instruction is 1, and the previous one obviously -1. However, all numbers are treated as positive, and are in the range 0 to CORESIZE-1 where CORESIZE is the amount of memory locations in the core - this means that -1 would be treated as CORESIZE-1 in any arithmetic operations, eg. 3218 + 7856 = (3218 + 7856) mod CORESIZE. Many people get confused by this, and it is particularly important when using the SLT instruction. Note that the source code of a program can still contain negative numbers, but if you start using instructions like DIV #-2, #5 it is important to know what effect they will have when executed. The basic unit of memory in Core War is one instruction. Each Redcode instruction contains three parts: * the opcode * the source address (a.k.a. the A-field) * the destination address (a.k.a. the B-field) The execution of the programs is equally simple. The MARS executes one instruction at a time, and then proceeds to the next one in the memory, unless the instruction explicitly tells it to jump to another address. If there is more than one program running, (as is usual) the programs execute alternately, one instruction at a time. The execution of each instruction takes the same time, one cycle, whether it is MOV, DIV or even DAT (which kills the process). Each program may have several processes running. These processes are stored in a task queue. When it is the program's turn to execute an instruction it dequeues a process and executes the corresponding instruction. Processes that are not killed during the execution of the instruction are put back into the task queue. Processes created by a SPL instruction are added to the task queue after the creating process is put back into the task queue. [ToC] ------------------------------------------------------------------------ 2. Is it "Core War" or "Core Wars"? Both terms are used. Early references were to Core War. Later references seem to use Core Wars. I prefer "Core War" to refer to the game in general, "core wars" to refer to more than one specific battle. [ToC] ------------------------------------------------------------------------ 3. Where can I find more information about Core War? Core War was first described in the Core War Guidelines of March, 1984 by D. G. Jones and A. K. Dewdney of the Department of Computer Science at The University of Western Ontario (Canada). Dewdney wrote several "Computer Recreations" articles in Scientific American which discussed Core War, starting with the May 1984 article. Those articles are contained in two anthologies: Library of Author Title Published ISBN Congress Call Number The Armchair Dewdney, Universe: An New York: W. QA76.6 .D517 A. K. Exploration of H. Freeman �0-7167-1939-8 1988 Computer Worlds 1988 The Magic 0-7167-2125-2 Dewdney, Machine: A New York: W.(Hardcover), QA76.6 A. K. Handbook of H. Freeman �0-7167-2144-9 .D5173 1990 Computer Sorcery 1990 (Paperback) A.K. Dewdney's articles are still the most readable introduction to Core War, even though the Redcode dialect described in there is no longer current. For those who are interested, Dewdney has a home page at http://www.csd.uwo.ca/faculty/akd/. [ToC] ------------------------------------------------------------------------ 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? A draft of the official standard (ICWS'88) is available as ftp://www.koth.org/corewar/documents/standards/redcode-icws-88.Z. This document is formatted awkwardly and contains ambiguous statements. For a more approachable intro to Redcode, take a look at Mark Durham's tutorials, ftp://www.koth.org/corewar/documents/tutorial.1.Z and ftp://www.koth.org/corewar/documents/tutorial.2.Z. Steven Morrell has prepared a more practically oriented Redcode tutorial that discusses different warrior classes with lots of example code. This and various other tutorials can be found at http://www.koth.org/papers.html. Even though ICWS'88 is still the "official" standard, you will find that most people are playing by ICWS'94 draft rules and extensions. [ToC] ------------------------------------------------------------------------ 5. What is ICWS'94? Which simulators support ICWS'94? There is an ongoing discussion about future enhancements to the Redcode language. A proposed new standard, dubbed ICWS'94, is currently being evaluated. A major change is the addition of "instruction modifiers" that allow instructions to modify A-field, B-field or both. Also new is a new addressing modes and unrestricted opcode and addressing mode combination ("no illegal instructions"). ICWS'94 is backwards compatible; i.e. ICWS'88 warriors will run correctly on an ICWS'94 system. Take a look at the ICWS'94 draft at ftp://www.koth.org/corewar/documents/icws94.0202.Z for more information. There is a HTML version of this document available at http://www.koth.org/info/icws94.html. You can try out the new standard by submitting warriors to the '94 hills of the KotH servers. Two corewar systems currently support ICWS'94, pMARS (many platforms) and Redcoder (Mac), both available at ftp://www.koth.org/corewar. Note that Redcoder only supports a subset of ICWS'94. [ToC] ------------------------------------------------------------------------ 6. What is the ICWS? About one year after Core War first appeared in Scientific American, the "International Core War Society" (ICWS) was established. Since that time, the ICWS has been responsible for the creation and maintenance of Core War standards and the running of Core War tournaments. There have been six annual tournaments and two standards (ICWS'86 and ICWS'88). The ICWS is no longer active. [ToC] ------------------------------------------------------------------------ 7. What is Core Warrior? Following in the tradition of the Core War News Letter, Push Off, and The 94 Warrior, Core Warrior is a newsletter about strategies and current standings in Core War. Started in October 1995, back issues of Core Warrior (and the other newsletters) are available at http://para.inria.fr/~doligez/corewar/. There is also a Core Warrior index page at http://www.kendalls.demon.co.uk/pak21/corewar/warrior.html which has a summary of the contents of each issue of Core Warrior. Many of the earlier issues contain useful information for beginners. [ToC] ------------------------------------------------------------------------ 8. Where are the Core War archives? Many documents such as the guidelines and the ICWS standards along with previous tournament Redcode entries and complete Core War systems are available via anonymous ftp from ftp://ftp.csua.berkeley.edu/pub/corewar. Also, most of past rec.games.corewar postings (including Redcode source listings) are archived there. Jon Blow (blojo@csua.berkeley.edu) is the archive administrator. When uploading to /pub/corewar/incoming, ask Jon to move your upload to the appropriate directory and announce it on the net. This site is mirrored at: * http://www.koth.org/corewar/ * ftp://www.koth.org/corewar/ * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror The plain text version of this FAQ is automatically archived by news.answers (but this version is probably out-of-date). [ToC] ------------------------------------------------------------------------ 9. Where can I find a Core War system for . . . ? Core War systems are available via anonymous FTP from www.koth.org in the corewar/systems directory. Currently, there are UNIX, IBM PC-compatible, Macintosh, and Amiga Core War systems available there. It is a good idea to check ftp://www.koth.org/corewar/incoming for program updates first. CAUTION! There are many, many Core War systems available which are NOT ICWS'88 (or even ICWS'86) compatible available at various archive sites other than www.koth.org. Generally, the older the program - the less likely it will be ICWS compatible. If you are looking for an ICWS'94 simulator, get pMARS, which is available for many platforms and can be downloaded from: * ftp://ftp.csua.berkeley.edu/pub/corewar (original site) * ftp://www.koth.org/corewar (koth.org mirror) * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror (Planar mirror) * http://www.nc5.infi.net/~wtnewton/corewar/ (Terry Newton) * ftp://members.aol.com/ofechner/corewar (Fechter) Notes: * If you have trouble running pMARS with a graphical display under Win95 then check out http://www.koth.org/pmars.html which should have a pointer to the latest compilation of pMARS for this environment. * RPMs for the Alpha, PowerPC, Sparc and i386 can be found at ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars-rpm/ Reviews of Core War systems would be greatly appreciated in the newsgroup and in the newsletter. Below is a not necessarily complete or up-to-date list of what's available at www.koth.org: MADgic41.lzh corewar for the Amiga, v4.1 MAD4041.lzh older version? MAD50B.lha corewar for the Amiga, beta version 5.0 Redcoder-21.hqx corewar for the Mac, supports ICWS'88 and '94 (without extensions) core-11.hqx corewar for the Mac core-wars-simulator.hqx same as core-11.hqx? corewar_unix_x11.tar.Z corewar for UNIX/X-windows, ICWS'86 but not ICWS'88 compatible koth31.tar.Z corewar for UNIX/X-windows. This program ran the former KotH server at intel.com koth.shar.Z older version kothpc.zip port of older version of KotH to the PC deluxe20c.tar.Z corewar for UNIX (broken X-windows or curses) and PC mars.tar.Z corewar for UNIX, likely not ICWS'88 compatible icons.zip corewar icons for MS-Windows macrored.zip a redcode macro-preprocessor (PC) c88v49.zip PC corewar, textmode display mars88.zip PC corewar, graphics mode display corwp302.zip PC corewar, textmode display, slowish mercury2.zip PC corewar written in assembly, fast! mtourn11.zip tournament scheduler for mercury (req. 4DOS) pmars08s.zip portable system, ICWS'88 and '94, runs on UNIX, PC, Mac, Amiga. C source archive pmars08s.tar.Z same as above pmars08.zip PC executables with graphics display, req 386+ macpmars02.sit.hqx pMARS executable for Mac (port of version 0.2) buggy, no display MacpMARS1.99a.cpt.hqx port of v0.8 for the Mac, with display and debugger MacpMARS1.0s.cpt.hqx C source (MPW, ThinkC) for Mac frontend pvms08.zip pMARS v0.8 for VMS build files/help (req. pmars08s.zip) ApMARS03.lha pMARS executable for Amiga (port of version 0.3.1) wincor11.zip MS-Windows system, shareware ($15) [ToC] ------------------------------------------------------------------------ 10. Where can I find warrior code? To learn the game, it is a good idea to study previously posted warrior code. The FTP archives have code in the ftp://www.koth.org/corewar/redcode directory. A clearly organized on-line warrior collection is available at the Core War web sites (see below). [ToC] ------------------------------------------------------------------------ 11. I do not have FTP. How do I get all this great stuff? There is an FTP email server at bitftp@pucc.princeton.edu. This address may no longer exist. I haven't tested it yet. Send email with a subject and body text of "help" (without the quotes) for more information on its usage. Note that many FTP email gateways are shutting down due to abuse. To get a current list of FTP email servers, look at the Accessing the Internet by E-mail FAQ posted to news.answers. If you don't have access to Usenet, you can retrieve this FAQ one of the following ways: * Send mail to mail-server@rtfm.mit.edu with the body containing "send usenet/news.answers/internet-services/access-via-email". * Send mail to mailbase@mailbase.ac.uk with the body containing "send lis-iis e-access-inet.txt". [ToC] ------------------------------------------------------------------------ 12. I do not have access to Usenet. How do I post and receive news? To receive rec.games.corewar articles by email, join the COREWAR-L list run on the Koth.Org list processor. To join, send the message SUB COREWAR-L FirstName LastName to listproc@koth.org. You can send mail to corewar-l@koth.org to post even if you are not a member of the list. Responsible for the listserver is Scott J. Ellentuch (ttsg@ttsg.com). Servers that allow you to post (but not receive) articles are available. Refer to the Accessing the Internet by E-Mail FAQ for more information. [ToC] ------------------------------------------------------------------------ 13. Are there any Core War related WWW sites? You bet. Each of the two KotH sites sport a world-wide web server. Stormking's Core War page is http://www.koth.org; pizza's is http://www.ecst.csuchico.edu/~pizza/koth . Damien Doligez (a.k.a. Planar) has a web page that features convenient access to regular newsletters (Push Off, The '94 Warrior, Core Warrior) and a well organized library of warriors: http://para.inria.fr/~doligez/corewar/. Convenient for U.S. users, this site is also mirrored at koth.org. [ToC] ------------------------------------------------------------------------ 14. What is KotH? How do I enter? King Of The Hill (KotH) is an ongoing Core War tournament available to anyone with email. You enter by submitting via email a Redcode program (warrior) with special comment lines. You will receive a reply indicating how well your program did against the current top programs "on the hill". There are two styles of KotH tournaments, "classical" and "multi-warrior". The "classical" KotH is a one-on-one tournament, that is your warrior will play 100 battles against each of the 20 other programs currently on the Hill. You receive 3 points for each win and 1 point for each tie. (The existing programs do not replay each other, but their previous battles are recalled.) All scores are updated to reflect your battles and all 21 programs are ranked from high to low. If you are number 21 you are pushed off the Hill, if you are higher than 21 someone else is pushed off. In "multi-warrior" KotH, all warriors on the hill fight each other at the same time. Score calculation is a bit more complex than for the one-on-one tournament. Briefly, points are awarded based on how many warriors survive until the end of a round. A warrior that survives by itself gets more points than a warrior that survives together with other warriors. Points are calculated from the formula (W*W-1)/S, where W is the total number of warriors and S the number of surviving warriors. The pMARS documentation has more information on multi-warrior scoring. The idea for an email-based Core War server came from David Lee. The original KotH was developed and run by William Shubert at Intel starting in 1991, and discontinued after almost three years of service. Currently, KotHs based on Bill's UNIX scripts but offering a wider variety of hills are are running at two sites: koth@koth.org is maintained by Scott J. Ellentuch (tuc@ttsg.com) and pizza@ecst.csuchico.edu by Thomas H. Davies (sd@ecst.csuchico.edu). Up until May '95, the two sites provided overlapping services, i.e. the some of the hill types were offered by both "pizza" and "stormking". To conserve resources, the different hill types are now divided up among the sites. The way you submit warriors to both KotHs is pretty much the same. Therefore, the entry rules described below apply to both "pizza" and "stormking" unless otherwise noted. Entry Rules for King of the Hill Corewar * Write a corewar program. KotH is fully ICWS '88 compatible, EXCEPT that a comma (",") is required between two arguments. * Put a line starting with ";redcode" (or ";redcode-94", etc., see below) at the top of your program. This MUST be the first line. Anything before it will be lost. If you wish to receive mail on every new entrant, use ";redcode verbose". Otherwise you will only receive mail if a challenger makes it onto the hill. Use ";redcode quiet" if you wish to receive mail only when you get shoved off the hill. Additionally, adding ";name " and ";author " will be helpful in the performance reports. Do NOT have a line beginning with ";address" in your code; this will confuse the mail daemon and you won't get mail back. Using ";name" is mandatory on the Pizza hills. In addition, it would be nice if you have lines beginning with ";strategy" that describe the algorithm you use. There are currently seven separate hills you can select by starting your program with ;redcode-94, ;redcode-b, ;redcode-lp, ;redcode-x, ;redcode, ;redcode-94x or ;redcode-94m. The former four run at "pizza", the latter three at "stormking". More information on these hills is listed below. * Mail this file to koth@koth.org or pizza@ecst.csuchico.edu. "Pizza" requires a subject of "koth" (use the -s flag on most mailers). * Within a few minutes you should get mail back telling you whether your program assembled correctly or not. If it did assemble correctly, sit back and wait; if not, make the change required and re-submit. * In an hour or so you should get more mail telling you how your program performed against the current top 20 (or 10) programs. If no news arrives during that time, don't worry; entries are put in a queue and run through the tournament one at a time. A backlog may develop. Be patient. If your program makes it onto the hill, you will get mail every time a new program makes it onto the hill. If this is too much mail, you can use ";redcode[-??] quiet" when you first mail in your program; then you will only get mail when you make it on the top 25 list or when you are knocked off. Using ";redcode[-??] verbose" will give you even more mail; here you get mail every time a new challenger arrives, even if they don't make it onto the top 25 list. Often programmers want to try out slight variations in their programs. If you already have a program named "foo V1.0" on the hill, adding the line ";kill foo" to a new program will automatically bump foo 1.0 off the hill. Just ";kill" will remove all of your programs when you submit the new one. The server kills programs by assigning an impossibly low score; it may therefore take another successful challenge before a killed program is actually removed from the hill. Sample Entry ;redcode ;name Dwarf ;author A. K. Dewdney ;strategy Throw DAT bombs around memory, hitting every 4th memory cell. ;strategy This program was presented in the first Corewar article. bomb DAT #0 dwarf ADD #4, bomb MOV bomb, @bomb JMP dwarf END dwarf ; Programs start at the first line unless ; an "END start" pseudo-op appears to indicate ; the first logical instruction. Also, nothing ; after the END instruction will be assembled. Duration Max. Hill Name Hill Core Max. Before Entry Min. Rounds Instr. Size Size Processes Distance Fought Set Tie Length Pizza's ICWS '94 Draft Hill Extended (Accessed with 25 8000 8000 80000 100 100 200 ICWS '94 ";redcode-94") Draft Pizza's Beginner's Extended Hill (Accessed 25 8000 8000 80000 100 100 200 ICWS '94 with ";redcode-b") Draft Pizza's Experimental Extended (Small) Hill 25 800 800 8000 20 20 200 ICWS '94 (Accessed with Draft ";redcode-x") Pizza's Limited Process (LP) Hill Extended (Accessed with 25 8000 8 80000 200 200 200 ICWS '94 ";redcode-lp") Draft Stormking's ICWS '88 Standard Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '88 ";redcode") Stormking's ICWS '94 No Pspace Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '94 ";redcode-94nop") Stormking's ICWS '94 Experimental Extended (Big) Hill 20 55440 55440 500000 200 200 250 ICWS '94 (Accessed with Draft ";redcode-94x") Stormking's ICWS '94 Multi-Warrior Extended Hill (Accessed 10 8000 8000 80000 100 100 200 ICWS '94 with Draft ";redcode-94m") Note: Warriors on the beginner's hill are retired at age 100. If you just want to get a status report without actually challenging the hills, send email with ";status" as the message body (and don't forget "Subject: koth" for "pizza"). If you send mail to "pizza" with "Subject: koth help" you will receive instructions that may be more up to date than those contained in this document. At "stormking", a message body with ";help" will return brief instructions. If you submit code containing a ";test" line, your warrior will be assembled but not actually pitted against the warriors on the hill. At "pizza", you can use ";redcode[-??] test" to do a test challenge of the Hill without affecting the status of the Hill. These challenges can be used to see how well your warrior does against the current Hill warriors. All hills run portable MARS (pMARS) version 0.8, a platform-independent Core War system available at www.koth.org. The '94 and '94x hills allow five experimental opcodes and three experimental addressing modes currently not covered in the ICWS'94 draft document: * LDP - Load P-Space * STP - Store P-Space * SEQ - Skip if EQual (synonym for CMP) * SNE - Skip if Not Equal * NOP - (No OPeration) * * - indirect using A-field as pointer * { - predecrement indirect using A-field * } - postincrement indirect using A-field [ToC] ------------------------------------------------------------------------ 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? Core is initialized to DAT 0, 0. This is an illegal instruction (in source code) under ICWS'88 rules and strictly compliant assemblers (such as KotH or pmars -8) will not let you have a DAT 0, 0 instruction in your source code - only DAT #0, #0. So this begs the question, how to compare something to see if it is empty core. The answer is, most likely the instruction before your first instruction and the instruction after your last instruction are both DAT 0, 0. You can use them, or any other likely unmodified instructions, for comparison. Note that under ICWS'94, DAT 0, 0 is a legal instruction. [ToC] ------------------------------------------------------------------------ 16. How does SLT (Skip if Less Than) work? SLT gives some people trouble because of the way modular arithmetic works. It is important to note that all negative numbers are converted to positive numbers before a battles begins. Example: -1 becomes M-1 where M is the memory size (core size). Once you realize that all numbers are treated as positive, it is clear what is meant by "less than". It should also be clear that no number is less than zero. [ToC] ------------------------------------------------------------------------ 17. What is the difference between in-register and in-memory evaluation? These terms refer to the way instruction operands are evaluated. The '88 Redcode standard ICWS'88 is unclear about whether a simulator should "buffer" the result of A-operand evaluation before the B-operand is evaluated. Simulators that do buffer are said to use in-register evaluation, those that don't, in-memory evaluation. ICWS'94 clears this confusion by mandating in-register evaluation. Instructions that execute differently under these two forms of evaluation are MOV, ADD, SUB, MUL, DIV and MOD where the effective address of the A-operand is modified by evaluation of the B-operand. This is best illustrated by an example: L1 mov L2, mov.i #0, impsize Bootstrapping Strategy of copying the active portion of the program away from the initial location, leaving a decoy behind and making the relocated program as small as possible. B-Scanners Scanners which only recognize non-zero B-fields. example add #10, scan scan jmz example, 10 c Measure of speed, equal to one location per cycle. Speed of light. CMP-Scanner A Scanner which uses a CMP instruction to look for opponents. example add step, scan scan cmp 10, 30 jmp attack jmp example step dat #20, #20 Colour Property of bombs making them visible to scanners, causing them to attack useless locations, thus slowing them down. example dat #100 Core-Clear Code that sequentially overwrites core with DAT instructions; usually the last part of a program. Decoys Bogus or unused instructions meant to slow down scanners. Typically, DATs with non-zero B-fields. Decrement Resistant Property of warriors making them functional (or at least partially functional) when overrun by a DJN-stream. DJN-Stream (also DJN-Train) Using a DJN command to rapidly decrement core locations. example ... ... djn example, <4000 Dwarf The prototypical small bomber. Gate-busting (also gate-crashing) technique to "interweave" a decrement-resistant imp-spiral (e.g. MOV 0, 2668) with a standard one to overrun imp-gates. Hybrids warriors that combine two or more of the basic strategies, either in sequence (e.g. stone->paper) or in parallel (e.g. imp/stone). Imp Program which only uses the MOV instruction. example mov 0, 1 or example mov 0, 2 mov 0, 2 Imp-Gate A location in core which is bombed or decremented continuously so that an Imp can not pass. Also used to describe the program-code which maintains the gate. example ... ... spl 0, mov.i #0,IMPSIZE Mirror see reflection. On-axis/off-axis On-axis scanners compare two locations M/2 apart, where M is the memory size. Off-axis scanners use some other separation. Optimal Constants (also optima-type constants) Bomb or scan increments chosen to cover core most effectively, i.e. leaving gaps of uniform size. Programs to calculate optimal constants and lists of optimal numbers are available at www.koth.org. Paper A Paper-like program is one which replicates itself many times. Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy. P-Warrior A warrior which uses the results of previous round(s) in order to determine which strategy it will use. Pit-Trapper (also Slaver, Vampire). A program which enslaves another. Usually accomplished by bombing with JMPs to a SPL 0 pit with an optional core-clear routine. Q^2 Scan A modern version of the Quick Scan where anything found is attacked almost immediately. Quick Scan 2c scan of a set group of core locations with bombing if anything is found. Both of the following codes snips scan 16 locations and check for a find. If anything is found, it is attacked, otherwise 16 more locations are scanned. Example: start s1 for 8 ;'88 scan cmp start+100*s1, start+100*s1+4000 ;check two locations mov #start+100*s1-found, found ;they differ so set pointer rof jmn attack, found ;if we have something, get it s2 for 8 cmp start+100*(s2+6), start+100*(s2+6)+4000 mov #start+100*(s2+6)-found, found rof found jmz moveme, #0 ;skip attack if qscan found nothing attack cmp @found, start-1 ;does found points to empty space? add #4000, found ;no, so point to correct location mov start-1, @found ;move a bomb moveme jmp 0, 0 In ICWS'94, the quick scan code is more compact because of the SNE opcode: start ;'94 scan s1 for 4 sne start+400*s1, start+400*s1+100 ;check two locations seq start+400*s1+200, start+400*s1+300 ;check two locations mov #start+400*s1-found, found ;they differ so set pointer rof jmn which, found ;if we have something, get it s2 for 4 sne start+400*(s2+4), start+400*(s2+4)+100 seq start+400*(s2+4)+200, start+400*(s2+4)+300 mov #start+400*(s2+4)-found-100, found rof found jmz moveme, #0 ;skip attack if qscan found nothing add #100, -1 ;increment pointer till we get the which jmn -1, @found ;right place mov start-1, @found ;move a bomb moveme jmp 0, 0 Reflection Copy of a program or program part, positioned to make the active program invisible to a CMP-scanner. Replicator Generic for Paper. A program which makes many copies of itself, each copy also making copies. Self-Splitting Strategy of amplifying the number of processes executing a piece of code. example spl 0 loop add #10, example mov example, @example jmp loop Scanner A program which searches through core for an opponent rather than bombing blindly. Scissors A program designed to beat replicators, usually a (B-field scanning) vampire. Part of the Paper-Scissors-Stone analogy. Self-Repair Ability of a program to fix it's own code after attack. Silk A replicator which splits off a process to each new copy before actually copying the code. This allows it to replicate extremely quickly. This technique is only possible under the '94 draft, because it requires post-increment indirect addressing. Example: spl 1 mov -1, 0 spl 1 ;generate 6 consecutive processes silk spl 3620, #0 ;split to new copy mov >-1, }-1 ;copy self to new location mov bomb, >2000 ;linear bombing mov bomb, }2042 ;A-indirect bombing for anti-vamp jmp silk, {silk ;reset source pointer, make new copy bomb dat >2667, >5334 ;anti-imp bomb Slaver see Pit-Trapper. Stealth Property of programs, or program parts, which are invisible to scanners, accomplished by using zero B-fields and reflections. Stone A Stone-like program designed to be a small bomber. Part of the Paper-Scissors-Stone analogy. Stun A type of bomb which makes the opponent multiply useless processes, thus slowing it down. Example is referred to as a SPL-JMP bomb. example spl 0 jmp -1 Two-Pass Core-Clear (also SPL/DAT Core-Clear) core clear that fills core first with SPL instructions, then with DATs. This is very effective in killing paper and certain imp-spiral variations. Vampire see Pit-Trapper. Vector Launch one of several means to start an imp-spiral running. As fast as Binary Launch, but requiring much less code. See also JMP/ADD Launch and Binary Launch. This example is one form of a Vector Launch: sz EQU 2667 spl 1 spl 1 jmp @vt, }0 vt dat #0, imp+0*sz ; start of vector table dat #0, imp+1*sz dat #0, imp+2*sz dat #0, imp+3*sz ; end of vector table imp mov.i #0, sz [ToC] ------------------------------------------------------------------------ 23. Other questions? Just ask in the rec.games.corewar newsgroup or contact me. If you are shy, check out the Core War archives first to see if your question has been answered before. [ToC] ------------------------------------------------------------------------ Credits Additions, corrections, etc. to this document are solicited. Thanks in particular to the following people who have contributed major portions of this document: * Mark Durham (wrote the original version of the FAQ) * Paul Kline * Randy Graham * Stefan Strack (maintained a recent version of the FAQ) ------------------------------------------------------------------------ Copyright � 1999 Anton Marsden. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ------------------------------------------------------------------------ From: carter_cheng@yahoo.com (Jobless Poor) Subject: Evolution & further evolution of the corewar standard Date: 10 Apr 2002 22:59:48 -0700 Message-ID: I've been toying with the idea of creating a perlMars for sometime now(as some of you probably know) as a way of learning the Perl language and improving some of my practical programming skills. Unfortunately I've been battling CTD/RSI in the wrist region of my both my hands which makes it somewhat difficult to program. The OT people have told me, however to start doing moderate amounts of typing, as part of the rehabilitation process so I'm thinking about restarting the project. However I think that I will migrate what I have to Java since there seems to be more demand for a jMars over a perlMars. I maybe I could get together with some of the other people interesting in working on a jMars so we can share the workload a bit. I know Brian already has some VM code done and tested which can probably be used as a starting point. The question I have pertains to possibly adding experimental features to jMars. I'm curious if it were possible to make nontrivial changes to the 94 spec as experimental features what kind of things would interest the corewar regulars. I have some ideas myself but Im not sure how interesting they would be since I still rather much a beginner when it comes to playing the game. So I'd be curious to hear other peoples opinions on this subject Regards, JP From: google@blinker.net (Bjoern) Subject: Re: A corewar timeline Date: 11 Apr 2002 06:49:12 -0700 Message-ID: Hm, in the highttime when I was playing, the significant events I remember are: Octopussy by David Boeren dominating the hill for what seemed then a very long time. I think it's demise began with two warriors by Van Damn (spelling?), the Core Clear and Scanny Boy/Scan Man. Perhaps those were not the first to implement the strategy, but in a way I feel they deserve being mentioned (also Octopussy, even though it may not have incorporated any revolutionary ideas). It might just have been my subjective impression, as I was just new to the game around that time. I think mirage came briefly before I started playing, so I missed that revolution. What is interesting about the story from my humble perspective, is that it seems as if it was only the lucky circumstances that made d-clear popular. Because Scan Man had given papers a severe beating at the time, and Scan Man gave MANY points to d-clear, d-clear seized the number 1 position for about 5 battles or so (the only time I ever was at #1, I think). After that it fell off quickly, and there probably will never again be a chance for it to get on the hill all by itself. So the time window for d-cleat to make it's appearance was very small. That got it noted and picked up. On the other hand, I had posted about the idea already some time before, calling it 'dirty clear'. I didn't take it too seriously myself then, and it passed by unnoted untill d-clear had it's day. Just my 2 cents on history, but I always take this story to remind me that there are useful lessons to be learned from playing Corewar (ie a good idea can fail if it's not the right time). Now Ian's project probably has a different goal, but I would also find it interesting to read a history that shows the 'emotional' history of Corewar. Like the way new strategies were invented in response to other strategies. Perhaps other 'historical moments' I remember were Impfinity finally being pushed of the hill (was it the new Quickscan^2 that finally killed it?). I'm not entirely sure about the story around Thermite anymore? Bjoern From: Lukasz Grabun Subject: Re: recommencer Date: Thu, 11 Apr 2002 09:17:03 +0000 (UTC) Message-ID: czw, 11 kwi 2002 o 08:38 GMT, Csaba Biro: > I had played Corewar 2 or 3 years ago, but then I didn't have time, so I [snip] > recommence, or Corewar is an obsolate game? Corewar is still active though there're fewer players (comparing it with early 90's). but still there's a number of active players and some events that keep the game alive (e.g. Metcalf's tournament nowadays). as far as technical details are concerned: 94 is still a valid standard (as well as 88 :). -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: "Csaba Biro" Subject: recommencer Date: Thu, 11 Apr 2002 10:38:09 +0200 Message-ID: Hello, I had played Corewar 2 or 3 years ago, but then I didn't have time, so I gave up. Now it seems that I will have more time again for this hobby, so I decided to recommence playing. I checked the Core Warrior archive at Planar page and I was surprised that the latest issue is dated 19 February, 2001. More than 1 year ago! What is the reason? Is Corewar still alive? Is the '94 standard still adequate? How about the traffic on the hills? Is it worth to recommence, or Corewar is an obsolate game? Regards, Csaba Biro From: google@blinker.net (Bjoern) Subject: Re: A corewar timeline Date: 11 Apr 2002 15:21:56 -0700 Message-ID: google@blinker.net (Bjoern) wrote in message news:... [...] > Perhaps other 'historical moments' I remember were Impfinity finally > being pushed of the hill (was it the new Quickscan^2 that finally > killed it?). I'm not entirely sure about the story around Thermite > anymore? I just remember that it was probably the new Quickscans that killed Thermite. So what was the demise of Impfinity - perhaps that was due to Scan Man & Co? What happened to The Core Clear - would it still succeed today, did it actually put bombers with 'even' (like mod 4,5,8,...) steps out of fashion? Or is it just a footnote of history now...? Perhaps it would be nice to have two entries for every famous strategy - one entry describing the warrior that introduced it, and the other for the most famous warrior of it's kind. For example another warrior I remember is Beppe's 'Memory', even though I guess the strategy was not new. Bjoern From: google@blinker.net (Bjoern) Subject: self-repair strategy (was: timeline) Date: 11 Apr 2002 15:31:43 -0700 Message-ID: Randy Graham wrote in message news:... > On 3 Apr 2002 13:37:45 -0800, pk6811s@acad.drake.edu (P. Kline) wrote: [...] > You know, I finally thought of a self-repair strategy that I thought > would work a few weeks ago while on vacation (and away from a > computer). Of course, I didn't write it down, thinking I could > remember it and try it when I got home. That didn't happen, and I > hadn't thought of it until you posted this today. I really need to Funny, the same thing happened to my recent proof of P=NP... Seriously, somebody should donate a price for the first working self-repair strategy. Akin to the 1000000$ that wait for the first Computer Go program that can beat a 13 year old Go Master, or the Loebner price ;-) Although I think some of the modern silks are at least halfway there, with their constants optimised to wipe old copies. I guess RetroQ also falls into that category? Bjoern P.S.: I haven't forgotten my Parser project, just haven't gotten round to it in weeks... [...] From: google@blinker.net (Bjoern) Subject: Re: A corewar timeline Date: 11 Apr 2002 15:36:17 -0700 Message-ID: Airbag Message-ID: <3CB5DDAB.803A623B@bgb-consulting.com> From: Don Garrett Subject: Re: Evolution & further evolution of the corewar standard Date: Thu, 11 Apr 2002 19:01:23 GMT Jobless Poor wrote: > > I've been toying with the idea of creating a perlMars for sometime > now(as some of you probably know) as a way of learning the Perl > language and improving some of my practical programming skills. If you're doing this to learn a new language, I might recommend Python. It seems to be becoming the successor to Perl, but is much easier to work in. Definatly easier than Java (I've work professionally in Perl and Java, learning Python on the side so far). The performance isn't quite as good at Java, but it people are looking for a fast system, they'll use pMars, qmars, or exhaust anyway. I'm sorry to hear about the medical condition. I hope it keeps getting better. -- Don Garrett http://www.bgb.cc/garrett/ BGB Consulting garrett@bgb.cc From: carter_cheng@yahoo.com (Jobless Poor) Subject: Re: self-repair strategy (was: timeline) Date: 11 Apr 2002 22:31:07 -0700 Message-ID: google@blinker.net (Bjoern) wrote in message news:... > Randy Graham wrote in message news:... > > On 3 Apr 2002 13:37:45 -0800, pk6811s@acad.drake.edu (P. Kline) wrote: > > [...] > > > You know, I finally thought of a self-repair strategy that I thought > > would work a few weeks ago while on vacation (and away from a > > computer). Of course, I didn't write it down, thinking I could > > remember it and try it when I got home. That didn't happen, and I > > hadn't thought of it until you posted this today. I really need to > > Funny, the same thing happened to my recent proof of P=NP... > > Seriously, somebody should donate a price for the first working > self-repair strategy. Akin to the 1000000$ that wait for the first > Computer Go program that can beat a 13 year old Go Master, or the > Loebner price ;-) > > Although I think some of the modern silks are at least halfway there, > with their constants optimised to wipe old copies. I guess RetroQ also > falls into that category? > > Bjoern > > > P.S.: I haven't forgotten my Parser project, just haven't gotten round > to it in weeks... > > > > > [...] As for the parser project Bjoern- are you still interested in that? I think I dropped you a few emails a while back on that topic. I'm even considering moving to Java if that is what everyone wants to work in. Obviously the solution I sent you isn't particularly elegant, but I think it gets the task done(it's actually probably pretty similar to how pMars parses). Regards, JP. From: carter_cheng@yahoo.com (Jobless Poor) Subject: Re: Evolution & further evolution of the corewar standard Date: 12 Apr 2002 01:28:46 -0700 Message-ID: Don Garrett wrote in message news:<3CB5DDAB.803A623B@bgb-consulting.com>... > Jobless Poor wrote: > > > > I've been toying with the idea of creating a perlMars for sometime > > now(as some of you probably know) as a way of learning the Perl > > language and improving some of my practical programming skills. > > If you're doing this to learn a new language, I might recommend Python. It > seems to be becoming the successor to Perl, but is much easier to work in. > Definatly easier than Java (I've work professionally in Perl and Java, > learning Python on the side so far). > > The performance isn't quite as good at Java, but it people are looking for a > fast system, they'll use pMars, qmars, or exhaust anyway. > > I'm sorry to hear about the medical condition. I hope it keeps getting > better. Thanks. The doctors say the injury will heal but it might take quite some time. I've actually recently picked up a book on Python and in comparison to Perl it seems to have a cleaner syntax amongst other things. My main concern with Python is open source modules support. Is it quite large much like Perl's where there is alot of interesting open source code on www.cpan.org? One major gripe I have with Perl is portability between Windows in Unix. The ActiveState Perl isn't quite the same as the Unix version. Are the Python respective Python interpreters better in this regard? The basic idea in developing a new Mars system in one of the above languages would be better portability and better functionality from a developers standpoint. As you pointed out there many very good fast Mars VM's like qmars etc. if you need the extra speed. From: "Csaba Biro" Subject: pizza hill Date: Fri, 12 Apr 2002 19:41:56 +0200 Message-ID: Hello, sorry about the question: am I right that Pizza hill is down? I used to play there but now I can see on home page that it is declared to be down and the last chalange was on June 22, 2001. So I can't find a finite hill with '94 Draft, core size 8000, not multiwarrior, and using P-space. Thanks, Csaba From: ff95@dial.pipex.com (Robert Macrae) Subject: Re: A corewar timeline Date: 13 Apr 2002 01:45:04 -0700 Message-ID: <63519603.0204130045.51bdad3f@posting.google.com> ... > > * Spiral Clear John K Wilkinson I am rather surprised that spiral clears did not appear earlier? I had the impression that they were used in 88 warriors though I have not found any examples. > > * Handshaking Kurt Franke I remember Kurt and I both had handshakes; I'm not sure which came first. Robert Macrae From: dhillismail@netscape.net (Dave Hillis) Subject: Re: pizza hill Date: 13 Apr 2002 06:38:46 -0700 Message-ID: <5d6847b2.0204130538.3a6e3abc@posting.google.com> "Csaba Biro" wrote in message news:... > Hello, > sorry about the question: am I right that Pizza hill is down? I used to > play there but now I can see on home page that it is declared to be down and > the last chalange was on June 22, 2001. So I can't find a finite hill with > '94 Draft, core size 8000, not multiwarrior, and using P-space. > > Thanks, > Csaba Sad but true. It should't stop you though. I would guess the "experimental" (big) hill at KOTH is your best compromise. Dave Hillis From: dhillismail@netscape.net (Dave Hillis) Subject: hills at sourceforge Date: 13 Apr 2002 07:04:05 -0700 Message-ID: <5d6847b2.0204130604.71443fd1@posting.google.com> It's my understanding that the "redcode" hills at sourceforge are '94 draft compliant, but,... the parser treats some things differently than pmars does. So if you send a great warrior there and it winds up DOA (hint, hint) try resending it as object code. On a related note: the "standard" hill used to function as a defacto beginner hill. But someone filled it with published warriors a while ago. Maybe they could be made to go away now? Dave Hillis From: waknuk@yahoo.com (Philip Thorne) Subject: Re: hills at sourceforge Date: 13 Apr 2002 13:01:58 -0700 Message-ID: <4ee41bd6.0204131201.596872c9@posting.google.com> dhillismail@netscape.net (Dave Hillis) wrote in message news:<5d6847b2.0204130604.71443fd1@posting.google.com>... > It's my understanding that the "redcode" hills at sourceforge are '94 > draft compliant, but,... the parser treats some things differently > than pmars does. So if you send a great warrior there and it winds up > DOA (hint, hint) try resending it as object code. > There are some minor differences to pmars - for a list see the file named Differences in the corewars-0.9.12.gz.tar file available from the site [you can get to it via the "download" link near the top right of the http://corewars.sourceforge.net page or direct to http://sourceforge.net/project/showfiles.php?group_id=3054 ]. The main diffs to pmars are: a) doesn't support p-space [nat. p-space not being part of '94 draft] b) treats MINDISTANCE differently: "MINDISTANCE is minimum number of emty cells between the end of one program and the start of the next program. In pMARS it is the minimum distance between the start of two programs." > On a related note: the "standard" hill used to function as a defacto > beginner hill. But someone filled it with published warriors a while > ago. Maybe they could be made to go away now? > Would that be just@testing.com? If someone is "just testing" they could try using the "test" option when submitting. > Dave Hillis Philb From: metcalf@uboot.com (John Metcalf) Subject: Core Warrior #81 Date: 13 Apr 2002 14:19:34 -0700 Message-ID: .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 81 11 April, 2002 _______________________________________________________________________________ Core Warrior is a newsletter promoting the game of corewar. Emphasis is placed on the most active hills - currently the '94 draft hill, the beginner hill and the '94 no-pspace hill. Coverage will follow wherever the action is. If you haven't a clue what I'm talking about then check out these five-star Internet locals for more information: FAQs are available from: http://www.koth.org/corewar-faq.html http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Web pages are at: http://www.koth.org/ ;KOTH http://www.ecst.csuchico.edu/~pizza/koth ;Pizza http://para.inria.fr/~doligez/corewar ;Planar http://www.ociw.edu/~birk/corewar ;C.Birk Newbies should check the above pages for the FAQs, language specification, guides, and tutorials. Post questions to rec.games.corewar. All new players are infinitely welcome! _______________________________________________________________________________ Greetings... This issue is a little slimmer than usual, due to the Pizza hills currently being inactive. Contents include the results from round 1 of the tournament and Purifier, Lukasz Grabun's stone/paper. -- John Metcalf ______________________________________________________________________________ Current Status of the KOTH.ORG '94 No Pspace Hill: # %W/ %L/ %T Name Author Score Age 1 40/ 24/ 36 Inky Ian Oversby 155.2 467 2 37/ 21/ 42 Purifier Lukasz Grabun 154.1 24 3 45/ 36/ 19 Hazy Lazy ... again Steve Gunnell 153.3 23 4 36/ 20/ 44 nPaper II Paul-V Khuong 152.0 988 5 45/ 39/ 17 Vanquisher Lukasz Grabun 150.3 79 6 36/ 22/ 42 Son of Vain Oversby/Pihlaja 149.5 577 7 38/ 28/ 34 Quicksilver Michal Janeczek 148.3 750 8 37/ 27/ 36 Uninvited John Metcalf 146.2 670 9 36/ 27/ 37 Olivia Ben Ford 145.4 716 10 35/ 24/ 41 Hopper Phooey 145.2 114 11 43/ 41/ 16 Behemot Michal Janeczek 144.1 811 12 37/ 33/ 30 Blacken Ian Oversby 141.9 1235 13 42/ 43/ 16 Deep Freeze X Lukasz Grabun 141.1 177 14 37/ 34/ 29 Keyser Soze Anton Marsden 141.0 689 15 35/ 29/ 36 Revival Fire P.Kline 140.4 456 16 43/ 45/ 13 Test C Phooey 140.4 115 17 40/ 40/ 21 Blue test 3 Lukasz Grabun 139.5 9 18 43/ 46/ 11 G3-b David Moore 139.5 258 19 39/ 50/ 11 Aoshi Test B 15 Steve Gunnell 126.7 2 20 38/ 54/ 9 Hazy Test A 25 Steve Gunnell 121.8 1 161 challenges bring some effective young warriors to the hill. Those which departed include Qtest (394), Hazy Lazy (killed at age 309) He Scans Alone x (170) and paper/stone test (129). _______________________________________________________________________________ The '94 No Pspace Hall of Fame: * indicates the warrior is still active. Pos Name Author Age Strategy 1 Blacken Ian Oversby 1235 * Q^2 -> Stone/imp 2 nPaper II Paul-V Khuong 988 * MiniQ^3 -> Paper 3 Behemot Michal Janeczek 811 * MiniQ^3 -> Bomber 4 Eraser II Ken Espiritu 781 Scanner 5 Quicksilver Michal Janeczek 750 * Q^4 -> Stone/imp 6 Olivia Ben Ford 716 * Q^4 -> Stone/imp 7 Keyser Soze Anton Marsden 689 * 8 Uninvited John Metcalf 670 * MiniQ^3 -> Stone/imp 9 Jinx Christian Schmidt 662 Scanner 10 Jade Ben Ford 600 Q^4 -> Stone/imp 11 Son of Vain Oversby/Pihlaja 577 * Qscan -> Stone/imp 12 Inky Ian Oversby 467 * 13 The Phantom Menace Anton Marsden 465 14 Revival Fire P.Kline 456 * Bomber 15 Boys are Back in Town Philip Kendall 441 Scanner = Zooom... John Metcalf 441 Scanner 17 G2-b David Moore 413 Twoshot 18 Qtest Christian Schmidt 394 19 Stalker P.Kline 393 Scanner 20 Vain Ian Oversby 330 Q^2 -> Stone/imp 21 Omnibus John Metcalf 327 Q^2 -> Stone/imp 22 Win! David Moore 322 Scanner 23 Hazy Lazy... Steve Gunnell 309 Scanner 24 Recovery Ian Oversby 280 MiniQ^2 -> Paper/stone 25 The Fugitive David Moore 274 MiniQ^2 -> Paper/imp One new entry here, Hazy Lazy, which just crept into the HoF before Steve killed it off to make way for the next generation. Qtest ends it's days at the respectable age of 394. _______________________________________________________________________________ Spring / Summer 2002 Corewar Tournament - Round 1 Results: In all 15 authors submitted a total of 27 warriors for the initial round of the tournament. Of these, 8 were evolved and the remaining 19 hand-coded. The hand-written warriors were represented by 4 oneshots, 4 scanners, 3 papers, 3 clears, 3 stones, 1 p-spacer and 1 anti-oneshot. The warriors were played in a round robin tournament taking just under 8 minutes to complete. Without further ado, the results. Congratulations to all taking part: # %Won Lost Tied Name Author Score % 1 58.2 30.3 11.5 WingShot T Ben Ford 186.18 100.0 2 56.4 26.6 17.0 Evolving Threat Dave Hillis 186.13 99.9 3 54.8 35.9 9.3 t766-- Michal Janeczek 173.71 93.3 4 48.0 26.0 26.0 Venom Ben Ford 169.98 91.3 5 52.3 35.0 12.8 s774++ Michal Janeczek 169.57 91.1 6 52.4 35.3 12.3 Dettol Test 487 Steve Gunnell 169.45 91.0 7 51.3 35.6 13.2 Tiny Talon Robert Macrae 166.94 89.7 8 49.6 34.9 15.5 Evolver 1100 x 500 Martin Ankerl 164.26 88.2 9 35.4 13.9 50.6 Rasp Leonardo H. Liporati 156.94 84.3 10 46.3 41.2 12.5 Tiny Freeze Lukasz Grabun 151.46 81.3 11 44.4 38.4 17.3 Imp .X-ing Dave Hillis 150.31 80.7 12 37.5 26.7 35.8 Stolen1 Robert Macrae 148.30 79.7 13 45.6 43.9 10.4 clear skies Simon Wainwright 147.29 79.1 14 44.9 46.4 8.7 Djinn Test Tiny 326 Steve Gunnell 143.32 77.0 15 40.8 40.9 18.4 Squirm13 Philip Thorne 140.61 75.5 16 38.6 41.5 19.8 Mighty Mouse Winston Featherly-Bean 135.72 72.9 17 41.0 49.4 9.6 10686804-18881-101719649 mushroommaker 132.71 71.3 18 40.1 48.9 11.0 The Wasp Lukasz Grabun 131.27 70.5 19 37.9 49.1 13.0 rickety old redcode Simon Wainwright 126.80 68.1 20 37.6 52.5 9.9 Szczur Arek Paterek 122.81 66.0 21 36.5 51.4 12.1 50324-62579-1017504560 mushroommaker 121.53 65.3 22 33.9 52.3 13.8 Euthin Philip Thorne 115.63 62.1 23 34.0 52.8 13.3 31133-61360-1017455494 Paul Drake 115.24 61.9 24 31.4 57.3 11.3 Primordial Clear Winston Featherly-Bean 105.41 56.6 25 16.6 32.9 50.5 Rubber Snake Compudemon 100.38 53.9 26 25.6 61.1 13.3 9101-61316-1017454713 Paul Drake 90.16 48.4 27 19.1 50.2 30.7 Snow Castle Compudemon 88.05 47.3 WingShot T takes first place for Ben Ford, a fraction of a point ahead of Dave Hillis's Evolving Threat. WingShot is a .8c BiShot style scanner. Evolving Threat is an evolved paper which has been evolved further against warriors from Koenigstuhl's tiny hill. Next is t766-- by Michal Janeczek, a backwards scanning oneshot. A little further down, another 5 authors make the top 10. First we have Steve Gunnell's oneshot, Dettol Test, followed by a scanner, Tiny Talon, from Robert Macrae. A warrior evolved by Martin Ankerl is next. After this comes Leonardo Liporati's Rasp which is the original tiny qscan -> paper. This is followed by Tiny Freeze, Lukasz Grabun's scanner. _______________________________________________________________________________ Extra Extra - Purifier by Lukasz Grabun A carefully optimized paper/stone warrior is capable of scoring well against many classes of opponent. Purifier is one such warrior. The stone used is a modified Spooky Wench. A number of step and duration pairs were generated and the pair which performed best overall against a selection of scanners was chosen. The paper was optimized using a method similar to that which is described in CW75. Firstly, the bombing line was replaced with a harmless nop. This allowed some good replication steps to be found without the results being affected by how well a particular position of the strip bombing interacts with the paper steps. A large number of different steps were benchmarked against a test set of published warriors. The most effective replication steps from the first stage were chosen. The bombing line was then reactivated and many different bombing distances were tested against the same set of warriors. The distance which appeared most effective was chosen. While putting the stone and paper together, careful experimentation was required to determine effective process allocation. For an aggressive stone/paper it is generally necessary for the stone to receive more processes in the early cycles of a battle, and Purifier is no exception to this observation. Finally, the best offset between the paper's initial location in core and the stone's location needed to be chosen. Once again a large number of offsets were generated by a simple C program and tested against the warrior suite. From these results, 20 were selected for one final test, against KOTH's no-pspace hill. Below is the code for Purifier, utilizing a qscan derived from the qscan found in Quicksilver: ;redcode-94nop ;name Purifier ;author Lukasz Grabun ;strategy Mini Q^4 -> Stone/Paper ;assert CORESIZE==8000 org qGo pDst0 equ 3009 pDst1 equ 2794 pDst2 equ 2930 pHit equ 7235 sStep equ 598 sTime equ 1698 sOff equ 7770 pGo spl 1 , }qC qTab2 spl 1 , }qD spl 1 , }qE pSilk0 spl @0 , {pDst0 mov }pSilk0 , >pSilk0 pSilk1 spl @0 , pSilk1 pMov mov pBmb , >pHit mov {pSilk1 , pDst2 pBmb dat >5334 , >2667 for 10 dat 0 , 0 rof sSpl spl #0 , #0 sMov mov sBmb , @sDjn sInc add #sStep , sDjn sDjn djn.f sMov , {sInc-(sTime*sStep) sBmb dat >4 , >1 bBoot mov sSpl , sOff-6-CURLINE spl 2 , 0 sDest spl 2 , sOff-CURLINE sSrc spl 1 , sBmb+1 mov , Philip Kendall , Anton Marsden , John Metcalf and Christian Schmidt From: dhillismail@netscape.net (Dave Hillis) Subject: Re: hills at sourceforge Date: 13 Apr 2002 20:54:08 -0700 Message-ID: <5d6847b2.0204131954.1a995d85@posting.google.com> > > It's my understanding that the "redcode" hills at sourceforge are '94 > > draft compliant, but,... the parser treats some things differently > > than pmars does. So if you send a great warrior there and it winds up > > DOA (hint, hint) try resending it as object code. > > > There are some minor differences to pmars - for a list see the file > named Differences in the corewars-0.9.12.gz.tar file available from > the site [you can get to it via the "download" link near the top right > of the http://corewars.sourceforge.net page or direct to > http://sourceforge.net/project/showfiles.php?group_id=3054 ]. > > The main diffs to pmars are: > a) doesn't support p-space [nat. p-space not being part of '94 draft] > b) treats MINDISTANCE differently: > "MINDISTANCE is minimum number of emty cells between the end of > one program and the start of the next program. In pMARS it is the > minimum distance between the start of two programs." The parser is also different: FOR-ROF macros, things like that. I think they are not part of the standard, just part of pmars. Warriors that use them, and many do, can be trashed or worse yet just slightly crippled when submitted to sourceforge. Vanquisher just failed to get on the redcode standard hill. I downloaded the program from the sourceforge archives, ran it through pmars to get the object code and submitted that in test mode. It would have come in 6th (before Son of Vain showed up :-)). The simple solution is to submit warriors as object code, at least as a test. Dave Hillis From: Lukasz Grabun Subject: Re: hills at sourceforge Date: Sun, 14 Apr 2002 07:46:21 +0000 (UTC) Message-ID: nie, 14 kwi 2002 o 03:54 GMT, Dave Hillis: > Vanquisher just failed to get on the redcode standard hill. I > downloaded the program from the sourceforge archives, ran it through > pmars to get the object code and submitted that in test mode. It would > have come in 6th (before Son of Vain showed up :-)). I've submitted Vanquisher to the standard hill as well as Purifier (both were sent as a compiled code). still, though Purifier holds a top position :) Vanquisher just... was vanquished. -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: Lukasz Grabun Subject: Re: hills at sourceforge Date: Sun, 14 Apr 2002 09:19:06 +0000 (UTC) Message-ID: nie, 14 kwi 2002 o 07:46 GMT, Lukasz Grabun: > I've submitted Vanquisher to the standard hill as well as > Purifier (both were sent as a compiled code). still, though Purifier > holds a top position :) Vanquisher just... was vanquished. It was enough to refresh the browser's window to see that V. is 5th on the hill. parsing one's code and sending it as a "pure" redcode seems to be the right solution :) -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: "Robert Macrae" Subject: Re: A corewar timeline Date: 14 Apr 2002 13:08:34 -0400 Message-ID: <006c01c1e259$c50488e0$2200a8c0@Mesh1> > What is interesting about the story from my humble perspective, is > that it seems as if it was only the lucky circumstances that made > d-clear popular. Because Scan Man had given papers a severe beating at > the time, and Scan Man gave MANY points to d-clear, d-clear seized the > number 1 position for about 5 battles or so (the only time I ever was > at #1, I think). After that it fell off quickly, and there probably > will never again be a chance for it to get on the hill all by itself. > So the time window for d-cleat to make it's appearance was very small. Far too modest, given that D-Clear derivatives have been key parts of so many subsequent warriors. The outstanding thing about D-Clear is that it is an idea with broad applicability, like Imp spirals. > Perhaps other 'historical moments' I remember were Impfinity finally > being pushed of the hill (was it the new Quickscan^2 that finally > killed it?). I'm not entirely sure about the story around Thermite > anymore? Ah, Thermite.... Yes, it was Q^2 that killed it. It had an old-fashioned QS front end and simply could not compete. Once I understood Q^2s I tested a few "Thermite III"s using one, but I could not find any convincing improvements for the Torch bomber so I dropped the idea... Robert Macrae From: "Robert Macrae" Subject: Tiny Talon and Stolen1 Date: Sun, 14 Apr 2002 20:41:17 +0000 (UTC) Message-ID: > # %Won Lost Tied Name Author Score % > 1 58.2 30.3 11.5 WingShot T Ben Ford 186.18 100.0 ... > 7 51.3 35.6 13.2 Tiny Talon Robert Macrae 166.94 89.7 ... > 12 37.5 26.7 35.8 Stolen1 Robert Macrae 148.30 79.7 Hmmm. Obviously some way to go... Wonder how long till the next round? ~~~~~~~ Tiny Talon ~~~~~~~ ;redcode-94 ;name Tiny Talon ;author Robert Macrae ;strategy scan with transparent decoy [But not tested] ;assert 1 org loop head spl #-4,83 ;not to be executed, except when hit by DJN loop mov head,>head ;place carpet add.f step,scan ;move scan window scan cmp.i }4,0 ;found something? mov.b scan,@loop ; Yes. adjust carpet pointer. djn loop,#99 ;fall through to d-clear after 100 scans step spl #-24,>-24 ;standard d-clear mov clr,>head-5 djn.f -1,>head-5 clr dat 1,#18 ;d-clear bomb This is a straight copy of Talon, with minor tweaks for core size. I thought there might be several scanners and oneshots so the dirty carpet appealed to me. I doubt that an 8-process DClear is the best way to finish the warrior but it works and I ran out of time. There must also be better places to put that carpet... ~~~~~ Stolen1 ~~~~~ ;redcode-94x verbose ;name Stolen1 ;author Robert Macrae ;strategy PSwitcher based on hill components ;strategy TinyTim, Poke1, Snufkin ;assert 1 papt equ (pgo+6-ptr) stpt equ (stone+6-ptr) org think load0 z for 0 rof ; switch on loss, state 0 on tie state equ (load0-250) think ldp }state , state ldp.ab state , @state stp.a @state , -297 pap1:spl @0, {s1 mov }pap1, >pap1 mov {pap1, {pap2 pap2:djn.f s2+1, {355 ;---- stone SPL.B #28, >-28 ; mod-4 loop MOV.I {0+28, 2-28 ADD.F stone, loop DJN.F loop, <462 ; SPL is placed here For competitions you don't know what you will face, so P-Spacers have a definite edge. I fear oneshots, so I want to launch, so space is tight. However, TinyTim has a neat 4-word P-Engine designed for a defensive/offensive pair, and with a shared launch you can squeeze in 11 words of warrior. Snuffkin and Poke1 both score well, so the combination should be even better? Poke1 is so compact you can even throw in a 0.66c launch and shave 3 cycles on the paper ;-) Incidentally, allowing 2 entries per competitor probably reduces the edge for P-spacers. Authors have a definite incentive to enter a pair of different warriors (given the "best counts" rule) and the author's choice moves from something like (P-Spacer) vs (Paper _or_ Stone), to (P-Spacer + X) vs (Paper _and_ Stone). Looks like a net loss for P-Spacers to me. From: fordbc@hotmail.com (Ben Ford) Subject: Re: Tiny Talon and Stolen1 Date: 15 Apr 2002 09:07:54 -0700 Message-ID: "Robert Macrae" wrote in message news:... > > # %Won Lost Tied Name Author Score > % > > 1 58.2 30.3 11.5 WingShot T Ben Ford 186.18 > 100.0 > ... > > 7 51.3 35.6 13.2 Tiny Talon Robert Macrae 166.94 > 89.7 > ... > > 12 37.5 26.7 35.8 Stolen1 Robert Macrae 148.30 > 79.7 > > Hmmm. Obviously some way to go... Wonder how long till the next round? WingShot and Venom (at #4) are exactly as they appear at Koenigstuhl so no need to post them here. I'm surprised about WingShot coming out on top since it is ranked highly there and figured it would of been in people's test suites. > For competitions you don't know what you will face, so P-Spacers have a > definite edge. I fear oneshots, so I want to launch, so space is tight. > However, TinyTim has a neat 4-word P-Engine designed for a > defensive/offensive pair, and with a shared launch you can squeeze in 11 > words of warrior. Snuffkin and Poke1 both score well, so the combination > should be even better? Poke1 is so compact you can even throw in a 0.66c > launch and shave 3 cycles on the paper ;-) Well, p-spacing doesn't seem to be as effective on the tiny hill anyways. Despite p-space being allowed at the tiny hill on koenigstuhl, the highest ranked one on the recursive list is Dusting Webs at #15 which also uses the TinyTim engine (DWebs doesn't boot however). The length of 20 really limits any intelligence you can give the brain. Additionly, the small core size means warriors find each other quickly so wasting time on p-space (and booting on top of that) is a luxurary you may not really have. > Incidentally, allowing 2 entries per competitor probably reduces the edge > for P-spacers. Authors have a definite incentive to enter a pair of > different warriors (given the "best counts" rule) and the author's choice > moves from something like > (P-Spacer) vs (Paper _or_ Stone), to > (P-Spacer + X) vs (Paper _and_ Stone). > Looks like a net loss for P-Spacers to me. I think p-spacers can still do well under the dual warrior submission format. Especially in the next round where there isn't much prior art (besides people adapting Limb Rending Incissors to the big hill). Since there could be a wide range of submissions, and the warrior size permits you to easily have 5-6 componets if you want (and with minimial risked of q-scan detection even using then), submitting a p-spacer might be the best thing. Ben From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 04/15/02 Date: 15 Apr 2002 10:11:16 -0400 Message-ID: <200204150409.AAA23255@gevjon.ttsg.com> Weekly Status on 04/15/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Apr 14 08:14:16 EDT 2002 # %W/ %L/ %T Name Author Score Age 1 39/ 24/ 37 Inky Ian Oversby 154 473 2 36/ 20/ 44 nPaper II Paul-V Khuong 152 994 3 36/ 22/ 43 Purifier Lukasz Grabun 150 4 4 43/ 36/ 21 Hazy Lazy ... again Steve Gunnell 149 29 5 34/ 22/ 43 Son of Vain Oversby/Pihlaja 147 583 6 37/ 28/ 35 Quicksilver Michal Janeczek 147 756 7 43/ 39/ 18 Vanquisher Lukasz Grabun 146 85 8 34/ 24/ 42 Hopper Phooey 145 120 9 36/ 27/ 37 Uninvited John Metcalf 144 676 10 35/ 27/ 38 Olivia Ben Ford 144 722 11 41/ 41/ 18 Behemot Michal Janeczek 140 817 12 41/ 43/ 17 Deep Freeze X Lukasz Grabun 139 183 13 36/ 33/ 31 Blacken Ian Oversby 139 1241 14 41/ 44/ 14 Test C Phooey 138 121 15 33/ 29/ 38 Revival Fire P.Kline 138 462 16 42/ 46/ 12 G3-b David Moore 137 264 17 35/ 34/ 31 Keyser Soze Anton Marsden 136 695 18 37/ 39/ 23 Blue test 4 Lukasz Grabun 135 1 19 37/ 50/ 12 Aoshi Test B 15 Steve Gunnell 124 8 20 36/ 53/ 11 Hazy Test A 25 Steve Gunnell 118 7 21 1/ 68/ 31 silencer1.0 aton 34 0 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 04/15/02 Date: 15 Apr 2002 10:13:10 -0400 Message-ID: <200204150406.AAA23229@gevjon.ttsg.com> Weekly Status on 04/15/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Sun Apr 14 06:12:31 EDT 2002 # %W/ %L/ %T Name Author Score Age 1 53/ 33/ 15 Fire and Ice II David Moore 172 3 2 33/ 21/ 46 KAT v5 Dave Hillis 146 35 3 37/ 35/ 28 Black Moods Ian Oversby 140 99 4 27/ 16/ 56 Katafutr Michal Janeczek 138 43 5 26/ 14/ 60 Kin John Metcalf 138 11 6 22/ 7/ 71 Evol Cap 4 X John Wilkinson 136 172 7 34/ 31/ 35 Controlled Aggression Ian Oversby 136 103 8 22/ 8/ 70 Denial David Moore 135 44 9 34/ 36/ 30 Ogre Christian Schmidt 132 51 10 38/ 43/ 19 Greetings From Asbury Par JKW 132 63 11 31/ 32/ 37 Big I.F.F.S. Dave Hillis 130 32 12 27/ 25/ 48 Damage Inflicted Robert Macrae 129 42 13 24/ 20/ 57 Venom v0.2b Christian Schmidt 128 125 14 18/ 7/ 75 Black Box v1.1 JKW 128 66 15 17/ 7/ 76 Evolve X v4.0 John Wilkinson 127 120 16 23/ 28/ 50 Disaster Area 2.8 Stefan Foerster 117 30 17 26/ 36/ 38 test CS 117 60 18 27/ 37/ 36 La Vibra 19 Lukasz Grabun 117 1 19 30/ 44/ 26 Pagan John K W 116 157 20 19/ 23/ 58 Purple v0.1 Christian Schmidt 115 124 21 2/ 59/ 40 silencer1.0 aton 44 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 04/15/02 Date: 15 Apr 2002 10:15:05 -0400 Message-ID: <200204150403.AAA23202@gevjon.ttsg.com> Weekly Status on 04/15/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Mon Apr 8 09:58:34 EDT 2002 # Name Author Score Age 1 D-clearM Ken Espiritu 75 88 2 fclear Brian Haskin 48 72 3 test John Metcalf 39 16 4 Her Majesty P.Kline 36 107 5 clock strikes twelve John Metcalf 33 2 6 Xord Monominer XOSC:01 Gino Oblena 31 27 7 8thTest Gino Oblena 30 19 8 QuiVa John Metcalf 27 181 9 Pitbull Christian Schmidt 24 44 10 Tinyshot John Metcalf 23 1 11 Rubber Snake Compudemon 1 0 From: Koth Subject: KOTH.ORG: Status - Standard 04/15/02 Date: 15 Apr 2002 10:16:59 -0400 Message-ID: <200204150400.AAA23167@gevjon.ttsg.com> Weekly Status on 04/15/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Mon Apr 8 10:25:12 EDT 2002 # %W/ %L/ %T Name Author Score Age 1 44/ 37/ 19 Oneshot '88 John Metcalf 150 1 2 33/ 21/ 47 Freight Train David Moore 145 80 3 31/ 21/ 48 Test Alexander (Sasha) Wa 141 19 4 38/ 38/ 24 PacMan David Moore 139 109 5 41/ 43/ 16 Foggy Swamp Beppe Bezzi 138 76 6 30/ 23/ 46 sIMPly.Red v0.95 Leonardo Humberto 138 37 7 30/ 22/ 47 Guardian Ian Oversby 138 79 8 39/ 41/ 20 Stasis David Moore 137 187 9 40/ 44/ 16 Blur '88 Anton Marsden 137 117 10 37/ 38/ 24 Tangle Trap David Moore 136 153 11 39/ 42/ 19 Beholder's Eye V1.7 W. Mintardjo 135 355 12 31/ 30/ 39 vala John Metcalf 132 2 13 39/ 47/ 14 Iron Gate Wayne Sheppard 130 405 14 31/ 32/ 38 Frog Sticker P.Kline 129 29 15 39/ 48/ 13 ig Wayne Sheppard 129 7 16 23/ 17/ 60 EV Paper John K Wilkinson 129 93 17 24/ 20/ 55 Jinglo John Metcalf 128 4 18 24/ 20/ 55 Test I Ian Oversby 128 136 19 25/ 23/ 51 Shish-Ka-Bob Ben Ford 127 35 20 24/ 22/ 54 Evoltmp 88 John K W 126 130 21 4/ 35/ 61 ID 88' compudemon 73 0 From: Lukasz Grabun Subject: Tiny Freeze Date: Mon, 15 Apr 2002 10:20:47 +0000 (UTC) Message-ID: here's one of my tournament's entries: it's a mini-hill version of Deep Freeze X. ;redcode-94 ;name Tiny Freeze ;author Lukasz Grabun ;strategy scanner ;assert CORESIZE==800 tStep equ 210 tGate equ (tTop-4) org tScan tTop tPtr jmp tSpl+1 , >-354 tMov mov tSpl , >tPtr tScan seq }tStep , }tStep+5 mov.ab tScan , @tMov add tSpl , tScan jmn.a tMov , tScan tSpl spl #tStep , #tStep tClr mov tBmb , >tGate djn.f tClr , >tGate tBmb dat >5 , 2-tGate -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: ff95@dial.pipex.com Subject: Re: Tiny Talon and Stolen1 Date: 15 Apr 2002 16:22:42 -0400 Message-ID: <1018896663.3cbb2117a77d4@netmail.pipex.net> Quoting Ben Ford : > The length of 20 really limits any intelligence you can > give the brain. Additionly, the small core size means warriors find > each other quickly so wasting time on p-space (and booting on top of > that) is a luxurary you may not really have. Agreed. The balance in LP is definitely different from normal '94 and P-space goves less of an edge, partly because of the advantages of multipart warriors. > I think p-spacers can still do well under the dual warrior submission > format. Especially in the next round where there isn't much prior art > (besides people adapting Limb Rending Incissors to the big hill). > Since there could be a wide range of submissions, and the warrior size > permits you to easily have 5-6 componets if you want (and with > minimial risked of q-scan detection even using then), submitting a > p-spacer might be the best thing. I would certainly agree if the rules did not specifically disallow P-Space 8-) Robert Message-ID: <3CBB1C59.A1016591@bgb-consulting.com> From: Don Garrett Subject: Python advocacy running rampant ;> Date: Mon, 15 Apr 2002 18:30:52 GMT Jobless Poor wrote: > > Thanks. The doctors say the injury will heal but it might take quite > some time. I've actually recently picked up a book on Python and in > comparison to Perl it seems to have a cleaner syntax amongst other > things. My main concern with Python is open source modules support. Is > it quite large much like Perl's where there is alot of interesting > open source code on www.cpan.org? One major gripe I have with Perl is > portability between Windows in Unix. The ActiveState Perl isn't quite > the same as the Unix version. Are the Python respective Python > interpreters better in this regard? There is a HUGE collection of standard modules that ship, and of additional modules to extend the system. The language itself is identical between plateforms, but the modules do vary somewhat. However, the variances are clearly marked, and are pretty much always related to differences in the underlying OS. The only piece that I can see causing problems would be GUI development, but there are cross plateform GUI modules. The most prevalent, with the widest support for different systems would tkinter, which is using the system from TCL. There are also a number of plateform specific GUI modules that look more native and let you do things in a more native way. I'll disclaimer that I haven't done much GUI stuff in Python. Most of it has been pure computation, system scripting, or networking related. The networking stuff has been VERY simple to work with. I do, however, tend to develop on my Win32 desktop, and then run on a Linux server. I'll also note that if the program is written in a Python way, it will be both a standalone program, and a set of libraries available to other people building Python scripts. This could help other people with things like tournament scripting, hill scripts, genetic evolution, etc. It isn't very hard to wrap a python script around pmars (I've done that already), so this might not really be that big a deal. > The basic idea in developing a new Mars system in one of the above > languages would be better portability and better functionality from a > developers standpoint. As you pointed out there many very good fast > Mars VM's like qmars etc. if you need the extra speed. -- Don Garrett http://www.bgb.cc/garrett/ BGB Consulting garrett@bgb.cc From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: RFC: a new extension to Redcode? Date: 17 Apr 2002 07:11:25 -0700 Message-ID: <872a85cc.0204170611.c52a909@posting.google.com> I had what I think is an interesting idea, as I was trying to write another warrior the last couple days. You all know how a lot of newbies in the past have complained that Corewar is all about mowing through core as fast and aggressively as possible with little concern for "intelligent" decisions, and left. It occured to me that - of course! -, that's because intelligent decision making basically requires a lot of control flow logic. Control flow is expensive. You have the choice between affecting core in some way (MOV, ADD, SUB, DJN), and making a single yes/no decision (SEQ, SNE, JMZ, JMN), within the same timeframe. Nevermind that this made the latter an expensive choice from day one, the situation has been exacerbated in the '94 draft due to all the new modifiers which allow for an extra acceleration of a warrior's aggressive parts. Therefor, intelligent decision making is swapped out to the warrior _writing_ stage, in the form of choosing optimized constants to embed in an otherwise relatively dumb warrior engine. So, assuming my logic is not faulty and provided we do want to promote more intelligent warriors, we obviously have to make control flow cheaper. This is what my idea was about. I wanted to propose two new modifiers. An instruction tagged with the first modifier would not be executed unless it is the target of a jump. If it was encountered as part of the regular execution sequence, it would simply be skipped over at no clock penalty. A triggered SEQ/SNE counts as a jump to the overnext instruction. An instruction tagged with the second modifier would be skipped, again at no clock penalty, but only if directly follows an instruction that was also skipped. I propose that first modifier be written as an exclamation mark, and the second as a question mark, to be used in place of the dot used in the '94 draft to denote modifiers. To illustrate their use, here's an example of how an (intentionally simplistic) scanner using these modifiers might look: scan sne.i x, y add.f constants, -1 mov!i bomb, *scan mov?i bomb, @scan mov?i bomb, }scan mov?i bomb, >scan jmp.i scan If the SNE finds equal memory locations, it will just fall through to the ADD. The ADD falls through to the MOV!, which does not get executed because it was not reached via a jump - instead, the instruction pointer is incremented again prior to the cycle. Now we are going to execute the first MOV? - however, because it has a ? modifier and we skipped the instruction above it, we skip it too. This continues on until we reach the JMP at which point execution resumes normally. Note again that none of the skipped instructions cost a single cycle; even though the instruction pointer sweeps over the MOVs for every execution of the loop, the whole loop executes in 3 cycles as if the MOVs weren't there at all, provided the SNE fell through because its targets were identical. If the SNE does _not_ fall through, it skips the ADD, and lands on the MOV!. This time, the MOV! is reached via a jump. Therefor it is executed, and because it is not skipped, the following MOV? is not skipped either. Same, of course, for the following MOV?s. I believe this addition would be pretty balanced; because of the "target of a jump" condition, using these modifieres in deeply nested loop structures will be hard to say the least. They work best for unrolled code - you pay for their use with code size. So now you can choose between a bloated but fast warrior, or a smaller but much slower one. How does that sound? From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: RFC: a new extension to Redcode? Date: 17 Apr 2002 14:29:08 -0700 Message-ID: <872a85cc.0204171329.1d268ad4@posting.google.com> Don Garrett wrote: > There's not really any need for the second modifier ('?'). > A series of the first modifiers ('!') would have the same effect. Actually, that's incorrect. After executing an instruction with !, execution continues as simple fall through, therefor the following ! modified instruction would be _skipped_. This is a feature. You can build a long row of MOV!s and use a pointer to jump to one of them; the MOV!s below it are skipped. This could used for quickly making a "big" decision (pick 1 out of N choices for the next action). Message-ID: <3CBDC30B.B885F8BB@bgb-consulting.com> From: Don Garrett Subject: Re: RFC: a new extension to Redcode? Date: Wed, 17 Apr 2002 18:45:51 GMT I have no idea of this is a good suggestion or not, but.... Aristoteles Pagaltzis wrote: > An instruction tagged with the first modifier would not be executed > unless it is the target of a jump. If it was encountered as part of > the regular execution sequence, it would simply be skipped over at no > clock penalty. A triggered SEQ/SNE counts as a jump to the overnext > instruction. > > An instruction tagged with the second modifier would be skipped, again > at no clock penalty, but only if directly follows an instruction that > was also skipped. There's not really any need for the second modifier ('?'). A series of the first modifiers ('!') would have the same effect. -- Don Garrett http://www.bgb.cc/garrett/ BGB Consulting garrett@bgb.cc From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: RFC: a new extension to Redcode? Date: 18 Apr 2002 06:47:56 -0700 Message-ID: <92b0a3d6.0204180547.3282671d@posting.google.com> Tiny, fast, deadly. That's what it's all about. There is another variation that I really like, add an optional third operand to the skip instructions, 'skip-to location': scan seq.i x, y, incr ; if equal, skip to incr mov.i bomb, *scan mov.i bomb, @scan mov.i bomb, }scan mov.i bomb, >scan incr add.f constants, scan jmp.i scan This might be fairly easy to add to Pmars. And would give this very useful scan: incr add.f constants, scan ; scan two locations in two cycles! scan seq.i x, y, incr ; mov.i bomb, *scan mov.i bomb, @scan mov.i bomb, }scan mov.i bomb, >scan jmp.i incr You could code a scanner to rival Dclear: scan seq.i >ptr ,>ptr ,scan ; forward sequential scan at 2c ! mov clr , Subject: beginners hill Date: Thu, 18 Apr 2002 08:55:14 +0000 (UTC) Message-ID: i wonder whether there's a possibillity to create such a hill on www.koth.org. i know how frustrating for a newcommer it is to submit new warriors and see their bitter defeat. -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: RFC: a new extension to Redcode? Date: 18 Apr 2002 10:48:33 -0700 Message-ID: <92b0a3d6.0204180948.11e53e82@posting.google.com> > Right, but what would be the A-field and B-field of 'scan' (i. e. what would > be the object code)? Or would you like to introduce a C-field? Yes, a C-field. Paul Kline From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: RFC: a new extension to Redcode? Date: 18 Apr 2002 10:53:20 -0700 Message-ID: <92b0a3d6.0204180953.1f4cfb4f@posting.google.com> > Right, but what would be the A-field and B-field of 'scan' (i. e. what would > be the object code)? Or would you like to introduce a C-field? Oops. Not a field at all. More like a source macro that is interpreted at compile time and can not be changed at run time. Adding a C-field would be an implementation headache. Paul Kline From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: RFC: a new extension to Redcode? Date: 18 Apr 2002 12:05:47 -0700 Message-ID: <872a85cc.0204181105.c5106a2@posting.google.com> "Csaba Biro" wrote in message news:... > Right, but what would be the A-field and B-field of 'scan' (i. e. what would > be the object code)? Or would you like to introduce a C-field? There wouldn't be a C-field and the A- and B-field would be the same as they have always been. pk6811s@acad.drake.edu (P. Kline) wrote in message news:<92b0a3d6.0204180547.3282671d@posting.google.com>... > The third operand would have no modifiers and take up no storage, it's > just a change in the next-instruction pointer. From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: RFC: a new extension to Redcode? Date: 18 Apr 2002 12:33:34 -0700 Message-ID: <872a85cc.0204181133.687d3196@posting.google.com> pk6811s@acad.drake.edu (P. Kline) wrote in message news:<92b0a3d6.0204180547.3282671d@posting.google.com>... > There is another variation that I really like, add an optional > third operand to the skip instructions, 'skip-to location': > scan seq.i x, y, incr ; if equal, skip to incr This would be an _additional_ idea to consider, not a replacement for mine - the !/? modifiers I proposed have more uses than as a simple extension to SEQ/SNE and are useful for more components than just the core of the scanner engine. How about something like this: attack mov!x scan, scan mov.x loop, loop mov.i bomb, >scan mov.i bomb, @scan loop jmp.i scan, attack It attacks both the A- and B-location at nearly zero extra cost in cycles, something not possible with this degree of efficiency in '94. Just as I'm writing this I'm getting a vague intuition that !-instructions might be useful for warriors that detect injuries.. There's probably a million things to use them for that I can't think of right now. These modifiers would also not require much change in the MARS either; most of the work to implement them would be in the redcode parser. One issue I have to point out is there is one thing I don't quite like about the 3-operand CMP idea - it breaks the orthogonality of redcode. (Nevermind redcode already not being very orthogonal, though '94 did a lot to rectify this.) Although if it's not implemented as a C-field, not being able to carry modifiers either, it doesn't go all that far out.. Here's an idea: how about 2 new versions of the CMP instructions that do work like your 3-operand CMP, however rather use not a third operand but a the next instruction's A-field/B-field respectively, as the jump target (disregarding its modifier in that instruction)? Maybe SQA/SNA/SNB/SQB. Not only is it a bit more orthogonal, it also helps balance a bit because you also pay the speed with a bit of extra code (or clever coding to avoid it). > incr add.f constants, scan ; scan two locations in two cycles! > scan seq.i x, y, incr ; Actually a 2 locations in 2 cycles scanner for '94 is what I was working on when I thought of this. |-) > You could code a scanner to rival Dclear: > scan seq.i >ptr ,>ptr ,scan ; forward sequential scan at 2c ! *whoohoo!* > The third operand would have no modifiers and take up no storage, it's > just a change in the next-instruction pointer. > > Scan writers are salivating everywhere. Yes I am indeed! :-P~~~~ > What effect on the War? > > The size/speed ratio for scanners approaches that for bombers, especially > for those sharing cycles with imp-launchers. Could scanning vampires > re-appear? Would qscanners lose their edge? How about a 1c version of CIA? > Look out Silk! > > There would be a lot of innovation and it would be focused on fast decision- > making. And I for one would like too see that - Corewars is already, but I would really love smarter warriors. From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Watch out for the camels! :D (was: Python advocacy running rampant ;>) Date: 18 Apr 2002 13:40:56 -0700 Message-ID: <872a85cc.0204181240.3fea8b8@posting.google.com> Don Garrett wrote in message news:<3CBB1C59.A1016591@bgb-consulting.com>... > Jobless Poor wrote: > > One major gripe I have with Perl is > > portability between Windows in Unix. The ActiveState Perl isn't quite > > the same as the Unix version. What kind of discrepancies did you find? I found that unless I'm specifically using Win32-only modules or calling the typical Unix programs from my script (ie using clearly unportable techniques..), scripts transfer seemlessly between Windows and Unix. I used to write my CGI scripts on Windows (95!!) and run them on a Solaris machine.. Since 5.6.0 (which is what you're likely using if you mention ActiveState), you can even fork() on Windows.. > However, the variances are > clearly marked, and are pretty much always related to differences in the > underlying OS. That's my experience with Perl as well. > The most prevalent, with the widest > support for different systems would tkinter, which is using the system from > TCL. There are also a number of plateform specific GUI modules that look more > native and let you do things in a more native way. Exactly the same is true for Perl - it supports Tk, there are native GUI bindings like for Gtk+, even one for Win32 GDI.. and then there's WxWindows which is a multilanguage multiplatform GUI lib that has a Perl binding and looks like Win32 on Win32 and like Unix on Unix. > The networking > stuff has been VERY simple to work with. I do, however, tend to develop on my > Win32 desktop, and then run on a Linux server. use IO::Socket; # :-) And even without using modules, networking is simple in Perl as well.. > I'll also note that if the program is written in a Python way, it will be > both a standalone program, and a set of libraries available to other people > building Python scripts. Perl does not directly do this automagically, but does have support for modules; a properly designed script would leave its guts available. Don't pay attention to the fact that most Perl scripts available out there are written by relative newbies in what I call Perl pidgin.. proper OO (although it is not textbook OO) is easy to do with Perl. So basically, it comes down to taste. The way I see it, Python looks prettier, Perl is more concise. From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: RFC: a new extension to Redcode? Date: 18 Apr 2002 15:33:36 -0700 Message-ID: <92b0a3d6.0204181433.5e0dd79e@posting.google.com> M Joonas Pihlaja wrote in message news:... > I'm not sure a source macro would make a difference, or I'm not > getting it. After all, each sne/seq instruction would still have > to hold the destination operand somewhere, even if it were hidden > from other types of instructions. But that's effectively a > hidden C-field private for sne/seq instructions. Yuck. You are right of course. The jump address has to be available to the emulator at run time, so stored where? And moved how? > > I think I prefer the ? and ! idea better. > > Joonas But how about a more standard programming structure like gosub/return: scan seq.i x, y gsb attack ; jump to attack add.f constants, scan jmp.i scan attack mov.i bomb, *scan mov.i bomb, @scan mov.i bomb, }scan mov.i bomb, >scan ret ; return to calling routine Or blocking: scan seq.i x, y blk mov.i bomb, *scan mov.i bomb, @scan mov.i bomb, }scan mov.i bomb, >scan klb add.f constants, scan jmp.i scan Blocking could be implemented in source, which is easier to read, but in the emulator like Aristoteles' suggestion. Tying subsequent lines to the execution of the first. "If the previous line was executed then this line is next, else skip it". It requires Pmars to remember whether it arrived at the current instruction by adding one to the pointer or something other than one. A single flag. Don't see how it saves much though, you can do almost as good today: attack mov.i bomb, *scan mov.i bomb, @scan mov.i bomb, }scan mov.i bomb, >scan scan seq.i x, y jmp attack ; only one extra line add.f constants, scan jmp.i scan The "Drum Memory" joke was a good one. Extending an assembly language by adding a blocking feature isn't exactly earth-shaking :-) But redcode writers get excited about little things like that. On the other hand Aristoteles makes a good point, if we really could make decision-making faster it would have a huge impact on the game. In the typical seq/sne scan loop two locations are tested in three cycles. To have a major impact we want two in two. So we have to consolidate two instructions, like: add+sne incr, ptr ; add incr to ptr and skip if what ptr's jmp -1 ; operands are pointing to are not equal ; ugh Or: sne.i a , b add+jmp incr, scan ; add incr to scan and jmp to scan Or: add.f incr, 1 seq+jmp a , b ; REQ = repeat -1 if equal ; RNE = repeat -1 if not equal Now we're back to a 2c scan: sne.i Subject: Re: RFC: a new extension to Redcode? Date: Thu, 18 Apr 2002 16:33:22 +0200 Message-ID: > scan seq.i x, y, incr ; Right, but what would be the A-field and B-field of 'scan' (i. e. what would be the object code)? Or would you like to introduce a C-field? Csaba From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: www.corewars.org ?! Date: 18 Apr 2002 18:34:41 -0700 Message-ID: <872a85cc.0204181734.5b7878f7@posting.google.com> I just saw this for the first time - while searching on Google. Did anyone here know of it?? From: M Joonas Pihlaja Subject: Re: beginners hill Date: Thu, 18 Apr 2002 21:04:22 +0300 Message-ID: On Thu, 18 Apr 2002, Lukasz Grabun wrote: > i wonder whether there's a possibillity to create such a hill > on www.koth.org. i know how frustrating for a newcommer it is to submit > new warriors and see their bitter defeat. Walter put up a redcode beginners' hill on sourceforge! If you're quick, you might see something really unique: a score matrix with no colours ;-) Everyone send your kudos to Walter and go check out http://corewars.sourceforge.net ! Joonas From: M Joonas Pihlaja Subject: Re: RFC: a new extension to Redcode? Date: Thu, 18 Apr 2002 21:13:42 +0300 Message-ID: On 18 Apr 2002, P. Kline wrote: [Csaba Biro wrote:] > > Right, but what would be the A-field and B-field of 'scan' > > (i. e. what would be the object code)? Or would you like to > > introduce a C-field? > Oops. Not a field at all. More like a source macro that is interpreted > at compile time and can not be changed at run time. > > Adding a C-field would be an implementation headache. I'm not sure a source macro would make a difference, or I'm not getting it. After all, each sne/seq instruction would still have to hold the destination operand somewhere, even if it were hidden from other types of instructions. But that's effectively a hidden C-field private for sne/seq instructions. Yuck. I think I prefer the ? and ! idea better. Joonas From: M Joonas Pihlaja Subject: Re: RFC: a new extension to Redcode? Date: Thu, 18 Apr 2002 21:36:33 +0300 Message-ID: On 18 Apr 2002, P. Kline wrote: [snip] > The third operand would have no modifiers and take up no storage, it's > just a change in the next-instruction pointer. "Core War players all over the world excited! Cutting edge Drum Memory (tm) technology promises to leap frog the game to the 1950's." -- The New Zork Times, 4/18/02 ;-) Message-ID: <3CBFA668.9060606@nowhere.com> From: Brett Greenfield Subject: Re: RFC: a new extension to Redcode? Date: Fri, 19 Apr 2002 05:05:05 GMT i have been thinking about something like that for a while. most processors are very good at logic and poor at moving data around, while corewars has the reverse problem (easy data moving poor logic) one remedy its to allow instructions that alter the behavior of the cpu (or virtual cpu in corewar). for example add instruction that changes the default skip location of cmp from 2 to -1 for example. for smarter warriors i suggest making corewars act a bit more like a normal processor. i suggest adding registers pros: if cmp, seq, sne ect.. use a register to tell them where to go eg ~cmp ~seq or some other invalid variable name cons: no real cons to this except that the registers would also serve as a cheap storage (doesnt need a dat or a field) making it possible to make sneeky warriors that dont need dat making them smaller and more hardy use: mov.ar #-1, ~sne ;mov to register or alternatly: str #-1, ~sne ;store to register the second would be easier to implement, kind of like pspace other uses allow mov, add,sub,mul, div to repeat (wont work on jmp or spl,cmp,seq,sne,dat, ...) sorry no ,repeat 1000 SPL 0 stuns example: str #5, ~rep; might put a ceiling on repeats (10?) mov bomb,> {; pre-increment b USE temp ; holds garbage??? or dat 0, 0 ; field is -1 ref(field,temp) ; dat 0,-2 from example add(1,temp:B) ; now its dat 0,-1 ref(temp:B,temp) ; b is now dat 0,1 }; note only add , sub, and ref allowed in data modifier definitions dat 0,1 ; dat 0,-2 ; dat 0, -1 after mov.i 0,>>-1; its basically functional with no loops and cant write the core except to the b field which after whatever indirection in the data field modifier only can point to one thing, i'll think of other limitations and corrections later. will be fun once i (or some one else) gets it working... From: carter_cheng@yahoo.com (Jobless Poor) Subject: Re: Watch out for the camels! :D (was: Python advocacy running rampant ;>) Date: 19 Apr 2002 08:56:16 -0700 Message-ID: I find the language design philosophies between Perl & Python are slightly different. Python more closely resembles are more classical design which is closer to a textbook definition of elegance, which is strongly tied to mathematics. Perl on the other hand allows you to describe the same thing multiple ways which is more like natural languages, which depending on emphasis, allows you to move words around a bit. It also has special features which allow to state certain things like regular expressions very concisely & efficiently(compiled directly into a ND FSA like device I understand). The problems I have had with using the ActiveState Perl is tied to the fork() emulation. I guess MS worked with ActiveState on this and tried to use an aggressive multithreading approach with some shared variables which causes strange behaviour with certain regular expression constructs and possibly some other stuff I don't remember when I last checked in about August. This unfortunately makes alot of the vast body of stuff using process forks somewhat unusable without modification :-/ - or a least that is my understanding. One point in Python's favour for me I guess is the would be threading since Perl threads are still in beta. Other than that I think it may be mainly a matter of taste. From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: RFC: a new extension to Redcode? Date: 19 Apr 2002 10:26:34 -0700 Message-ID: <872a85cc.0204190926.64c925e1@posting.google.com> Brett Greenfield wrote > i suggest adding registers Too far reaching IMO. It may be a good idea to use this concept to start from scratch, but as an extension to '94 it is useless since basically all the existing warriors will be so vastly eclipsed as to become obsolete. It's not that I don't like the concept of registers, but I'd like something that fits with Redcode As We Know It. From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: RFC: a new extension to Redcode? Date: 19 Apr 2002 10:40:58 -0700 Message-ID: <872a85cc.0204190940.5c475fea@posting.google.com> pk6811s@acad.drake.edu (P. Kline) wrote in message news:<92b0a3d6.0204181433.5e0dd79e@posting.google.com>... > M Joonas Pihlaja wrote in message news:... > > I think I prefer the ? and ! idea better. > > Joonas > But how about a more standard programming structure like gosub/return: > gsb attack ; jump to attack > ... > ret ; return to calling routine The idea is nice but I don't like how it fits (not) with '94. Where does the return address get stored? Is it a single hidden register? Or a stack? Is there a restriction on its depth, if so? What happens if a RET is encountered when the stack is empty? Another point is that it doesn't make things any faster - so I'd file it under "maybe to consider" and leave discussion for later.. > blk > mov.i bomb, *scan > mov.i bomb, @scan > mov.i bomb, }scan > mov.i bomb, >scan > klb This could be implemented simply on the parser level to implicitly add !/?'s, making things more readable. If it is meant as a genuine language feature however, how does it handle nesting? The modifiers I proposed don't at all - on purpose: size vs speed. Either you unroll to larger code and execute faster, or you stick to nested loops and pay with cycles. > attack mov.i bomb, *scan > mov.i bomb, @scan > mov.i bomb, }scan > mov.i bomb, >scan > scan seq.i x, y > jmp attack ; only one extra line > add.f constants, scan > jmp.i scan That depends on whether a different part of your logic requires certain things to be stored in front of the SEQ.. *g* > add+sne incr, ptr ; add incr to ptr and skip if what ptr's > jmp -1 ; operands are pointing to are not equal > ; ugh I second "ugh". > sne.i a , b > add+jmp incr, scan ; add incr to scan and jmp to scan add+jmp is not bad, but it's utility is mostly restricted to driving CMP loops. > add.f incr, 1 > seq+jmp a , b ; REQ = repeat -1 if equal This again is too specific IMHO. > sne.i req.i > And of course a 1c stepped scan: > > add.f incr, 1 > req.i a , b It is a nice idea for a new instruction, however I again it is restricted to scanners. I wanted to extend redcode in such a way that any kind of warrior can potentially profit. Of course, scanners, due to their nature, are likely to profit the most from whatever kind of faster logic is added - but I'd like subtle while still substantial changes across the board rather than just a Scanners-R-Us version of '94. From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: RFC: a new extension to Redcode? Date: 19 Apr 2002 10:56:01 -0700 Message-ID: <872a85cc.0204190956.44d8e2f6@posting.google.com> > add+sne incr, ptr ; add incr to ptr and skip if what ptr's > jmp -1 ; operands are pointing to are not equal On second look this is almost the best idea in the bunch, and I like a slightly different version of it even better than my SQA/SNA/SQB/SNB proposition: cmp+jmp target, ptr ; jump to target if ptr A-location equals ptr B-location Maybe, along the lines of DJN, CJE/CJN: "compare and jump if equal / not equal". The 2c stepped scan is not possible with this variant though.. how bad is that? Personally I could live without it - I'm not sure I want decision-making accelerated to the point where scanners can nearly eclipses all other warriors. From: Paul-V Khuong Subject: Re: RFC: a new extension to Redcode? Date: 19 Apr 2002 11:57:08 -0400 Message-ID: <20020418221408.90534.qmail@web11605.mail.yahoo.com> --- Aristoteles Pagaltzis wrote: > pk6811s@acad.drake.edu (P. Kline) wrote in message > news:<92b0a3d6.0204180547.3282671d@posting.google.com>... > > > There is another variation that I really like, add > an optional > > third operand to the skip instructions, 'skip-to > location': > > > scan seq.i x, y, incr ; if equal, skip > to incr > > This would be an _additional_ idea to consider, not > a replacement for > mine - the !/? modifiers I proposed have more uses > than as a simple > extension to SEQ/SNE and are useful for more > components than just the > core of the scanner engine. How about something like > this: [snip] I think there's a problem here:we're thinking too much in terms of gaming, etc. Thus, the only changes we will find will most likely be those that will _improve_ already existing strategies, but not uncover new ones. Instead of thinking in terms of gameplay and consequences, why not try to think as a IA designers? Redcode has a very reduced instruction set, anmd i think we'd like to keep that. So, why not look at what RISC processors are becoming? I haven't ever worked on a RISC box(unfortunately... that and the Cube G4 are my two dream computers :), but i remember reading that RISC processors often have branching included in more instructions than only jumps. If we look at Pagaltzis' proposal, we find it's almost the same concept (DO if zero flag set, etc), although it probably would not be done that way, since it's a bit too complex. Similarly, Kline suggests something that would never be implemented in the proverbial real life(not that it is a real obstacle): cmp&jz/jnz achieve the same effect. What the two proposals have in common is that it would make branching instructions, especially SNE/SEQ, more powerful, without any loss of speed, nor data space. Having a group of zero flags that would be set and unset as a side effect of any writing instruction or modifier, and then having conditional execution based on the state of those flags would give programs a very similar functionality. However, it could bring new variants, since writing instructions now serve as branching. That leaves several questions open about how it should be implemented: how many zero flags, how many conditional execution modifiers, etc. Another question is the amount of clock cycles that should be spent on skipped isntructions. �, �, none? Let's hope we can find additions to the standard that will not solely help strategies in way we can all see, but open up truly new possibilities. Paul Khuong __________________________________________________ Do You Yahoo!? Yahoo! Tax Center - online filing with TurboTax http://taxes.yahoo.com/ From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: bench.pl 0.2 Date: 19 Apr 2002 12:37:37 -0700 Message-ID: <872a85cc.0204191137.2b631cd7@posting.google.com> There we go. It took a lot longer than I thought, but while my interest in Corewars never gets lost it ebbs and flows, and for about 2 months I didn't even think about this project at all anymore. This version is feature complete. There's one more idea I want to "maybe" implement sometime, which is multiple output formats and a quiet mode, so that with the help of a fancy HTML report generator it can be ran as a CGI script. But, that's something for another day.. #!/usr/bin/perl -w # (c)2001 Aristoteles Pagaltzis, licensed under the GPL # see http://www.gnu.org/copyleft/gpl.html # Version 0.1: Dec 30, 2001, Aristoteles Pagaltzis # Version 0.2: Apr 19, 2002, Aristoteles Pagaltzis use strict; use File::Basename; use File::Spec; use Getopt::Std; my %config = ( score_multiplier => 8, score_win => 3, bench => "wilmoo", benchdir_path => "./:~/:/usr/local/share/pmars/", mars_binary => "pmars_server", mars_options => "-b -k -r", rounds => 300, ); my %option = ( config_file => ".bench.conf", verbose => 0, quiet => 0, save_config => 0, ); getopts 'r:b:m:w:c:vqs', \my %switch; options_from_cmdline(); conf_from_file(); conf_from_cmdline(); save_config() if $option{save_config}; usage() unless @ARGV == 1; my $warrior = shift; my $bench_dir = find_bench() || die "Sorry, benchmark '$config{bench}' was nowhere to be seen.\n"; (my @warrior_files = grep -f, glob File::Spec->catfile($bench_dir, '*.[rR][eE][dD]')) || die "Hmm, benchmark '$config{bench}' contains no warriors.\n"; my %info; $info{$_} = get_warrior_info($_) for ($warrior, @warrior_files); # initialize empty scoring about benchmarked warrior @{$info{$warrior}}{qw(win tie loss score)} = (0)x4; print "Benchmarking ", $info{$warrior}->{name}, " in $config{rounds} rounds each against:\n"; my $max_battle_score = $config{rounds} * $config{score_win}; for my $opponent (@warrior_files) { my $pmars = join " ", $config{mars_binary}, $config{mars_options}, $config{rounds}; my $cur_warrior = $info{$opponent}; print " $cur_warrior->{name} "; my @battle = split /\s+/, `$pmars "$warrior" "$opponent" 2> /dev/null`; @$cur_warrior{qw(win tie loss score)} = ( @battle[0,1], $config{rounds} - $battle[0] - $battle[1], $battle[0] * $config{score_win} + $battle[1] ); print "(scored $cur_warrior->{score}/$max_battle_score),\n"; } print "done.\n\n"; printf "Benchmark score: %.2f\n\n", bench_score($_[0]); exit; ######################################################### ######################################################### sub usage { my $path = join "\n", map " $_", split /:/, $config{benchdir_path}; print << "EOT"; Usage: bench.pl [options] Benchmarks a warrior against the set of warriors residing in the benchmark directory, which is searched for in all the directories in the benchmark path in sequence. All files in the benchmark directory are assumed to be warriors regardless of extenstion. EOT print << "EOT" if $option{verbose}; Default configuration options can be overridden using a configuration file stored in either the current or the user's home directory. The format for the file is simply option1 value1 option2 value2 ... See the Configuration section for valid option names. EOT print << "EOT"; Options: -b default benchmark (default: $config{bench}) -r rounds (default: $config{rounds}) -m score multiplier (default: $config{score_multiplier}) -w score for wins (default: $config{score_win}) -v verbose help message -q quiet mode (not implemented yet) -s save configuration to ./$option{config_file} and exit -c configuration filename (default: $option{config_file}) EOT print << "EOT" if $option{verbose}; Configuration: bench $config{bench} rounds $config{rounds} score_multiplier $config{score_multiplier} score_win $config{score_win} mars_binary $config{mars_binary} mars_options $config{mars_options} benchdir_path\n$path EOT exit; } sub options_from_cmdline { my ($k,$v); my %option_name = ( c => 'config_file', v => 'verbose', q => 'quiet', s => 'save_config', ); $option{$v} = delete $switch{$k} || $option{$v} while ($k, $v) = each %option_name; } sub conf_from_file { my $config_file; for (qw(./ ~/)) { $config_file = File::Spec->catdir($_, $option{config_file}); last if -f $config_file and -r $config_file; undef $config_file; } return unless defined $config_file; open(CONFIG, "<", $config_file) or return; my $line; while() { chomp; $line++; my ($key, $val) = split /\s+/, $_, 2; die "Invalid configuration key '$key' in line $line of $config_file.\n" unless exists $config{$key}; $config{$key} = $val; } close CONFIG; } sub conf_from_cmdline { my ($k,$v); my %switch2cfg = ( r => 'rounds', b => 'bench', m => 'score_multiplier', w => 'score_win', ); $config{$switch2cfg{$k}} = $v while ($k,$v) = each %switch; } sub save_config { print "Saving configuration to $option{config_file}.\n"; open(CONFIG, ">", $option{config_file}) or die "Failed opening $option{config_file}: $!\n"; print CONFIG map "$_ $config{$_}\n", sort keys %config; close CONFIG; exit; } sub find_bench { for (split /:/, $config{benchdir_path}) { my $dir = File::Spec->catdir($_, $config{bench}); return $dir if (-d $dir and -x $dir); } return; } sub get_warrior_info { local $_; my (%info, @comments); open WARRIOR, "<$_[0]" or die "Can't open $_[0]: $!\n"; chomp(@comments = grep /^;(name|author|strategy)\s/, ); close WARRIOR; s/\r$// for @comments; $info{strategy} = join "\n", grep defined, map { /^;strategy\s+(.*)/; $1 } @comments; for (@comments) { next unless /^;(name|author)\s+(.*)/; $info{$1} ||= $2; } $info{name} ||= basename($_[0]); return \%info; } From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: RFC: a new extension to Redcode? Date: 19 Apr 2002 16:09:15 -0700 Message-ID: <92b0a3d6.0204191509.54b3d719@posting.google.com> > cmp+jmp target, ptr ; jump to target if ptr A-location equals ptr B-location > > Maybe, along the lines of DJN, CJE/CJN: "compare and jump if equal / > not equal". The 2c stepped scan is not possible with this variant > though.. how bad is that? Personally I could live without it - I'm not > sure I want decision-making accelerated to the point where scanners > can nearly eclipses all other warriors. ok, how about: JEQ a,b ; jump to a if b's a-location eq b's b-location JNE a,b ; jump to a if b's a-location ne b's b-location modifiers on JEQ/JNE are applied to the comparison: JEQ.I = compare the whole instruction JEQ.F = compare just the operands etc. as usual and b's operand modifiers (#*<>{}) are ignored, the values are just used as pointers. with a two-instruction loop: add.f i ,b jeq.i -1 ,b JEQ and JNE can't pre-decrement or post-increment b's pointers, so at first glance the 2c sequential scan goes away. But that's ok, we can do a 1.5c sequential scan now: sne.f >ptr,>ptr jmz.f -1 ,>ptr we are not restricted to scanners, a self-checking routine becomes much faster. you could write an Airbag-type program where a third unit monitors the other two with "JEQ #0,B" followed by a some code to react when B's references are no longer equal. i also see an easy way for a silk-style replicator to send its processes to two children such that they do not alternate turns the way all such programs do now. very useful in killing spirals if you can whack 8 locations in 8 cycles but hard to do efficiently with the present rules. Paul Kline From: "John Metcalf" Subject: Round 2 Date: 19 Apr 2002 18:37:04 -0400 Message-ID: S P R I N G / S U M M E R 2 0 0 2 C O R E W A R T O U R N A M E N T ROUND 2: BIG LP NO-PSPACE (Deadline: 15th June 2002) The second round will take place using the parameters of the large experimental hill with two differences. The use of p-space is not allowed, and also, the maximum number of processes per warrior is limited to 8. Once again, you may enter up to two warriors. Your score for the round will be the score of your highest ranking warrior. pmars -s 55440 -p 8 -c 500000 -l 200 -d 200 Many published limited process warriors will work effectively in a 55440 cell core without modification. Find out which ones and use these as test opponents. Good luck :-) _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: RFC: a new extension to Redcode? Date: 19 Apr 2002 20:36:05 -0700 Message-ID: <872a85cc.0204191936.75e919a@posting.google.com> Paul-V Khuong wrote in message news:<20020418221408.90534.qmail@web11605.mail.yahoo.com>... > --- Aristoteles Pagaltzis wrote: > > This would be an _additional_ idea to consider, not > > a replacement for > > mine - the !/? modifiers I proposed have more uses > > than as a simple > > extension to SEQ/SNE and are useful for more > > components than just the > > core of the scanner engine. How about something like > > this: > [snip] > I think there's a problem here:we're thinking too much > in terms of gaming, etc. Thus, the only changes we > will find will most likely be those that will > _improve_ already existing strategies, but not uncover > new ones. I think you snipped a crucial part :-) > > Just as I'm writing this I'm getting a vague intuition that > > !-instructions might be useful for warriors that detect injuries.. > > There's probably a million things to use them for that I can't think > > of right now. Remember that my original proposal was about !/?, and JEQ/JNE only came as a welcome addition from Paul Kline. I believe !/? could indeed be used for new tricks that the mere addition of a more orthogonal version of SEQ/SNE alone would not make possible. > However, it could bring new > variants, since writing instructions now serve as > branching. I admit the skip modifiers are not as far reaching. But I believe that whatever we do the trinity of paper/stone/scanner (with vamps as a historical curiosity and not counting mere components like imps and clears) will keep us company. If you think back you will find that all of them have been around since '86 in one way or other. Replicators, scanners and bombers have always existed and the only thing that evolved through the years was their implementation, becoming more and more efficient and streamlined. I can't think of any strategy that is fundamentally different from all of those and sincerely believe it's because there is none, nor can there really be. What we _can_ do is improve on the number of ways to _implement_ these strategies, which is just what each previous new version of Redcode did. I believe the skip modifiers have enough potential to bring new, as of yet unthought of tricks to the table. At the same time they would offer more continuity as the new breed of warriors will be not that different from the existing ones, much less than more far reaching ideas would make them. > Another question > is the amount of clock cycles that should be spent on > skipped isntructions. �, �, none? How can one skip half a cycle? I understand how it is theoretically possible, but what effect does a half executed MOV have? > Let's hope we can find additions to the standard that > will not solely help strategies in way we can all see, > but open up truly new possibilities. I _did_ discard (from my personal consideration) a couple of ideas that were posted here for that reason :-) As I said, I'd like a subtle enhancement to decision making that will benefit _all_ types of warriors across the board. It's going to shift the balance of the types of course, but among the new breed of warriors, all _types_ should be stronger than now. From: Paul-V Khuong Subject: Re: RFC: a new extension to Redcode? Date: 20 Apr 2002 10:06:44 -0400 Message-ID: <20020420123720.89650.qmail@web11601.mail.yahoo.com> --- Aristoteles Pagaltzis wrote: > Paul-V Khuong wrote in > message > news:<20020418221408.90534.qmail@web11605.mail.yahoo.com>... > > However, it could bring new > > variants, since writing instructions now serve as > > branching. > > I admit the skip modifiers are not as far reaching. > > But I believe that whatever we do the trinity of > paper/stone/scanner > (with vamps as a historical curiosity and not > counting mere components > like imps and clears) will keep us company. If you > think back you will > find that all of them have been around since '86 in > one way or other. > Replicators, scanners and bombers have always > existed and the only > thing that evolved through the years was their > implementation, > becoming more and more efficient and streamlined. I > can't think of any > strategy that is fundamentally different from all of > those and > sincerely believe it's because there is none, nor > can there really be. Well, empirical (and probably some real research exists somewhere in a random thesis ;) evidence tells me that any balanced game will come down to a rock-paper-scissor metagame. I don't tihnk i've ever seen a 4 strategy game, except when the players were only starting to play. However, it does not mean that the 3 strategies will always stay the same, no matter what, with minor enhancements here and there. It means that we'll relatively quickly get back to a rock-paper-scissor configuration. Why has it mostly been this way sin '86, then? Because the only time ICWS, etc. thought outside the box was with P-SPACE. How can we be surprised that warriors always follow the same basic strategy, when we haven't changed our isntruction archetype? We ahve: branching depending on values in the core, branching, write data and dat. Since i don't think i ahve any decent idea currently, so i won't post any example. > > Another question > > is the amount of clock cycles that should be spent > on > > skipped isntructions. �, �, none? > > How can one skip half a cycle? I understand how it > is theoretically > possible, but what effect does a half executed MOV > have? IMHO, if needed cycle > available cycle, just don't execute and don't update IP. If we were to skip the real instructions, skips would only be written in pairs. __________________________________________________ Do You Yahoo!? Yahoo! Games - play chess, backgammon, pool and more http://games.yahoo.com/ From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: RFC: a new extension to Redcode? Date: 20 Apr 2002 14:06:34 -0700 Message-ID: <872a85cc.0204201306.78474f60@posting.google.com> Paul-V Khuong wrote in message news:<20020420123720.89650.qmail@web11601.mail.yahoo.com>... > Why has it mostly been this way sin '86, then? Because > the only time ICWS, etc. thought outside the box was > with P-SPACE. How can we be surprised that warriors > always follow the same basic strategy, when we haven't > changed our isntruction archetype? We ahve: branching > depending on values in the core, branching, write data > and dat. And this archetype is hardly likely to change. What more than write to core, jump, split or jump conditionally can you do? (Jump on flag or jump on contents of a word.. is both just a conditional jump.) Btw, I never liked the concept of P-Space.. go figure. What I want is just an improved and more interesting Corewars, not a radical departure. I find the current game enjoyable; I'd just like to see ways to make it that bit more interesting, and I'd like the propositions to stick to that frame. See, if you read through the archives you'll notice that a lot of similar discussion has taken place over the years, and it always _was_ interesting but it always followed the same failed pattern of dwindling off into the wild blue yonder of exciting theoretical possibilities with nothing to ever show for it. So I intend to stick to practical, implementable solutions (I have been reading the pmars sources). Theorizing is great, but I'd prefer if the discussion yields something that might enhance the game people are actually _playing_, rather than forgotten thread of posts somewhere in Google's archives. No offense intended if this post comes off as harsh. You _do_ make interesting points. It's just that I had a different goal in mind - and above all, to reach it in the first place. I did put the "RFC:" in my subject on purpose :-) From: Paul-V Khuong Subject: Re: RFC: a new extension to Redcode? Date: 20 Apr 2002 21:18:23 -0400 Message-ID: <20020421010221.63893.qmail@web11603.mail.yahoo.com> --- Aristoteles Pagaltzis wrote: > So I intend to stick to practical, implementable > solutions (I have > been reading the pmars sources). Theorizing is > great, but I'd prefer > if the discussion yields something that might > enhance the game people > are actually _playing_, rather than forgotten thread > of posts > somewhere in Google's archives. I agree completely. Since i have yet to see(heck, i haven't even d/led them) pMar's sources, i'll believe you. BTW, would a volatile, but easier to access pspace-like thing be possible? Like, instead of STP and LDP, have modifiers to access that memory. > No offense intended if this post comes off as harsh. > You _do_ make > interesting points. No offence taken. Hope we can have something like Corewar '03 working soon :) __________________________________________________ Do You Yahoo!? Yahoo! Games - play chess, backgammon, pool and more http://games.yahoo.com/ From: jackdeck@aol.com (Jack Deck) Date: 21 Apr 2002 10:10:35 GMT Subject: Jack Deck's Computer Games! Message-ID: <20020421061035.16889.00004295@mb-mh.aol.com> Hi! My name is Jack! I Just got Started Selling Games! The site isn't much yet, But you can still take a look-see.... give me suggestions,or ask me about a game... if you like it, or think it has potential, drop me a line! www.JackDeck.com Thanks! From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 04/22/02 Date: 22 Apr 2002 07:28:13 -0400 Message-ID: <200204220409.AAA28784@gevjon.ttsg.com> Weekly Status on 04/22/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Apr 21 18:16:17 EDT 2002 # %W/ %L/ %T Name Author Score Age 1 33/ 24/ 44 Inky Ian Oversby 141 477 2 31/ 20/ 49 Son of Vain Oversby/Pihlaja 141 587 3 40/ 39/ 22 Hazy Lazy ... again Steve Gunnell 141 33 4 41/ 42/ 18 Vanquisher Lukasz Grabun 140 89 5 30/ 22/ 49 Purifier Lukasz Grabun 138 8 6 29/ 20/ 51 nPaper II Paul-V Khuong 138 998 7 31/ 25/ 44 Olivia Ben Ford 138 726 8 40/ 42/ 18 Behemot Michal Janeczek 138 821 9 32/ 28/ 41 Quicksilver Michal Janeczek 136 760 10 30/ 26/ 43 Uninvited John Metcalf 134 680 11 39/ 44/ 17 Deep Freeze X Lukasz Grabun 134 187 12 29/ 24/ 48 Hopper Phooey 133 124 13 31/ 28/ 41 Revival Fire P.Kline 133 466 14 25/ 17/ 58 Redemption John Metcalf 133 1 15 33/ 35/ 32 Keyser Soze Anton Marsden 132 699 16 39/ 47/ 14 Test C Phooey 132 125 17 32/ 32/ 36 Blacken Ian Oversby 132 1245 18 40/ 48/ 13 G3-b David Moore 132 268 19 35/ 40/ 24 Blue test 4 Lukasz Grabun 130 5 20 32/ 48/ 19 keine macht f�r niemand toxo 116 4 21 18/ 35/ 47 Red Mercury Joshua 100 0 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 04/22/02 Date: 22 Apr 2002 07:29:37 -0400 Message-ID: <200204220406.AAA28727@gevjon.ttsg.com> Weekly Status on 04/22/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Sat Apr 20 13:44:50 EDT 2002 # %W/ %L/ %T Name Author Score Age 1 54/ 34/ 13 Fire and Ice II David Moore 173 4 2 32/ 21/ 46 KAT v5 Dave Hillis 143 36 3 37/ 33/ 30 Controlled Aggression Ian Oversby 140 104 4 37/ 37/ 26 Black Moods Ian Oversby 138 100 5 26/ 16/ 58 Katafutr Michal Janeczek 136 44 6 31/ 26/ 43 Damage Inflicted Robert Macrae 135 43 7 22/ 8/ 70 Evol Cap 4 X John Wilkinson 135 173 8 22/ 9/ 69 Denial David Moore 134 45 9 25/ 16/ 59 Kin John Metcalf 133 12 10 38/ 45/ 17 Greetings From Asbury Par JKW 131 64 11 30/ 33/ 37 Big I.F.F.S. Dave Hillis 128 33 12 17/ 7/ 75 Black Box v1.1 JKW 128 67 13 17/ 7/ 75 Evolve X v4.0 John Wilkinson 127 121 14 24/ 21/ 54 Venom v0.2b Christian Schmidt 127 126 15 32/ 38/ 29 Ogre Christian Schmidt 127 52 16 34/ 47/ 19 Mischief John Metcalf 122 1 17 30/ 45/ 24 Pagan John K W 116 158 18 22/ 30/ 47 Disaster Area 2.8 Stefan Foerster 114 31 19 25/ 39/ 35 La Vibra 19 Lukasz Grabun 112 2 20 24/ 37/ 39 test CS 111 61 21 15/ 39/ 46 1-3036-eve3 bvowk 91 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 04/22/02 Date: 22 Apr 2002 07:31:02 -0400 Message-ID: <200204220403.AAA28627@gevjon.ttsg.com> Weekly Status on 04/22/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Sun Apr 21 00:38:33 EDT 2002 # Name Author Score Age 1 D-clearM Ken Espiritu 89 88 2 fclear Brian Haskin 52 72 3 test John Metcalf 50 16 4 Her Majesty P.Kline 36 107 5 clock strikes twelve John Metcalf 36 2 6 Xord Monominer XOSC:01 Gino Oblena 35 27 7 Tinyshot John Metcalf 34 1 8 8thTest Gino Oblena 32 19 9 QuiVa John Metcalf 25 181 10 Pitbull Christian Schmidt 19 44 11 1 1 0 0 From: Koth Subject: KOTH.ORG: Status - Standard 04/22/02 Date: 22 Apr 2002 07:32:26 -0400 Message-ID: <200204220400.AAA28564@gevjon.ttsg.com> Weekly Status on 04/22/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Mon Apr 8 10:25:12 EDT 2002 # %W/ %L/ %T Name Author Score Age 1 44/ 37/ 19 Oneshot '88 John Metcalf 150 1 2 33/ 21/ 47 Freight Train David Moore 145 80 3 31/ 21/ 48 Test Alexander (Sasha) Wa 141 19 4 38/ 38/ 24 PacMan David Moore 139 109 5 41/ 43/ 16 Foggy Swamp Beppe Bezzi 138 76 6 30/ 23/ 46 sIMPly.Red v0.95 Leonardo Humberto 138 37 7 30/ 22/ 47 Guardian Ian Oversby 138 79 8 39/ 41/ 20 Stasis David Moore 137 187 9 40/ 44/ 16 Blur '88 Anton Marsden 137 117 10 37/ 38/ 24 Tangle Trap David Moore 136 153 11 39/ 42/ 19 Beholder's Eye V1.7 W. Mintardjo 135 355 12 31/ 30/ 39 vala John Metcalf 132 2 13 39/ 47/ 14 Iron Gate Wayne Sheppard 130 405 14 31/ 32/ 38 Frog Sticker P.Kline 129 29 15 39/ 48/ 13 ig Wayne Sheppard 129 7 16 23/ 17/ 60 EV Paper John K Wilkinson 129 93 17 24/ 20/ 55 Jinglo John Metcalf 128 4 18 24/ 20/ 55 Test I Ian Oversby 128 136 19 25/ 23/ 51 Shish-Ka-Bob Ben Ford 127 35 20 24/ 22/ 54 Evoltmp 88 John K W 126 130 21 4/ 35/ 61 ID 88' compudemon 73 0 From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: stones Date: 23 Apr 2002 06:30:23 -0700 Message-ID: <92b0a3d6.0204230530.52efbcfe@posting.google.com> In a spl-fed loop the inner instructions are executed in reverse order. If you use a bombing loop like: spl #step,#-step add -1,1 mov Subject: www.koth.org Date: Tue, 23 Apr 2002 10:14:25 +0000 (UTC) Message-ID: does anyone maintain this site? the newest CW issue one can find is one year old. -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: Michal Janeczek Subject: Re: stones Date: 23 Apr 2002 10:53:37 -0400 Message-ID: On Tue, 23 Apr 2002, Lukasz Grabun wrote: > ... > John Metcalf somehow managed to make his Uninvited work. The > same is with Janeczek's Quicksilver. Does it need a lot of tweaking or > there's one general rule? Any hints anyone? :) > > There's just one trick: instructions in the loop preceded by spl 0 execute more or less in reverse order. I'm not sure, but I think Kline discovered this while developing Torch. Michal From: Lukasz Grabun Subject: stones Date: Tue, 23 Apr 2002 10:56:27 +0000 (UTC) Message-ID: Currently I'm trying to join the stone/imp programmers group. Much easier to say than to make; I'm trying to make <0.5c stone. It's generally easy to make <0.33c stone (based on Carbonite, for example). However a bomber with mov bomb , @ptr ... mov bomb , @somewhere ... bomb dat 0 , hop is beyond my skills for the stone in s/i warrior needs spl #0, #0 line before it. When one adds it timing goes all wrong and stone enters coreclear after not-so-many cycles and the core is not as corrupted as I wish it to be. Does anyone has any hints how to make this work? John Metcalf somehow managed to make his Uninvited work. The same is with Janeczek's Quicksilver. Does it need a lot of tweaking or there's one general rule? Any hints anyone? :) -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: bezalel@newmail.com (bezalel) Subject: corewar realtime (?) Date: 23 Apr 2002 11:35:08 -0700 Message-ID: <921bbd3.0204231035.624de3ff@posting.google.com> Hey guys, I am thinking over a conversion of corewar. Corewar is a competition between two Programms, but i prefer the competition between two humans. my idea: What about a CoreServer which runs 1 Order per second. Every Player has only one Gnome in the beginning. And then the Opponents can hack more Redcode into the Core in realtime, but only in Bytes that were already processed by their programms. I see the to Players (maybe on a LANparty) sitting in front of their matrixlike Screen with Computercodes running across and hack on their keyboard as loonies. What do you think of that? i want to have some suggestions please bezalel ______________ have phun ! From: carter_cheng@yahoo.com (Jobless Poor) Subject: Re: RFC: a new extension to Redcode? Date: 24 Apr 2002 01:27:42 -0700 Message-ID: Paul-V Khuong wrote in message news:<20020421010221.63893.qmail@web11603.mail.yahoo.com>... > --- Aristoteles Pagaltzis wrote: > > So I intend to stick to practical, implementable > > solutions (I have > > been reading the pmars sources). Theorizing is > > great, but I'd prefer > > if the discussion yields something that might > > enhance the game people > > are actually _playing_, rather than forgotten thread > > of posts > > somewhere in Google's archives. > I agree completely. Since i have yet to see(heck, i > haven't even d/led them) pMar's sources, i'll believe > you. > BTW, would a volatile, but easier to access > pspace-like thing be possible? > Like, instead of STP and LDP, have modifiers to access > that memory. > > No offense intended if this post comes off as harsh. > > You _do_ make > > interesting points. > No offence taken. Hope we can have something like > Corewar '03 working soon :) > > __________________________________________________ > Do You Yahoo!? > Yahoo! Games - play chess, backgammon, pool and more > http://games.yahoo.com/ An interesting discussion with some interesting observations and proposals. Firslty, I would like to say however that almost anything is practically implementable. The obvious caveat being the more complex proposals will take more time ;-). Hopefully in the coming months when my injuries heal a bit more I can have some time to convert my "interpreted Mars" notes and sketches into something functional that can be tested Now for some comments on some of the ideas and perhaps a few observations of my own. The ?/! sequencing modifiers are intriguing. It provides a cheap built-in machine language blocking construct which is not that difficult to implement. There are only objections I can think of. New orthogonal modifier dimensions once in the instruction set cannot be removed easily and thus we need to be sure that it is general/independent enough from the other existing dimensions and potential future dimensions that may be implemented in the future. It also does not exist in any existing machine language which means it moves the game farther away from existing architectures on the one hand and has untested semantics on the other. The call/return instructions are interesting as well. These do exist in at least some modern machine languages but as someone pointed out require new data structures in the VM. For me there is only once choice here implementation wise if it is done which is some sort of per process address stack. Obviously this means that we need to allocate warrior*maxcycles extra numbers in memory if we want arbitrary depth(the worse case). Stacks of some finite depth per process/thread could be set as a config option as well. The binary compares with arbitrary jumps seem to serve a similar purpose as ?/!. They might be preferred over ?/! also since adding instructions is easier than ading dimensions/fields? However if we do remove postinc/predec for this instruction it breaks orthogpnality and we would either have to generalize the addressing code or kludge it. Also some semnatic overlap is created with the single operand compare jumps. Regards, JP. From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: RFC: a new extension to Redcode? Date: 24 Apr 2002 01:33:40 -0700 Message-ID: <872a85cc.0204240033.197fa19f@posting.google.com> I want to get dirty with the pMars sources, but didn't want to just "do my thing" either - so what is the consensus? !/? modifiers as per my proposal and JEQ/JNE as per Kline's? From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: stones Date: 24 Apr 2002 01:55:51 -0700 Message-ID: <872a85cc.0204240055.506a8bd6@posting.google.com> Michal Janeczek wrote in message news:... > There's just one trick: instructions in the loop preceded by spl 0 > execute more or less in reverse order. It's pretty obvious too if you visualize what the process queue looks like. Take f.ex this piece of code: SPL 0 NOP 1 NOP 2 JMP -2 Then look at how the process queue develops: Cycle 1: -> #0 SPL 0 Cycle 2: -> #0 NOP 1 #1 SPL 0 Cycle 3: #0 NOP 2 -> #1 SPL 0 Cycle 4: -> #0 NOP 2 #1 NOP 1 #2 SPL 0 Cycle 5: #0 JMP -2 -> #1 NOP 1 #2 SPL 0 Cycle 6: #0 JMP -2 #1 NOP 2 -> #2 SPL 0 Cycle 7: -> #0 JMP -2 #1 NOP 2 #2 NOP 1 #3 SPL 0 Etc. The SPL 0 sticks to the _end_ of the process queue, but the new process it generates start executing at the _top_ of the loop. Thus, while each individual process executes "forward", the effective execution sequence is in reverse order. From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: Re: RFC: a new extension to Redcode? Date: 24 Apr 2002 07:26:45 -0700 Message-ID: <872a85cc.0204240626.4de9406@posting.google.com> carter_cheng@yahoo.com (Jobless Poor) wrote in message news:... > New orthogonal modifier dimensions once in the instruction set > cannot be removed easily and thus we need to be sure that it is > general/independent enough from the other existing dimensions > and potential future dimensions that may be implemented in the > future. I don't understand this 100%. I know what you're saying, I think, but I'm not sure I get all of it. > It also does not exist in any existing machine language which > means it moves the game farther away from existing > architectures on the one hand and has untested semantics on the > other. This, to be honest, doesn't bother me at all. Redcode is _very_ far removed from any real architecture anyway - no real CPU comes with zero registers and single-cycle memory-to-memory-only instructions. If you want to learn about processors, Corewar is not the place to do so. > The call/return instructions are interesting as well. These do > exist in at least some modern machine languages but as someone > pointed out require new data structures in the VM. Which is not so much of a concern to me; my foremost worry is how something will affect the resulting game (and its orthogonality! - how can you access this stack from within the warrior?). > The binary compares with arbitrary jumps seem to serve a > similar purpose as ?/!. What I recently thought of is that these modifiers are almost the same as a 0-cycle jump, except you cannot place another such 0-cycle jump inside a block that is being jumped over. Now the only way I can see to implement an equivalent instruction is to have f.ex SKP/SKB instructions (SKP=skip next, SKB=skip block which would skip forward to the next SKB instruction). The problem is that prefixes on these instructions are not executed because the instructions do not get executed in the first place, when even a DAT's prefixes affect core. They'd stick out like sore thumbs in the Redcode instruction set. > They might be preferred over ?/! also since adding instructions > is easier than ading dimensions/fields? I think they were considered in addition of !/?. > However if we do remove postinc/predec for this instruction it > breaks orthogpnality and we would either have to generalize the > addressing code or kludge it. There was no talk of removing the prefixes for this instruction. What was meant, as far as I'm concerned, is that the prefixes have no way of affecting the _compared_ addresses because the pair of addresses to compare is taken from the A-location. The prefix on the A-pointer can affect the A-location, but the prefixes at the A-location take no effect. Ie: JEQ $jmp, $cmp What is compared is the A-location of $cmp with the B-location of cmp. A prefix can affect the instruction at $cmp, exactly as it (orthogonally) should, but we do _not_ kludge the instruction so that the modifiers at $cmp affect the A- or B-location of $cmp since $cmp is not being executed. > Also some semnatic overlap is created with the single operand > compare jumps. Please elaborate. :-) Message-ID: From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 24 Apr 2002 16:05:21 GMT Archive-name: games/corewar-faq Last-Modified: September 4, 1999 Version: 4.2 URL: http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Copyright: (c) 1999 Anton Marsden Maintainer: Anton Marsden Posting-Frequency: once every 2 weeks Core War Frequently Asked Questions (rec.games.corewar FAQ) These are the Frequently Asked Questions (and answers) from the Usenet newsgroup rec.games.corewar. A plain text version of this document is posted every two weeks. The latest hypertext version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html and the latest plain text version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.txt. This document is currently being maintained by Anton Marsden (anton@paradise.net.nz). Last modified: Sat Sep 4 00:22:22 NZST 1999 ------------------------------------------------------------------------ To Do * Add the new No-PSpace '94 hill location * Add online location of Dewdney's articles * Make question 17 easier to understand. Add a state diagram? * Add info about infinite hills, related games (C-Robots, Tierra?, ...) * New question: How do I know if my warrior is any good? Refer to beginners' benchmarks, etc. * Add a Who's Who list? * Would very much like someone to compile a collection of the "revolutionary" warriors so that beginners can see how the game has developed over the years. Mail me if interested. ------------------------------------------------------------------------ What's New * Changed primary location of FAQ (again!) * Changed Philip Kendall's home page address. * Updated list server information * Changed primary location of FAQ * Vector-launching code was fixed thanks to Ting Hsu. * Changed the location of Ryan Coleman's paper (LaunchPad -> Launchpad) * Changed pauillac.inria.fr to para.inria.fr ------------------------------------------------------------------------ Table of Contents 1. What is Core War 2. Is it "Core War" or "Core Wars"? 3. Where can I find more information about Core War? 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? 5. What is ICWS'94? Which simulators support ICWS'94? 6. What is the ICWS? 7. What is Core Warrior? 8. Where are the Core War archives? 9. Where can I find a Core War system for ...? 10. Where can I find warrior code? 11. I do not have FTP. How do I get all this great stuff? 12. I do not have access to Usenet. How do I post and receive news? 13. Are there any Core War related WWW sites? 14. What is KotH? How do I enter? 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 16. How does SLT (Skip if Less Than) work? 17. What is the difference between in-register and in-memory evaluation? 18. What is P-space? 19. What does "Missing ;assert .." in my message from KotH mean? 20. How should I format my code? 21. Are there any other Core War related resources I should know about? 22. What does (expression or term of your choice) mean? 23. Other questions? ------------------------------------------------------------------------ 1. What is Core War? Core War is a game played by two or more programs (and vicariously by their authors) written in an assembly language called Redcode and run in a virtual computer called MARS (for Memory Array Redcode Simulator). The object of the game is to cause all processes of the opposing program to terminate, leaving your program in sole posession of the machine. There are Core War systems available for most computer platforms. Redcode has been standardised by the ICWS, and is therefore transportable between all standard Core War systems. The system in which the programs run is quite simple. The core (the memory of the simulated computer) is a continuous array of instructions, empty except for the competing programs. The core wraps around, so that after the last instruction comes the first one again. There are no absolute addresses in Core War. That is, the address 0 doesn't mean the first instruction in the memory, but the instruction that contains the address 0. The next instruction is 1, and the previous one obviously -1. However, all numbers are treated as positive, and are in the range 0 to CORESIZE-1 where CORESIZE is the amount of memory locations in the core - this means that -1 would be treated as CORESIZE-1 in any arithmetic operations, eg. 3218 + 7856 = (3218 + 7856) mod CORESIZE. Many people get confused by this, and it is particularly important when using the SLT instruction. Note that the source code of a program can still contain negative numbers, but if you start using instructions like DIV #-2, #5 it is important to know what effect they will have when executed. The basic unit of memory in Core War is one instruction. Each Redcode instruction contains three parts: * the opcode * the source address (a.k.a. the A-field) * the destination address (a.k.a. the B-field) The execution of the programs is equally simple. The MARS executes one instruction at a time, and then proceeds to the next one in the memory, unless the instruction explicitly tells it to jump to another address. If there is more than one program running, (as is usual) the programs execute alternately, one instruction at a time. The execution of each instruction takes the same time, one cycle, whether it is MOV, DIV or even DAT (which kills the process). Each program may have several processes running. These processes are stored in a task queue. When it is the program's turn to execute an instruction it dequeues a process and executes the corresponding instruction. Processes that are not killed during the execution of the instruction are put back into the task queue. Processes created by a SPL instruction are added to the task queue after the creating process is put back into the task queue. [ToC] ------------------------------------------------------------------------ 2. Is it "Core War" or "Core Wars"? Both terms are used. Early references were to Core War. Later references seem to use Core Wars. I prefer "Core War" to refer to the game in general, "core wars" to refer to more than one specific battle. [ToC] ------------------------------------------------------------------------ 3. Where can I find more information about Core War? Core War was first described in the Core War Guidelines of March, 1984 by D. G. Jones and A. K. Dewdney of the Department of Computer Science at The University of Western Ontario (Canada). Dewdney wrote several "Computer Recreations" articles in Scientific American which discussed Core War, starting with the May 1984 article. Those articles are contained in two anthologies: Library of Author Title Published ISBN Congress Call Number The Armchair Dewdney, Universe: An New York: W. QA76.6 .D517 A. K. Exploration of H. Freeman �0-7167-1939-8 1988 Computer Worlds 1988 The Magic 0-7167-2125-2 Dewdney, Machine: A New York: W.(Hardcover), QA76.6 A. K. Handbook of H. Freeman �0-7167-2144-9 .D5173 1990 Computer Sorcery 1990 (Paperback) A.K. Dewdney's articles are still the most readable introduction to Core War, even though the Redcode dialect described in there is no longer current. For those who are interested, Dewdney has a home page at http://www.csd.uwo.ca/faculty/akd/. [ToC] ------------------------------------------------------------------------ 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? A draft of the official standard (ICWS'88) is available as ftp://www.koth.org/corewar/documents/standards/redcode-icws-88.Z. This document is formatted awkwardly and contains ambiguous statements. For a more approachable intro to Redcode, take a look at Mark Durham's tutorials, ftp://www.koth.org/corewar/documents/tutorial.1.Z and ftp://www.koth.org/corewar/documents/tutorial.2.Z. Steven Morrell has prepared a more practically oriented Redcode tutorial that discusses different warrior classes with lots of example code. This and various other tutorials can be found at http://www.koth.org/papers.html. Even though ICWS'88 is still the "official" standard, you will find that most people are playing by ICWS'94 draft rules and extensions. [ToC] ------------------------------------------------------------------------ 5. What is ICWS'94? Which simulators support ICWS'94? There is an ongoing discussion about future enhancements to the Redcode language. A proposed new standard, dubbed ICWS'94, is currently being evaluated. A major change is the addition of "instruction modifiers" that allow instructions to modify A-field, B-field or both. Also new is a new addressing modes and unrestricted opcode and addressing mode combination ("no illegal instructions"). ICWS'94 is backwards compatible; i.e. ICWS'88 warriors will run correctly on an ICWS'94 system. Take a look at the ICWS'94 draft at ftp://www.koth.org/corewar/documents/icws94.0202.Z for more information. There is a HTML version of this document available at http://www.koth.org/info/icws94.html. You can try out the new standard by submitting warriors to the '94 hills of the KotH servers. Two corewar systems currently support ICWS'94, pMARS (many platforms) and Redcoder (Mac), both available at ftp://www.koth.org/corewar. Note that Redcoder only supports a subset of ICWS'94. [ToC] ------------------------------------------------------------------------ 6. What is the ICWS? About one year after Core War first appeared in Scientific American, the "International Core War Society" (ICWS) was established. Since that time, the ICWS has been responsible for the creation and maintenance of Core War standards and the running of Core War tournaments. There have been six annual tournaments and two standards (ICWS'86 and ICWS'88). The ICWS is no longer active. [ToC] ------------------------------------------------------------------------ 7. What is Core Warrior? Following in the tradition of the Core War News Letter, Push Off, and The 94 Warrior, Core Warrior is a newsletter about strategies and current standings in Core War. Started in October 1995, back issues of Core Warrior (and the other newsletters) are available at http://para.inria.fr/~doligez/corewar/. There is also a Core Warrior index page at http://www.kendalls.demon.co.uk/pak21/corewar/warrior.html which has a summary of the contents of each issue of Core Warrior. Many of the earlier issues contain useful information for beginners. [ToC] ------------------------------------------------------------------------ 8. Where are the Core War archives? Many documents such as the guidelines and the ICWS standards along with previous tournament Redcode entries and complete Core War systems are available via anonymous ftp from ftp://ftp.csua.berkeley.edu/pub/corewar. Also, most of past rec.games.corewar postings (including Redcode source listings) are archived there. Jon Blow (blojo@csua.berkeley.edu) is the archive administrator. When uploading to /pub/corewar/incoming, ask Jon to move your upload to the appropriate directory and announce it on the net. This site is mirrored at: * http://www.koth.org/corewar/ * ftp://www.koth.org/corewar/ * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror The plain text version of this FAQ is automatically archived by news.answers (but this version is probably out-of-date). [ToC] ------------------------------------------------------------------------ 9. Where can I find a Core War system for . . . ? Core War systems are available via anonymous FTP from www.koth.org in the corewar/systems directory. Currently, there are UNIX, IBM PC-compatible, Macintosh, and Amiga Core War systems available there. It is a good idea to check ftp://www.koth.org/corewar/incoming for program updates first. CAUTION! There are many, many Core War systems available which are NOT ICWS'88 (or even ICWS'86) compatible available at various archive sites other than www.koth.org. Generally, the older the program - the less likely it will be ICWS compatible. If you are looking for an ICWS'94 simulator, get pMARS, which is available for many platforms and can be downloaded from: * ftp://ftp.csua.berkeley.edu/pub/corewar (original site) * ftp://www.koth.org/corewar (koth.org mirror) * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror (Planar mirror) * http://www.nc5.infi.net/~wtnewton/corewar/ (Terry Newton) * ftp://members.aol.com/ofechner/corewar (Fechter) Notes: * If you have trouble running pMARS with a graphical display under Win95 then check out http://www.koth.org/pmars.html which should have a pointer to the latest compilation of pMARS for this environment. * RPMs for the Alpha, PowerPC, Sparc and i386 can be found at ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars-rpm/ Reviews of Core War systems would be greatly appreciated in the newsgroup and in the newsletter. Below is a not necessarily complete or up-to-date list of what's available at www.koth.org: MADgic41.lzh corewar for the Amiga, v4.1 MAD4041.lzh older version? MAD50B.lha corewar for the Amiga, beta version 5.0 Redcoder-21.hqx corewar for the Mac, supports ICWS'88 and '94 (without extensions) core-11.hqx corewar for the Mac core-wars-simulator.hqx same as core-11.hqx? corewar_unix_x11.tar.Z corewar for UNIX/X-windows, ICWS'86 but not ICWS'88 compatible koth31.tar.Z corewar for UNIX/X-windows. This program ran the former KotH server at intel.com koth.shar.Z older version kothpc.zip port of older version of KotH to the PC deluxe20c.tar.Z corewar for UNIX (broken X-windows or curses) and PC mars.tar.Z corewar for UNIX, likely not ICWS'88 compatible icons.zip corewar icons for MS-Windows macrored.zip a redcode macro-preprocessor (PC) c88v49.zip PC corewar, textmode display mars88.zip PC corewar, graphics mode display corwp302.zip PC corewar, textmode display, slowish mercury2.zip PC corewar written in assembly, fast! mtourn11.zip tournament scheduler for mercury (req. 4DOS) pmars08s.zip portable system, ICWS'88 and '94, runs on UNIX, PC, Mac, Amiga. C source archive pmars08s.tar.Z same as above pmars08.zip PC executables with graphics display, req 386+ macpmars02.sit.hqx pMARS executable for Mac (port of version 0.2) buggy, no display MacpMARS1.99a.cpt.hqx port of v0.8 for the Mac, with display and debugger MacpMARS1.0s.cpt.hqx C source (MPW, ThinkC) for Mac frontend pvms08.zip pMARS v0.8 for VMS build files/help (req. pmars08s.zip) ApMARS03.lha pMARS executable for Amiga (port of version 0.3.1) wincor11.zip MS-Windows system, shareware ($15) [ToC] ------------------------------------------------------------------------ 10. Where can I find warrior code? To learn the game, it is a good idea to study previously posted warrior code. The FTP archives have code in the ftp://www.koth.org/corewar/redcode directory. A clearly organized on-line warrior collection is available at the Core War web sites (see below). [ToC] ------------------------------------------------------------------------ 11. I do not have FTP. How do I get all this great stuff? There is an FTP email server at bitftp@pucc.princeton.edu. This address may no longer exist. I haven't tested it yet. Send email with a subject and body text of "help" (without the quotes) for more information on its usage. Note that many FTP email gateways are shutting down due to abuse. To get a current list of FTP email servers, look at the Accessing the Internet by E-mail FAQ posted to news.answers. If you don't have access to Usenet, you can retrieve this FAQ one of the following ways: * Send mail to mail-server@rtfm.mit.edu with the body containing "send usenet/news.answers/internet-services/access-via-email". * Send mail to mailbase@mailbase.ac.uk with the body containing "send lis-iis e-access-inet.txt". [ToC] ------------------------------------------------------------------------ 12. I do not have access to Usenet. How do I post and receive news? To receive rec.games.corewar articles by email, join the COREWAR-L list run on the Koth.Org list processor. To join, send the message SUB COREWAR-L FirstName LastName to listproc@koth.org. You can send mail to corewar-l@koth.org to post even if you are not a member of the list. Responsible for the listserver is Scott J. Ellentuch (ttsg@ttsg.com). Servers that allow you to post (but not receive) articles are available. Refer to the Accessing the Internet by E-Mail FAQ for more information. [ToC] ------------------------------------------------------------------------ 13. Are there any Core War related WWW sites? You bet. Each of the two KotH sites sport a world-wide web server. Stormking's Core War page is http://www.koth.org; pizza's is http://www.ecst.csuchico.edu/~pizza/koth . Damien Doligez (a.k.a. Planar) has a web page that features convenient access to regular newsletters (Push Off, The '94 Warrior, Core Warrior) and a well organized library of warriors: http://para.inria.fr/~doligez/corewar/. Convenient for U.S. users, this site is also mirrored at koth.org. [ToC] ------------------------------------------------------------------------ 14. What is KotH? How do I enter? King Of The Hill (KotH) is an ongoing Core War tournament available to anyone with email. You enter by submitting via email a Redcode program (warrior) with special comment lines. You will receive a reply indicating how well your program did against the current top programs "on the hill". There are two styles of KotH tournaments, "classical" and "multi-warrior". The "classical" KotH is a one-on-one tournament, that is your warrior will play 100 battles against each of the 20 other programs currently on the Hill. You receive 3 points for each win and 1 point for each tie. (The existing programs do not replay each other, but their previous battles are recalled.) All scores are updated to reflect your battles and all 21 programs are ranked from high to low. If you are number 21 you are pushed off the Hill, if you are higher than 21 someone else is pushed off. In "multi-warrior" KotH, all warriors on the hill fight each other at the same time. Score calculation is a bit more complex than for the one-on-one tournament. Briefly, points are awarded based on how many warriors survive until the end of a round. A warrior that survives by itself gets more points than a warrior that survives together with other warriors. Points are calculated from the formula (W*W-1)/S, where W is the total number of warriors and S the number of surviving warriors. The pMARS documentation has more information on multi-warrior scoring. The idea for an email-based Core War server came from David Lee. The original KotH was developed and run by William Shubert at Intel starting in 1991, and discontinued after almost three years of service. Currently, KotHs based on Bill's UNIX scripts but offering a wider variety of hills are are running at two sites: koth@koth.org is maintained by Scott J. Ellentuch (tuc@ttsg.com) and pizza@ecst.csuchico.edu by Thomas H. Davies (sd@ecst.csuchico.edu). Up until May '95, the two sites provided overlapping services, i.e. the some of the hill types were offered by both "pizza" and "stormking". To conserve resources, the different hill types are now divided up among the sites. The way you submit warriors to both KotHs is pretty much the same. Therefore, the entry rules described below apply to both "pizza" and "stormking" unless otherwise noted. Entry Rules for King of the Hill Corewar * Write a corewar program. KotH is fully ICWS '88 compatible, EXCEPT that a comma (",") is required between two arguments. * Put a line starting with ";redcode" (or ";redcode-94", etc., see below) at the top of your program. This MUST be the first line. Anything before it will be lost. If you wish to receive mail on every new entrant, use ";redcode verbose". Otherwise you will only receive mail if a challenger makes it onto the hill. Use ";redcode quiet" if you wish to receive mail only when you get shoved off the hill. Additionally, adding ";name " and ";author " will be helpful in the performance reports. Do NOT have a line beginning with ";address" in your code; this will confuse the mail daemon and you won't get mail back. Using ";name" is mandatory on the Pizza hills. In addition, it would be nice if you have lines beginning with ";strategy" that describe the algorithm you use. There are currently seven separate hills you can select by starting your program with ;redcode-94, ;redcode-b, ;redcode-lp, ;redcode-x, ;redcode, ;redcode-94x or ;redcode-94m. The former four run at "pizza", the latter three at "stormking". More information on these hills is listed below. * Mail this file to koth@koth.org or pizza@ecst.csuchico.edu. "Pizza" requires a subject of "koth" (use the -s flag on most mailers). * Within a few minutes you should get mail back telling you whether your program assembled correctly or not. If it did assemble correctly, sit back and wait; if not, make the change required and re-submit. * In an hour or so you should get more mail telling you how your program performed against the current top 20 (or 10) programs. If no news arrives during that time, don't worry; entries are put in a queue and run through the tournament one at a time. A backlog may develop. Be patient. If your program makes it onto the hill, you will get mail every time a new program makes it onto the hill. If this is too much mail, you can use ";redcode[-??] quiet" when you first mail in your program; then you will only get mail when you make it on the top 25 list or when you are knocked off. Using ";redcode[-??] verbose" will give you even more mail; here you get mail every time a new challenger arrives, even if they don't make it onto the top 25 list. Often programmers want to try out slight variations in their programs. If you already have a program named "foo V1.0" on the hill, adding the line ";kill foo" to a new program will automatically bump foo 1.0 off the hill. Just ";kill" will remove all of your programs when you submit the new one. The server kills programs by assigning an impossibly low score; it may therefore take another successful challenge before a killed program is actually removed from the hill. Sample Entry ;redcode ;name Dwarf ;author A. K. Dewdney ;strategy Throw DAT bombs around memory, hitting every 4th memory cell. ;strategy This program was presented in the first Corewar article. bomb DAT #0 dwarf ADD #4, bomb MOV bomb, @bomb JMP dwarf END dwarf ; Programs start at the first line unless ; an "END start" pseudo-op appears to indicate ; the first logical instruction. Also, nothing ; after the END instruction will be assembled. Duration Max. Hill Name Hill Core Max. Before Entry Min. Rounds Instr. Size Size Processes Distance Fought Set Tie Length Pizza's ICWS '94 Draft Hill Extended (Accessed with 25 8000 8000 80000 100 100 200 ICWS '94 ";redcode-94") Draft Pizza's Beginner's Extended Hill (Accessed 25 8000 8000 80000 100 100 200 ICWS '94 with ";redcode-b") Draft Pizza's Experimental Extended (Small) Hill 25 800 800 8000 20 20 200 ICWS '94 (Accessed with Draft ";redcode-x") Pizza's Limited Process (LP) Hill Extended (Accessed with 25 8000 8 80000 200 200 200 ICWS '94 ";redcode-lp") Draft Stormking's ICWS '88 Standard Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '88 ";redcode") Stormking's ICWS '94 No Pspace Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '94 ";redcode-94nop") Stormking's ICWS '94 Experimental Extended (Big) Hill 20 55440 55440 500000 200 200 250 ICWS '94 (Accessed with Draft ";redcode-94x") Stormking's ICWS '94 Multi-Warrior Extended Hill (Accessed 10 8000 8000 80000 100 100 200 ICWS '94 with Draft ";redcode-94m") Note: Warriors on the beginner's hill are retired at age 100. If you just want to get a status report without actually challenging the hills, send email with ";status" as the message body (and don't forget "Subject: koth" for "pizza"). If you send mail to "pizza" with "Subject: koth help" you will receive instructions that may be more up to date than those contained in this document. At "stormking", a message body with ";help" will return brief instructions. If you submit code containing a ";test" line, your warrior will be assembled but not actually pitted against the warriors on the hill. At "pizza", you can use ";redcode[-??] test" to do a test challenge of the Hill without affecting the status of the Hill. These challenges can be used to see how well your warrior does against the current Hill warriors. All hills run portable MARS (pMARS) version 0.8, a platform-independent Core War system available at www.koth.org. The '94 and '94x hills allow five experimental opcodes and three experimental addressing modes currently not covered in the ICWS'94 draft document: * LDP - Load P-Space * STP - Store P-Space * SEQ - Skip if EQual (synonym for CMP) * SNE - Skip if Not Equal * NOP - (No OPeration) * * - indirect using A-field as pointer * { - predecrement indirect using A-field * } - postincrement indirect using A-field [ToC] ------------------------------------------------------------------------ 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? Core is initialized to DAT 0, 0. This is an illegal instruction (in source code) under ICWS'88 rules and strictly compliant assemblers (such as KotH or pmars -8) will not let you have a DAT 0, 0 instruction in your source code - only DAT #0, #0. So this begs the question, how to compare something to see if it is empty core. The answer is, most likely the instruction before your first instruction and the instruction after your last instruction are both DAT 0, 0. You can use them, or any other likely unmodified instructions, for comparison. Note that under ICWS'94, DAT 0, 0 is a legal instruction. [ToC] ------------------------------------------------------------------------ 16. How does SLT (Skip if Less Than) work? SLT gives some people trouble because of the way modular arithmetic works. It is important to note that all negative numbers are converted to positive numbers before a battles begins. Example: -1 becomes M-1 where M is the memory size (core size). Once you realize that all numbers are treated as positive, it is clear what is meant by "less than". It should also be clear that no number is less than zero. [ToC] ------------------------------------------------------------------------ 17. What is the difference between in-register and in-memory evaluation? These terms refer to the way instruction operands are evaluated. The '88 Redcode standard ICWS'88 is unclear about whether a simulator should "buffer" the result of A-operand evaluation before the B-operand is evaluated. Simulators that do buffer are said to use in-register evaluation, those that don't, in-memory evaluation. ICWS'94 clears this confusion by mandating in-register evaluation. Instructions that execute differently under these two forms of evaluation are MOV, ADD, SUB, MUL, DIV and MOD where the effective address of the A-operand is modified by evaluation of the B-operand. This is best illustrated by an example: L1 mov L2, mov.i #0, impsize Bootstrapping Strategy of copying the active portion of the program away from the initial location, leaving a decoy behind and making the relocated program as small as possible. B-Scanners Scanners which only recognize non-zero B-fields. example add #10, scan scan jmz example, 10 c Measure of speed, equal to one location per cycle. Speed of light. CMP-Scanner A Scanner which uses a CMP instruction to look for opponents. example add step, scan scan cmp 10, 30 jmp attack jmp example step dat #20, #20 Colour Property of bombs making them visible to scanners, causing them to attack useless locations, thus slowing them down. example dat #100 Core-Clear Code that sequentially overwrites core with DAT instructions; usually the last part of a program. Decoys Bogus or unused instructions meant to slow down scanners. Typically, DATs with non-zero B-fields. Decrement Resistant Property of warriors making them functional (or at least partially functional) when overrun by a DJN-stream. DJN-Stream (also DJN-Train) Using a DJN command to rapidly decrement core locations. example ... ... djn example, <4000 Dwarf The prototypical small bomber. Gate-busting (also gate-crashing) technique to "interweave" a decrement-resistant imp-spiral (e.g. MOV 0, 2668) with a standard one to overrun imp-gates. Hybrids warriors that combine two or more of the basic strategies, either in sequence (e.g. stone->paper) or in parallel (e.g. imp/stone). Imp Program which only uses the MOV instruction. example mov 0, 1 or example mov 0, 2 mov 0, 2 Imp-Gate A location in core which is bombed or decremented continuously so that an Imp can not pass. Also used to describe the program-code which maintains the gate. example ... ... spl 0, mov.i #0,IMPSIZE Mirror see reflection. On-axis/off-axis On-axis scanners compare two locations M/2 apart, where M is the memory size. Off-axis scanners use some other separation. Optimal Constants (also optima-type constants) Bomb or scan increments chosen to cover core most effectively, i.e. leaving gaps of uniform size. Programs to calculate optimal constants and lists of optimal numbers are available at www.koth.org. Paper A Paper-like program is one which replicates itself many times. Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy. P-Warrior A warrior which uses the results of previous round(s) in order to determine which strategy it will use. Pit-Trapper (also Slaver, Vampire). A program which enslaves another. Usually accomplished by bombing with JMPs to a SPL 0 pit with an optional core-clear routine. Q^2 Scan A modern version of the Quick Scan where anything found is attacked almost immediately. Quick Scan 2c scan of a set group of core locations with bombing if anything is found. Both of the following codes snips scan 16 locations and check for a find. If anything is found, it is attacked, otherwise 16 more locations are scanned. Example: start s1 for 8 ;'88 scan cmp start+100*s1, start+100*s1+4000 ;check two locations mov #start+100*s1-found, found ;they differ so set pointer rof jmn attack, found ;if we have something, get it s2 for 8 cmp start+100*(s2+6), start+100*(s2+6)+4000 mov #start+100*(s2+6)-found, found rof found jmz moveme, #0 ;skip attack if qscan found nothing attack cmp @found, start-1 ;does found points to empty space? add #4000, found ;no, so point to correct location mov start-1, @found ;move a bomb moveme jmp 0, 0 In ICWS'94, the quick scan code is more compact because of the SNE opcode: start ;'94 scan s1 for 4 sne start+400*s1, start+400*s1+100 ;check two locations seq start+400*s1+200, start+400*s1+300 ;check two locations mov #start+400*s1-found, found ;they differ so set pointer rof jmn which, found ;if we have something, get it s2 for 4 sne start+400*(s2+4), start+400*(s2+4)+100 seq start+400*(s2+4)+200, start+400*(s2+4)+300 mov #start+400*(s2+4)-found-100, found rof found jmz moveme, #0 ;skip attack if qscan found nothing add #100, -1 ;increment pointer till we get the which jmn -1, @found ;right place mov start-1, @found ;move a bomb moveme jmp 0, 0 Reflection Copy of a program or program part, positioned to make the active program invisible to a CMP-scanner. Replicator Generic for Paper. A program which makes many copies of itself, each copy also making copies. Self-Splitting Strategy of amplifying the number of processes executing a piece of code. example spl 0 loop add #10, example mov example, @example jmp loop Scanner A program which searches through core for an opponent rather than bombing blindly. Scissors A program designed to beat replicators, usually a (B-field scanning) vampire. Part of the Paper-Scissors-Stone analogy. Self-Repair Ability of a program to fix it's own code after attack. Silk A replicator which splits off a process to each new copy before actually copying the code. This allows it to replicate extremely quickly. This technique is only possible under the '94 draft, because it requires post-increment indirect addressing. Example: spl 1 mov -1, 0 spl 1 ;generate 6 consecutive processes silk spl 3620, #0 ;split to new copy mov >-1, }-1 ;copy self to new location mov bomb, >2000 ;linear bombing mov bomb, }2042 ;A-indirect bombing for anti-vamp jmp silk, {silk ;reset source pointer, make new copy bomb dat >2667, >5334 ;anti-imp bomb Slaver see Pit-Trapper. Stealth Property of programs, or program parts, which are invisible to scanners, accomplished by using zero B-fields and reflections. Stone A Stone-like program designed to be a small bomber. Part of the Paper-Scissors-Stone analogy. Stun A type of bomb which makes the opponent multiply useless processes, thus slowing it down. Example is referred to as a SPL-JMP bomb. example spl 0 jmp -1 Two-Pass Core-Clear (also SPL/DAT Core-Clear) core clear that fills core first with SPL instructions, then with DATs. This is very effective in killing paper and certain imp-spiral variations. Vampire see Pit-Trapper. Vector Launch one of several means to start an imp-spiral running. As fast as Binary Launch, but requiring much less code. See also JMP/ADD Launch and Binary Launch. This example is one form of a Vector Launch: sz EQU 2667 spl 1 spl 1 jmp @vt, }0 vt dat #0, imp+0*sz ; start of vector table dat #0, imp+1*sz dat #0, imp+2*sz dat #0, imp+3*sz ; end of vector table imp mov.i #0, sz [ToC] ------------------------------------------------------------------------ 23. Other questions? Just ask in the rec.games.corewar newsgroup or contact me. If you are shy, check out the Core War archives first to see if your question has been answered before. [ToC] ------------------------------------------------------------------------ Credits Additions, corrections, etc. to this document are solicited. Thanks in particular to the following people who have contributed major portions of this document: * Mark Durham (wrote the original version of the FAQ) * Paul Kline * Randy Graham * Stefan Strack (maintained a recent version of the FAQ) ------------------------------------------------------------------------ Copyright � 1999 Anton Marsden. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ------------------------------------------------------------------------ Message-ID: From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 25 Apr 2002 11:33:29 GMT Archive-name: games/corewar-faq Last-Modified: September 4, 1999 Version: 4.2 URL: http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Copyright: (c) 1999 Anton Marsden Maintainer: Anton Marsden Posting-Frequency: once every 2 weeks Core War Frequently Asked Questions (rec.games.corewar FAQ) These are the Frequently Asked Questions (and answers) from the Usenet newsgroup rec.games.corewar. A plain text version of this document is posted every two weeks. The latest hypertext version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html and the latest plain text version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.txt. This document is currently being maintained by Anton Marsden (anton@paradise.net.nz). Last modified: Sat Sep 4 00:22:22 NZST 1999 ------------------------------------------------------------------------ To Do * Add the new No-PSpace '94 hill location * Add online location of Dewdney's articles * Make question 17 easier to understand. Add a state diagram? * Add info about infinite hills, related games (C-Robots, Tierra?, ...) * New question: How do I know if my warrior is any good? Refer to beginners' benchmarks, etc. * Add a Who's Who list? * Would very much like someone to compile a collection of the "revolutionary" warriors so that beginners can see how the game has developed over the years. Mail me if interested. ------------------------------------------------------------------------ What's New * Changed primary location of FAQ (again!) * Changed Philip Kendall's home page address. * Updated list server information * Changed primary location of FAQ * Vector-launching code was fixed thanks to Ting Hsu. * Changed the location of Ryan Coleman's paper (LaunchPad -> Launchpad) * Changed pauillac.inria.fr to para.inria.fr ------------------------------------------------------------------------ Table of Contents 1. What is Core War 2. Is it "Core War" or "Core Wars"? 3. Where can I find more information about Core War? 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? 5. What is ICWS'94? Which simulators support ICWS'94? 6. What is the ICWS? 7. What is Core Warrior? 8. Where are the Core War archives? 9. Where can I find a Core War system for ...? 10. Where can I find warrior code? 11. I do not have FTP. How do I get all this great stuff? 12. I do not have access to Usenet. How do I post and receive news? 13. Are there any Core War related WWW sites? 14. What is KotH? How do I enter? 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 16. How does SLT (Skip if Less Than) work? 17. What is the difference between in-register and in-memory evaluation? 18. What is P-space? 19. What does "Missing ;assert .." in my message from KotH mean? 20. How should I format my code? 21. Are there any other Core War related resources I should know about? 22. What does (expression or term of your choice) mean? 23. Other questions? ------------------------------------------------------------------------ 1. What is Core War? Core War is a game played by two or more programs (and vicariously by their authors) written in an assembly language called Redcode and run in a virtual computer called MARS (for Memory Array Redcode Simulator). The object of the game is to cause all processes of the opposing program to terminate, leaving your program in sole posession of the machine. There are Core War systems available for most computer platforms. Redcode has been standardised by the ICWS, and is therefore transportable between all standard Core War systems. The system in which the programs run is quite simple. The core (the memory of the simulated computer) is a continuous array of instructions, empty except for the competing programs. The core wraps around, so that after the last instruction comes the first one again. There are no absolute addresses in Core War. That is, the address 0 doesn't mean the first instruction in the memory, but the instruction that contains the address 0. The next instruction is 1, and the previous one obviously -1. However, all numbers are treated as positive, and are in the range 0 to CORESIZE-1 where CORESIZE is the amount of memory locations in the core - this means that -1 would be treated as CORESIZE-1 in any arithmetic operations, eg. 3218 + 7856 = (3218 + 7856) mod CORESIZE. Many people get confused by this, and it is particularly important when using the SLT instruction. Note that the source code of a program can still contain negative numbers, but if you start using instructions like DIV #-2, #5 it is important to know what effect they will have when executed. The basic unit of memory in Core War is one instruction. Each Redcode instruction contains three parts: * the opcode * the source address (a.k.a. the A-field) * the destination address (a.k.a. the B-field) The execution of the programs is equally simple. The MARS executes one instruction at a time, and then proceeds to the next one in the memory, unless the instruction explicitly tells it to jump to another address. If there is more than one program running, (as is usual) the programs execute alternately, one instruction at a time. The execution of each instruction takes the same time, one cycle, whether it is MOV, DIV or even DAT (which kills the process). Each program may have several processes running. These processes are stored in a task queue. When it is the program's turn to execute an instruction it dequeues a process and executes the corresponding instruction. Processes that are not killed during the execution of the instruction are put back into the task queue. Processes created by a SPL instruction are added to the task queue after the creating process is put back into the task queue. [ToC] ------------------------------------------------------------------------ 2. Is it "Core War" or "Core Wars"? Both terms are used. Early references were to Core War. Later references seem to use Core Wars. I prefer "Core War" to refer to the game in general, "core wars" to refer to more than one specific battle. [ToC] ------------------------------------------------------------------------ 3. Where can I find more information about Core War? Core War was first described in the Core War Guidelines of March, 1984 by D. G. Jones and A. K. Dewdney of the Department of Computer Science at The University of Western Ontario (Canada). Dewdney wrote several "Computer Recreations" articles in Scientific American which discussed Core War, starting with the May 1984 article. Those articles are contained in two anthologies: Library of Author Title Published ISBN Congress Call Number The Armchair Dewdney, Universe: An New York: W. QA76.6 .D517 A. K. Exploration of H. Freeman �0-7167-1939-8 1988 Computer Worlds 1988 The Magic 0-7167-2125-2 Dewdney, Machine: A New York: W.(Hardcover), QA76.6 A. K. Handbook of H. Freeman �0-7167-2144-9 .D5173 1990 Computer Sorcery 1990 (Paperback) A.K. Dewdney's articles are still the most readable introduction to Core War, even though the Redcode dialect described in there is no longer current. For those who are interested, Dewdney has a home page at http://www.csd.uwo.ca/faculty/akd/. [ToC] ------------------------------------------------------------------------ 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? A draft of the official standard (ICWS'88) is available as ftp://www.koth.org/corewar/documents/standards/redcode-icws-88.Z. This document is formatted awkwardly and contains ambiguous statements. For a more approachable intro to Redcode, take a look at Mark Durham's tutorials, ftp://www.koth.org/corewar/documents/tutorial.1.Z and ftp://www.koth.org/corewar/documents/tutorial.2.Z. Steven Morrell has prepared a more practically oriented Redcode tutorial that discusses different warrior classes with lots of example code. This and various other tutorials can be found at http://www.koth.org/papers.html. Even though ICWS'88 is still the "official" standard, you will find that most people are playing by ICWS'94 draft rules and extensions. [ToC] ------------------------------------------------------------------------ 5. What is ICWS'94? Which simulators support ICWS'94? There is an ongoing discussion about future enhancements to the Redcode language. A proposed new standard, dubbed ICWS'94, is currently being evaluated. A major change is the addition of "instruction modifiers" that allow instructions to modify A-field, B-field or both. Also new is a new addressing modes and unrestricted opcode and addressing mode combination ("no illegal instructions"). ICWS'94 is backwards compatible; i.e. ICWS'88 warriors will run correctly on an ICWS'94 system. Take a look at the ICWS'94 draft at ftp://www.koth.org/corewar/documents/icws94.0202.Z for more information. There is a HTML version of this document available at http://www.koth.org/info/icws94.html. You can try out the new standard by submitting warriors to the '94 hills of the KotH servers. Two corewar systems currently support ICWS'94, pMARS (many platforms) and Redcoder (Mac), both available at ftp://www.koth.org/corewar. Note that Redcoder only supports a subset of ICWS'94. [ToC] ------------------------------------------------------------------------ 6. What is the ICWS? About one year after Core War first appeared in Scientific American, the "International Core War Society" (ICWS) was established. Since that time, the ICWS has been responsible for the creation and maintenance of Core War standards and the running of Core War tournaments. There have been six annual tournaments and two standards (ICWS'86 and ICWS'88). The ICWS is no longer active. [ToC] ------------------------------------------------------------------------ 7. What is Core Warrior? Following in the tradition of the Core War News Letter, Push Off, and The 94 Warrior, Core Warrior is a newsletter about strategies and current standings in Core War. Started in October 1995, back issues of Core Warrior (and the other newsletters) are available at http://para.inria.fr/~doligez/corewar/. There is also a Core Warrior index page at http://www.kendalls.demon.co.uk/pak21/corewar/warrior.html which has a summary of the contents of each issue of Core Warrior. Many of the earlier issues contain useful information for beginners. [ToC] ------------------------------------------------------------------------ 8. Where are the Core War archives? Many documents such as the guidelines and the ICWS standards along with previous tournament Redcode entries and complete Core War systems are available via anonymous ftp from ftp://ftp.csua.berkeley.edu/pub/corewar. Also, most of past rec.games.corewar postings (including Redcode source listings) are archived there. Jon Blow (blojo@csua.berkeley.edu) is the archive administrator. When uploading to /pub/corewar/incoming, ask Jon to move your upload to the appropriate directory and announce it on the net. This site is mirrored at: * http://www.koth.org/corewar/ * ftp://www.koth.org/corewar/ * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror The plain text version of this FAQ is automatically archived by news.answers (but this version is probably out-of-date). [ToC] ------------------------------------------------------------------------ 9. Where can I find a Core War system for . . . ? Core War systems are available via anonymous FTP from www.koth.org in the corewar/systems directory. Currently, there are UNIX, IBM PC-compatible, Macintosh, and Amiga Core War systems available there. It is a good idea to check ftp://www.koth.org/corewar/incoming for program updates first. CAUTION! There are many, many Core War systems available which are NOT ICWS'88 (or even ICWS'86) compatible available at various archive sites other than www.koth.org. Generally, the older the program - the less likely it will be ICWS compatible. If you are looking for an ICWS'94 simulator, get pMARS, which is available for many platforms and can be downloaded from: * ftp://ftp.csua.berkeley.edu/pub/corewar (original site) * ftp://www.koth.org/corewar (koth.org mirror) * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror (Planar mirror) * http://www.nc5.infi.net/~wtnewton/corewar/ (Terry Newton) * ftp://members.aol.com/ofechner/corewar (Fechter) Notes: * If you have trouble running pMARS with a graphical display under Win95 then check out http://www.koth.org/pmars.html which should have a pointer to the latest compilation of pMARS for this environment. * RPMs for the Alpha, PowerPC, Sparc and i386 can be found at ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars-rpm/ Reviews of Core War systems would be greatly appreciated in the newsgroup and in the newsletter. Below is a not necessarily complete or up-to-date list of what's available at www.koth.org: MADgic41.lzh corewar for the Amiga, v4.1 MAD4041.lzh older version? MAD50B.lha corewar for the Amiga, beta version 5.0 Redcoder-21.hqx corewar for the Mac, supports ICWS'88 and '94 (without extensions) core-11.hqx corewar for the Mac core-wars-simulator.hqx same as core-11.hqx? corewar_unix_x11.tar.Z corewar for UNIX/X-windows, ICWS'86 but not ICWS'88 compatible koth31.tar.Z corewar for UNIX/X-windows. This program ran the former KotH server at intel.com koth.shar.Z older version kothpc.zip port of older version of KotH to the PC deluxe20c.tar.Z corewar for UNIX (broken X-windows or curses) and PC mars.tar.Z corewar for UNIX, likely not ICWS'88 compatible icons.zip corewar icons for MS-Windows macrored.zip a redcode macro-preprocessor (PC) c88v49.zip PC corewar, textmode display mars88.zip PC corewar, graphics mode display corwp302.zip PC corewar, textmode display, slowish mercury2.zip PC corewar written in assembly, fast! mtourn11.zip tournament scheduler for mercury (req. 4DOS) pmars08s.zip portable system, ICWS'88 and '94, runs on UNIX, PC, Mac, Amiga. C source archive pmars08s.tar.Z same as above pmars08.zip PC executables with graphics display, req 386+ macpmars02.sit.hqx pMARS executable for Mac (port of version 0.2) buggy, no display MacpMARS1.99a.cpt.hqx port of v0.8 for the Mac, with display and debugger MacpMARS1.0s.cpt.hqx C source (MPW, ThinkC) for Mac frontend pvms08.zip pMARS v0.8 for VMS build files/help (req. pmars08s.zip) ApMARS03.lha pMARS executable for Amiga (port of version 0.3.1) wincor11.zip MS-Windows system, shareware ($15) [ToC] ------------------------------------------------------------------------ 10. Where can I find warrior code? To learn the game, it is a good idea to study previously posted warrior code. The FTP archives have code in the ftp://www.koth.org/corewar/redcode directory. A clearly organized on-line warrior collection is available at the Core War web sites (see below). [ToC] ------------------------------------------------------------------------ 11. I do not have FTP. How do I get all this great stuff? There is an FTP email server at bitftp@pucc.princeton.edu. This address may no longer exist. I haven't tested it yet. Send email with a subject and body text of "help" (without the quotes) for more information on its usage. Note that many FTP email gateways are shutting down due to abuse. To get a current list of FTP email servers, look at the Accessing the Internet by E-mail FAQ posted to news.answers. If you don't have access to Usenet, you can retrieve this FAQ one of the following ways: * Send mail to mail-server@rtfm.mit.edu with the body containing "send usenet/news.answers/internet-services/access-via-email". * Send mail to mailbase@mailbase.ac.uk with the body containing "send lis-iis e-access-inet.txt". [ToC] ------------------------------------------------------------------------ 12. I do not have access to Usenet. How do I post and receive news? To receive rec.games.corewar articles by email, join the COREWAR-L list run on the Koth.Org list processor. To join, send the message SUB COREWAR-L FirstName LastName to listproc@koth.org. You can send mail to corewar-l@koth.org to post even if you are not a member of the list. Responsible for the listserver is Scott J. Ellentuch (ttsg@ttsg.com). Servers that allow you to post (but not receive) articles are available. Refer to the Accessing the Internet by E-Mail FAQ for more information. [ToC] ------------------------------------------------------------------------ 13. Are there any Core War related WWW sites? You bet. Each of the two KotH sites sport a world-wide web server. Stormking's Core War page is http://www.koth.org; pizza's is http://www.ecst.csuchico.edu/~pizza/koth . Damien Doligez (a.k.a. Planar) has a web page that features convenient access to regular newsletters (Push Off, The '94 Warrior, Core Warrior) and a well organized library of warriors: http://para.inria.fr/~doligez/corewar/. Convenient for U.S. users, this site is also mirrored at koth.org. [ToC] ------------------------------------------------------------------------ 14. What is KotH? How do I enter? King Of The Hill (KotH) is an ongoing Core War tournament available to anyone with email. You enter by submitting via email a Redcode program (warrior) with special comment lines. You will receive a reply indicating how well your program did against the current top programs "on the hill". There are two styles of KotH tournaments, "classical" and "multi-warrior". The "classical" KotH is a one-on-one tournament, that is your warrior will play 100 battles against each of the 20 other programs currently on the Hill. You receive 3 points for each win and 1 point for each tie. (The existing programs do not replay each other, but their previous battles are recalled.) All scores are updated to reflect your battles and all 21 programs are ranked from high to low. If you are number 21 you are pushed off the Hill, if you are higher than 21 someone else is pushed off. In "multi-warrior" KotH, all warriors on the hill fight each other at the same time. Score calculation is a bit more complex than for the one-on-one tournament. Briefly, points are awarded based on how many warriors survive until the end of a round. A warrior that survives by itself gets more points than a warrior that survives together with other warriors. Points are calculated from the formula (W*W-1)/S, where W is the total number of warriors and S the number of surviving warriors. The pMARS documentation has more information on multi-warrior scoring. The idea for an email-based Core War server came from David Lee. The original KotH was developed and run by William Shubert at Intel starting in 1991, and discontinued after almost three years of service. Currently, KotHs based on Bill's UNIX scripts but offering a wider variety of hills are are running at two sites: koth@koth.org is maintained by Scott J. Ellentuch (tuc@ttsg.com) and pizza@ecst.csuchico.edu by Thomas H. Davies (sd@ecst.csuchico.edu). Up until May '95, the two sites provided overlapping services, i.e. the some of the hill types were offered by both "pizza" and "stormking". To conserve resources, the different hill types are now divided up among the sites. The way you submit warriors to both KotHs is pretty much the same. Therefore, the entry rules described below apply to both "pizza" and "stormking" unless otherwise noted. Entry Rules for King of the Hill Corewar * Write a corewar program. KotH is fully ICWS '88 compatible, EXCEPT that a comma (",") is required between two arguments. * Put a line starting with ";redcode" (or ";redcode-94", etc., see below) at the top of your program. This MUST be the first line. Anything before it will be lost. If you wish to receive mail on every new entrant, use ";redcode verbose". Otherwise you will only receive mail if a challenger makes it onto the hill. Use ";redcode quiet" if you wish to receive mail only when you get shoved off the hill. Additionally, adding ";name " and ";author " will be helpful in the performance reports. Do NOT have a line beginning with ";address" in your code; this will confuse the mail daemon and you won't get mail back. Using ";name" is mandatory on the Pizza hills. In addition, it would be nice if you have lines beginning with ";strategy" that describe the algorithm you use. There are currently seven separate hills you can select by starting your program with ;redcode-94, ;redcode-b, ;redcode-lp, ;redcode-x, ;redcode, ;redcode-94x or ;redcode-94m. The former four run at "pizza", the latter three at "stormking". More information on these hills is listed below. * Mail this file to koth@koth.org or pizza@ecst.csuchico.edu. "Pizza" requires a subject of "koth" (use the -s flag on most mailers). * Within a few minutes you should get mail back telling you whether your program assembled correctly or not. If it did assemble correctly, sit back and wait; if not, make the change required and re-submit. * In an hour or so you should get more mail telling you how your program performed against the current top 20 (or 10) programs. If no news arrives during that time, don't worry; entries are put in a queue and run through the tournament one at a time. A backlog may develop. Be patient. If your program makes it onto the hill, you will get mail every time a new program makes it onto the hill. If this is too much mail, you can use ";redcode[-??] quiet" when you first mail in your program; then you will only get mail when you make it on the top 25 list or when you are knocked off. Using ";redcode[-??] verbose" will give you even more mail; here you get mail every time a new challenger arrives, even if they don't make it onto the top 25 list. Often programmers want to try out slight variations in their programs. If you already have a program named "foo V1.0" on the hill, adding the line ";kill foo" to a new program will automatically bump foo 1.0 off the hill. Just ";kill" will remove all of your programs when you submit the new one. The server kills programs by assigning an impossibly low score; it may therefore take another successful challenge before a killed program is actually removed from the hill. Sample Entry ;redcode ;name Dwarf ;author A. K. Dewdney ;strategy Throw DAT bombs around memory, hitting every 4th memory cell. ;strategy This program was presented in the first Corewar article. bomb DAT #0 dwarf ADD #4, bomb MOV bomb, @bomb JMP dwarf END dwarf ; Programs start at the first line unless ; an "END start" pseudo-op appears to indicate ; the first logical instruction. Also, nothing ; after the END instruction will be assembled. Duration Max. Hill Name Hill Core Max. Before Entry Min. Rounds Instr. Size Size Processes Distance Fought Set Tie Length Pizza's ICWS '94 Draft Hill Extended (Accessed with 25 8000 8000 80000 100 100 200 ICWS '94 ";redcode-94") Draft Pizza's Beginner's Extended Hill (Accessed 25 8000 8000 80000 100 100 200 ICWS '94 with ";redcode-b") Draft Pizza's Experimental Extended (Small) Hill 25 800 800 8000 20 20 200 ICWS '94 (Accessed with Draft ";redcode-x") Pizza's Limited Process (LP) Hill Extended (Accessed with 25 8000 8 80000 200 200 200 ICWS '94 ";redcode-lp") Draft Stormking's ICWS '88 Standard Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '88 ";redcode") Stormking's ICWS '94 No Pspace Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '94 ";redcode-94nop") Stormking's ICWS '94 Experimental Extended (Big) Hill 20 55440 55440 500000 200 200 250 ICWS '94 (Accessed with Draft ";redcode-94x") Stormking's ICWS '94 Multi-Warrior Extended Hill (Accessed 10 8000 8000 80000 100 100 200 ICWS '94 with Draft ";redcode-94m") Note: Warriors on the beginner's hill are retired at age 100. If you just want to get a status report without actually challenging the hills, send email with ";status" as the message body (and don't forget "Subject: koth" for "pizza"). If you send mail to "pizza" with "Subject: koth help" you will receive instructions that may be more up to date than those contained in this document. At "stormking", a message body with ";help" will return brief instructions. If you submit code containing a ";test" line, your warrior will be assembled but not actually pitted against the warriors on the hill. At "pizza", you can use ";redcode[-??] test" to do a test challenge of the Hill without affecting the status of the Hill. These challenges can be used to see how well your warrior does against the current Hill warriors. All hills run portable MARS (pMARS) version 0.8, a platform-independent Core War system available at www.koth.org. The '94 and '94x hills allow five experimental opcodes and three experimental addressing modes currently not covered in the ICWS'94 draft document: * LDP - Load P-Space * STP - Store P-Space * SEQ - Skip if EQual (synonym for CMP) * SNE - Skip if Not Equal * NOP - (No OPeration) * * - indirect using A-field as pointer * { - predecrement indirect using A-field * } - postincrement indirect using A-field [ToC] ------------------------------------------------------------------------ 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? Core is initialized to DAT 0, 0. This is an illegal instruction (in source code) under ICWS'88 rules and strictly compliant assemblers (such as KotH or pmars -8) will not let you have a DAT 0, 0 instruction in your source code - only DAT #0, #0. So this begs the question, how to compare something to see if it is empty core. The answer is, most likely the instruction before your first instruction and the instruction after your last instruction are both DAT 0, 0. You can use them, or any other likely unmodified instructions, for comparison. Note that under ICWS'94, DAT 0, 0 is a legal instruction. [ToC] ------------------------------------------------------------------------ 16. How does SLT (Skip if Less Than) work? SLT gives some people trouble because of the way modular arithmetic works. It is important to note that all negative numbers are converted to positive numbers before a battles begins. Example: -1 becomes M-1 where M is the memory size (core size). Once you realize that all numbers are treated as positive, it is clear what is meant by "less than". It should also be clear that no number is less than zero. [ToC] ------------------------------------------------------------------------ 17. What is the difference between in-register and in-memory evaluation? These terms refer to the way instruction operands are evaluated. The '88 Redcode standard ICWS'88 is unclear about whether a simulator should "buffer" the result of A-operand evaluation before the B-operand is evaluated. Simulators that do buffer are said to use in-register evaluation, those that don't, in-memory evaluation. ICWS'94 clears this confusion by mandating in-register evaluation. Instructions that execute differently under these two forms of evaluation are MOV, ADD, SUB, MUL, DIV and MOD where the effective address of the A-operand is modified by evaluation of the B-operand. This is best illustrated by an example: L1 mov L2, mov.i #0, impsize Bootstrapping Strategy of copying the active portion of the program away from the initial location, leaving a decoy behind and making the relocated program as small as possible. B-Scanners Scanners which only recognize non-zero B-fields. example add #10, scan scan jmz example, 10 c Measure of speed, equal to one location per cycle. Speed of light. CMP-Scanner A Scanner which uses a CMP instruction to look for opponents. example add step, scan scan cmp 10, 30 jmp attack jmp example step dat #20, #20 Colour Property of bombs making them visible to scanners, causing them to attack useless locations, thus slowing them down. example dat #100 Core-Clear Code that sequentially overwrites core with DAT instructions; usually the last part of a program. Decoys Bogus or unused instructions meant to slow down scanners. Typically, DATs with non-zero B-fields. Decrement Resistant Property of warriors making them functional (or at least partially functional) when overrun by a DJN-stream. DJN-Stream (also DJN-Train) Using a DJN command to rapidly decrement core locations. example ... ... djn example, <4000 Dwarf The prototypical small bomber. Gate-busting (also gate-crashing) technique to "interweave" a decrement-resistant imp-spiral (e.g. MOV 0, 2668) with a standard one to overrun imp-gates. Hybrids warriors that combine two or more of the basic strategies, either in sequence (e.g. stone->paper) or in parallel (e.g. imp/stone). Imp Program which only uses the MOV instruction. example mov 0, 1 or example mov 0, 2 mov 0, 2 Imp-Gate A location in core which is bombed or decremented continuously so that an Imp can not pass. Also used to describe the program-code which maintains the gate. example ... ... spl 0, mov.i #0,IMPSIZE Mirror see reflection. On-axis/off-axis On-axis scanners compare two locations M/2 apart, where M is the memory size. Off-axis scanners use some other separation. Optimal Constants (also optima-type constants) Bomb or scan increments chosen to cover core most effectively, i.e. leaving gaps of uniform size. Programs to calculate optimal constants and lists of optimal numbers are available at www.koth.org. Paper A Paper-like program is one which replicates itself many times. Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy. P-Warrior A warrior which uses the results of previous round(s) in order to determine which strategy it will use. Pit-Trapper (also Slaver, Vampire). A program which enslaves another. Usually accomplished by bombing with JMPs to a SPL 0 pit with an optional core-clear routine. Q^2 Scan A modern version of the Quick Scan where anything found is attacked almost immediately. Quick Scan 2c scan of a set group of core locations with bombing if anything is found. Both of the following codes snips scan 16 locations and check for a find. If anything is found, it is attacked, otherwise 16 more locations are scanned. Example: start s1 for 8 ;'88 scan cmp start+100*s1, start+100*s1+4000 ;check two locations mov #start+100*s1-found, found ;they differ so set pointer rof jmn attack, found ;if we have something, get it s2 for 8 cmp start+100*(s2+6), start+100*(s2+6)+4000 mov #start+100*(s2+6)-found, found rof found jmz moveme, #0 ;skip attack if qscan found nothing attack cmp @found, start-1 ;does found points to empty space? add #4000, found ;no, so point to correct location mov start-1, @found ;move a bomb moveme jmp 0, 0 In ICWS'94, the quick scan code is more compact because of the SNE opcode: start ;'94 scan s1 for 4 sne start+400*s1, start+400*s1+100 ;check two locations seq start+400*s1+200, start+400*s1+300 ;check two locations mov #start+400*s1-found, found ;they differ so set pointer rof jmn which, found ;if we have something, get it s2 for 4 sne start+400*(s2+4), start+400*(s2+4)+100 seq start+400*(s2+4)+200, start+400*(s2+4)+300 mov #start+400*(s2+4)-found-100, found rof found jmz moveme, #0 ;skip attack if qscan found nothing add #100, -1 ;increment pointer till we get the which jmn -1, @found ;right place mov start-1, @found ;move a bomb moveme jmp 0, 0 Reflection Copy of a program or program part, positioned to make the active program invisible to a CMP-scanner. Replicator Generic for Paper. A program which makes many copies of itself, each copy also making copies. Self-Splitting Strategy of amplifying the number of processes executing a piece of code. example spl 0 loop add #10, example mov example, @example jmp loop Scanner A program which searches through core for an opponent rather than bombing blindly. Scissors A program designed to beat replicators, usually a (B-field scanning) vampire. Part of the Paper-Scissors-Stone analogy. Self-Repair Ability of a program to fix it's own code after attack. Silk A replicator which splits off a process to each new copy before actually copying the code. This allows it to replicate extremely quickly. This technique is only possible under the '94 draft, because it requires post-increment indirect addressing. Example: spl 1 mov -1, 0 spl 1 ;generate 6 consecutive processes silk spl 3620, #0 ;split to new copy mov >-1, }-1 ;copy self to new location mov bomb, >2000 ;linear bombing mov bomb, }2042 ;A-indirect bombing for anti-vamp jmp silk, {silk ;reset source pointer, make new copy bomb dat >2667, >5334 ;anti-imp bomb Slaver see Pit-Trapper. Stealth Property of programs, or program parts, which are invisible to scanners, accomplished by using zero B-fields and reflections. Stone A Stone-like program designed to be a small bomber. Part of the Paper-Scissors-Stone analogy. Stun A type of bomb which makes the opponent multiply useless processes, thus slowing it down. Example is referred to as a SPL-JMP bomb. example spl 0 jmp -1 Two-Pass Core-Clear (also SPL/DAT Core-Clear) core clear that fills core first with SPL instructions, then with DATs. This is very effective in killing paper and certain imp-spiral variations. Vampire see Pit-Trapper. Vector Launch one of several means to start an imp-spiral running. As fast as Binary Launch, but requiring much less code. See also JMP/ADD Launch and Binary Launch. This example is one form of a Vector Launch: sz EQU 2667 spl 1 spl 1 jmp @vt, }0 vt dat #0, imp+0*sz ; start of vector table dat #0, imp+1*sz dat #0, imp+2*sz dat #0, imp+3*sz ; end of vector table imp mov.i #0, sz [ToC] ------------------------------------------------------------------------ 23. Other questions? Just ask in the rec.games.corewar newsgroup or contact me. If you are shy, check out the Core War archives first to see if your question has been answered before. [ToC] ------------------------------------------------------------------------ Credits Additions, corrections, etc. to this document are solicited. Thanks in particular to the following people who have contributed major portions of this document: * Mark Durham (wrote the original version of the FAQ) * Paul Kline * Randy Graham * Stefan Strack (maintained a recent version of the FAQ) ------------------------------------------------------------------------ Copyright � 1999 Anton Marsden. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ------------------------------------------------------------------------ From: Lukasz Grabun Subject: nPaperII hits four digits Date: Sat, 27 Apr 2002 16:22:53 +0000 (UTC) Message-ID: Congratulations for PVK. -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: carter_cheng@yahoo.com (Jobless Poor) Subject: Re: RFC: a new extension to Redcode? Date: 28 Apr 2002 02:22:47 -0700 Message-ID: pagaltzis@gmx.de (Aristoteles Pagaltzis) wrote in message news:<872a85cc.0204240626.4de9406@posting.google.com>... > carter_cheng@yahoo.com (Jobless Poor) wrote in message news:... > > New orthogonal modifier dimensions once in the instruction set > > cannot be removed easily and thus we need to be sure that it is > > general/independent enough from the other existing dimensions > > and potential future dimensions that may be implemented in the > > future. > > I don't understand this 100%. I know what you're saying, I think, > but I'm not sure I get all of it. I guess what I'm trying to say is that the ?/! modifiers basically adds an additional field to the instruction set. There are a few problems with this which I see- 1) The field only has 3 possible states. I'm wondering if it's possible to add more meaningful states to this number. If not the field seems a little narrow. 2) Selecting the next instruction which is now primarily opcode dependent now depends on two fields. I'm not quite sure what this means but I think it indicates that we might have two not quite orthogonal fields. 3) It has untested semantics. No existing processor has something like this as far as I know of. Also the ?/! depend on historical information which I find slightly strange. 4) We now have a fourth field which can only be examined and manipulated in a limited sense by mov.i seq.i sne.i . I'm not sure if this is a big deal or not, but I figure less is better. > > > It also does not exist in any existing machine language which > > means it moves the game farther away from existing > > architectures on the one hand and has untested semantics on the > > other. > > This, to be honest, doesn't bother me at all. Redcode is _very_ > far removed from any real architecture anyway - no real CPU comes > with zero registers and single-cycle memory-to-memory-only > instructions. If you want to learn about processors, Corewar is > not the place to do so. I guess I feel slightly differently about this. To me redcode has always been a machine language with certain details abstracted away for the sake of simplicity. Registers, register flags, ram latency and cache hierarchies all having been removed to keep the mechanics simple. A question for me is with the advent of RISC with large register files and explicit load/store to cope with increasing large/slow main memories whether some of these elements need to go back in. In otherwords changes which bring us closer to the modern cpu are preferred over those that take us farther away IMHO. > > > The call/return instructions are interesting as well. These do > > exist in at least some modern machine languages but as someone > > pointed out require new data structures in the VM. > > Which is not so much of a concern to me; my foremost worry is how > something will affect the resulting game (and its > orthogonality! - how can you access this stack from within the > warrior?). We could maybe go with a stack which isn't user visible sort of like the process queue which can't be directly manipulated? > > > The binary compares with arbitrary jumps seem to serve a > > similar purpose as ?/!. > > What I recently thought of is that these modifiers are almost the > same as a 0-cycle jump, except you cannot place another such > 0-cycle jump inside a block that is being jumped over. Now the > only way I can see to implement an equivalent instruction is to > have f.ex SKP/SKB instructions (SKP=skip next, SKB=skip block > which would skip forward to the next SKB instruction). The > problem is that prefixes on these instructions are not executed > because the instructions do not get executed in the first place, > when even a DAT's prefixes affect core. > > They'd stick out like sore thumbs in the Redcode instruction set. > Reread Paul's post and I guess I misread it the first time. There is one thing in there that I'm not sure I understand- is there any particular reason why we can't use the standard address resolution/calculation and then add another level of indirection on one of the arguments and grab that cells A&B fields for the compare? I'm probably missing something obvious(as usual ;-). Regards, JP. > > They might be preferred over ?/! also since adding instructions >> > > Also some semnatic overlap is created with the single operand > > compare jumps. > > Please elaborate. :-) From: Paul-V Khuong Subject: Re: nPaperII hits four digits Date: 28 Apr 2002 09:45:24 -0400 Message-ID: <20020428031918.7850.qmail@web11604.mail.yahoo.com> --- Lukasz Grabun wrote: > Congratulations for PVK. It's not really my work... John Metcalf did all the hard work... I'm actually ashamed that my name is on that warrior :| Hopefully, i'll have something that is really mine ion the hills soon! __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com From: Lukasz Adamowski Subject: Re: your mail (tournament) Date: 28 Apr 2002 11:10:59 -0400 Message-ID: On Sat, 20 Apr 2002, John Metcalf wrote: > S P R I N G / S U M M E R 2 0 0 2 C O R E W A R T O U R N A M E N T > > ROUND 2: BIG LP NO-PSPACE (Deadline: 15th June 2002) I didn't even tried to take a part in the first round because of lack of time. Now it's much better and I wonder if I can entry second round? These rounds are sooo looong... Greetings Lukasz Adamowski From: carter_cheng@yahoo.com (Jobless Poor) Subject: Re: RFC: a new extension to Redcode? Date: 29 Apr 2002 02:18:44 -0700 Message-ID: Another idea- How about a tournament where we let people try out the different experimental ideas and see which ones they like? From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 04/29/02 Date: 29 Apr 2002 07:44:30 -0400 Message-ID: <200204290409.AAA26709@gevjon.ttsg.com> Weekly Status on 04/29/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Apr 28 23:53:23 EDT 2002 # %W/ %L/ %T Name Author Score Age 1 34/ 23/ 43 Inky Ian Oversby 146 489 2 31/ 20/ 49 Son of Vain Oversby/Pihlaja 142 599 3 40/ 38/ 22 Hazy Lazy ... again Steve Gunnell 141 45 4 32/ 24/ 44 Olivia Ben Ford 140 738 5 30/ 21/ 49 Purifier Lukasz Grabun 139 20 6 29/ 20/ 51 nPaper II Paul-V Khuong 138 1010 7 32/ 26/ 42 Quicksilver Michal Janeczek 138 772 8 39/ 42/ 19 Vanquisher Lukasz Grabun 135 101 9 41/ 46/ 13 G3-b David Moore 135 280 10 30/ 26/ 44 Uninvited John Metcalf 135 692 11 26/ 17/ 57 Redemption John Metcalf 134 13 12 39/ 43/ 18 Behemot Michal Janeczek 134 833 13 29/ 24/ 48 Candy Test 6 Lukasz Grabun 133 3 14 42/ 50/ 8 He Scans Alone x P.Kline 133 1 15 29/ 24/ 47 Hopper Phooey 133 136 16 32/ 32/ 37 Blacken Ian Oversby 132 1257 17 32/ 35/ 33 Keyser Soze Anton Marsden 129 711 18 37/ 47/ 15 Test C Phooey 127 137 19 34/ 41/ 25 Blue test 4 Lukasz Grabun 127 17 20 22/ 17/ 62 Seven John Metcalf 127 2 21 21/ 60/ 19 howhow? Philip Thorne 81 0 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 04/29/02 Date: 29 Apr 2002 07:45:55 -0400 Message-ID: <200204290406.AAA26648@gevjon.ttsg.com> Weekly Status on 04/29/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Wed Apr 24 12:26:38 EDT 2002 # %W/ %L/ %T Name Author Score Age 1 53/ 34/ 13 Fire and Ice II David Moore 172 4 2 32/ 21/ 47 KAT v5 Dave Hillis 143 36 3 37/ 33/ 30 Controlled Aggression Ian Oversby 141 104 4 38/ 37/ 26 Black Moods Ian Oversby 138 100 5 22/ 8/ 70 Evol Cap 4 X John Wilkinson 135 173 6 26/ 16/ 58 Katafutr Michal Janeczek 135 44 7 30/ 26/ 43 Damage Inflicted Robert Macrae 135 43 8 26/ 16/ 58 Kin John Metcalf 135 12 9 22/ 9/ 69 Denial David Moore 134 45 10 18/ 7/ 75 Evolve X v4.0 John Wilkinson 129 121 11 18/ 7/ 75 Black Box v1.1 JKW 128 67 12 30/ 33/ 37 Big I.F.F.S. Dave Hillis 128 33 13 37/ 46/ 17 Greetings From Asbury Par JKW 128 64 14 24/ 21/ 54 Venom v0.2b Christian Schmidt 128 126 15 32/ 38/ 31 Ogre Christian Schmidt 126 52 16 34/ 47/ 19 Mischief John Metcalf 120 1 17 31/ 45/ 24 Pagan John K W 117 158 18 22/ 30/ 48 Disaster Area 2.8 Stefan Foerster 114 31 19 26/ 39/ 35 La Vibra 19 Lukasz Grabun 112 2 20 24/ 37/ 38 test CS 112 61 21 16/ 39/ 46 57779-9036-eve3 bvowk 92 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 04/29/02 Date: 29 Apr 2002 07:47:20 -0400 Message-ID: <200204290403.AAA26587@gevjon.ttsg.com> Weekly Status on 04/29/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Fri Apr 26 03:08:41 EDT 2002 # Name Author Score Age 1 fclear Brian Haskin 72 72 2 D-clearM Ken Espiritu 56 88 3 test John Metcalf 46 16 4 clock strikes twelve John Metcalf 44 2 5 Her Majesty P.Kline 37 107 6 Tinyshot John Metcalf 30 1 7 Pitbull Christian Schmidt 20 44 8 8thTest Gino Oblena 17 19 9 Xord Monominer XOSC:01 Gino Oblena 15 27 10 QuiVa John Metcalf 13 181 11 Sun Tzu (v2.0) T'sk 3 0 From: Koth Subject: KOTH.ORG: Status - Standard 04/29/02 Date: 29 Apr 2002 07:48:45 -0400 Message-ID: <200204290400.AAA26515@gevjon.ttsg.com> Weekly Status on 04/29/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Mon Apr 8 10:25:12 EDT 2002 # %W/ %L/ %T Name Author Score Age 1 44/ 37/ 19 Oneshot '88 John Metcalf 150 1 2 33/ 21/ 47 Freight Train David Moore 145 80 3 31/ 21/ 48 Test Alexander (Sasha) Wa 141 19 4 38/ 38/ 24 PacMan David Moore 139 109 5 41/ 43/ 16 Foggy Swamp Beppe Bezzi 138 76 6 30/ 23/ 46 sIMPly.Red v0.95 Leonardo Humberto 138 37 7 30/ 22/ 47 Guardian Ian Oversby 138 79 8 39/ 41/ 20 Stasis David Moore 137 187 9 40/ 44/ 16 Blur '88 Anton Marsden 137 117 10 37/ 38/ 24 Tangle Trap David Moore 136 153 11 39/ 42/ 19 Beholder's Eye V1.7 W. Mintardjo 135 355 12 31/ 30/ 39 vala John Metcalf 132 2 13 39/ 47/ 14 Iron Gate Wayne Sheppard 130 405 14 31/ 32/ 38 Frog Sticker P.Kline 129 29 15 39/ 48/ 13 ig Wayne Sheppard 129 7 16 23/ 17/ 60 EV Paper John K Wilkinson 129 93 17 24/ 20/ 55 Jinglo John Metcalf 128 4 18 24/ 20/ 55 Test I Ian Oversby 128 136 19 25/ 23/ 51 Shish-Ka-Bob Ben Ford 127 35 20 24/ 22/ 54 Evoltmp 88 John K W 126 130 21 4/ 35/ 61 ID 88' compudemon 73 0