Sections
Home
Hills
Infinite Hills
Tournaments
Software
Evolving
Optimizer
Community
Newsletter
Discussion
History
Sections
 
For Beginners
First Steps
FAQ
Guides
Lexicon
Benchmarks
For Beginners
> Home > The Corewar Newsletters > Core Warrior > Issue #1

Issue 91                                                       30 January, 2005
_______________________________________________________________________________
Core Warrior is a newsletter promoting the game of Corewar, a game of skill
played between two or more computer programs on behalf of the players who
create them.

Emphasis is placed on the most active hills - currently the '94 no-pspace,
'94 draft and beginner hills.  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://sal.math.ualberta.ca/               ;Sal Hills
  http://para.inria.fr/~doligez/corewar      ;Planar
  http://www.ociw.edu/~birk/corewar          ;C.Birk
  http://www.corewar.info/                   ;Fizmo
  http://www.corewar.co.uk/                  ;J.Metcalf

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...

Happy new year!!!

Welcome to your first Core Warrior of 2005, which comes hot off the digital
presses.

Apologies for the time passed since the last issue.  Some interesting events
have taken place.  Christian Schmidt organised a meeting to celebrate the
20th anniversary of Corewar; see Christian's write-up in this issue for full
details.

Son of Vain has perished - without a doubt the most resilient stone/imp
ever created and, in the opinion of many in the Corewar community, the most
effective warrior to date.  Is there a warrior powerful enough to take the
lead or will the 94nop hill fall into chaos? The post-SoV era begins...

Koth hills have been calm the last few weeks, focusing activity on SAL's
Beginners Hill, where new redcoders have arisen.  Welcome.

                                  -----

Redcode Frenzy News: Three rounds have passed since the last issue.
Round 19 "The Battle Maniac Round" and round 20 "Frankenstein round" were
both won by Chip Wendell, who takes the lead on the ranking with four
consecutive victories, the best win record of the tournament!  Round 21
"The Football Round" was won by me, German Labarga, as you see, new on the
Core Warrior editorial team.

See the Redcoders Frenzy homepage:

  http://www.corewar.info/tournament/cwt.htm

-- Christian Schmidt, German Labarga and John Metcalf


                            '94 No Pspace Hill
                            *******************

______________________________________________________________________________
Current Status of the KOTH.ORG '94 No Pspace Hill:

 #  %W/ %L/ %T                      Name               Author   Score     Age
 1  37/ 26/ 37             The Humanizer            bvowk/fiz     149      35
 2  37/ 26/ 37                Hullabaloo         Roy van Rijn     147     147
 3  44/ 43/ 13                     Arrow    Christian Schmidt     145     350
 4  36/ 28/ 36                    Borgir    Christian Schmidt     143     182
 5  41/ 42/ 16       Origin of Storms II      Metcalf/Schmidt     141      24
 6  30/ 19/ 51                 stray cat         John Metcalf     140       1
 7  33/ 26/ 41                Gargantuan         Roy van Rijn     140     168
 8  27/ 15/ 58                    S.D.N.    Christian Schmidt     139      72
 9  39/ 38/ 23            picture walker         John Metcalf     139       3
10  27/ 15/ 58                 Maelstrom         Roy van Rijn     139     291
11  31/ 23/ 46 paper(paper(paper(clear))          Sascha Zapf     138     251
12  27/ 17/ 56              Black Knight    Christian Schmidt     137     172
13  30/ 25/ 45                     New-T         Roy van Rijn     136      81
14  39/ 42/ 19          thoughts of fire         John Metcalf     135      47
15  24/ 13/ 62            Chainlock v02a            G.Labarga     135      30
16  37/ 40/ 23                      test         Roy van Rijn     134      17
17  25/ 16/ 60               The Utterer    Christian Schmidt     134       7
18  38/ 43/ 20                    Spiker         Roy van Rijn     133      84
19  39/ 44/ 17             HazyLazy C 11                CS SG     133     359
20  36/ 39/ 25   The Boss is back again!            G.Labarga     133       6

The hill has aged 215 since issue 90, with just 4 warriors surviving.

Since last issue, Son of Vain has perished after achieving a record age of
2573.  SoV entered the hill on 23 March, 2001, and claimed the title of
oldest warrior in November 2002, age 1037.  Congratulations to Ian Oversby
and M Joonas Pihlaja on their well deserved success.

Also leaving the hill were slime test 1.00 (age 428), Gremlin (302),
Spiritual Black Dimension (293), Dandelion 3 (185), elf (138), Yorba (123),
2b||!2b (116) and Bottomless Pit (100).

Some noteworthy warriors which left the hill without quite making it to the
age of 100 were Claw III (age 98), O--* (97), unheard-of II (89), Savage
Flowing Battleworn (86), Hydra II (79), Strike Two (70), Triturus (65),
High Voltage (54) and Frantic (53).

Although only 147 challenges old, Hullabaloo has been at the top of the hill
after 117 successful challenges.  Also frequently seen as Koth have been
Arrow (34 times), Borgir (26) and The Humanizer (16).
_______________________________________________________________________________
The '94 No Pspace Hall of Fame:  * indicates the warrior is still active.

Pos Name                   Author             Age    Strategy
 1  Son of Vain            Oversby/Pihlaja   2573    Q^4 -> Stone/imp
 2  Blacken                Ian Oversby       1363    Q^2 -> Stone/imp
 3  Reepicheep             Grabun/Metcalf    1347    Q^4 -> Paper/stone
 4  nPaper II              Paul-V Khuong     1270    MiniQ^3 -> Paper
 5  Uninvited              John Metcalf      1130    MiniQ^3 -> Stone/imp
 6  Hazy Test 63           Steve Gunnell     1119    Scanner
 7  Behemot                Michal Janeczek   1078    MiniQ^3 -> Bomber
 8  Olivia                 Ben Ford           886    Q^4 -> Stone/imp
 9  Recon 2                David Moore        826    Scanner
10  Keyser Soze            Anton Marsden      823    Qscan -> Bomber/paper/imp
11  Quicksilver            Michal Janeczek    789    Q^4 -> Stone/imp
12  Eraser II              Ken Espiritu       781    Scanner
13  Inky                   Ian Oversby        736    Q^4 -> Paper/stone
14  Toxic Spirit           Philip Thorne      685    Oneshot
15  Jinx                   Christian Schmidt  662    Q^3 -> Scanner
16  Blade                  Fizmo              643    Qscan -> Scanner
17  Return of Vanquisher   Lukasz Grabun      640    Q^4 -> Bomber
18  Revenge of the Papers  Fizmo/Roy          605    Q^4 -> Paper
19  Jade                   Ben Ford           600    Q^4 -> Stone/imp
20  Firestorm              John Metcalf       589    MiniQ^3 -> Paper/imp
21  Claw                   Fizmo              525    Qscan -> Scanner
22  G3-b                   David Moore        503    Twoshot
23  Thunderstrike          Lukasz Grabun      484    Q^4 -> Stone/imp
24  Vanquisher             Lukasz Grabun      469    Q^4 -> Bomber
25  Revival Fire           P.Kline            468    Bomber
26  The Phantom Menace     Anton Marsden      465    Qscan -> Paper/imp
27  The Stormkeeper        Christian Schmidt  460    Q^3 -> Stone/imp
28  Positive Knife         Ken Espiritu       449    Q^4 -> Stone/imp
29  Boys are Back in Town  Philip Kendall     441    Scanner
 =  Zooom...               John Metcalf       441    Scanner
31  slime test 1.00        David Houston      428    Q^4.5 -> Paper
32  G2-b                   David Moore        413    Twoshot
33  Ironic Imps            Roy van Rijn       403    Q^4 -> Stone/imp
34  Qtest                  Christian Schmidt  394    Q^3 -> Paper
35  Stalker                P.Kline            393    Scanner
36  Decoy Signal           Ben Ford           378    Q^4 -> Paper/imp
37  HazyLazy C 11          CS SG              359 *  Q^4 -> Scanner
38  unheard-of             Christian Schmidt  355    Q^4 -> Paper/imp
39  Arrow                  Christian Schmidt  350 *  Scanner
 =  Hazy Lazy ... again    Steve Gunnell      350    Scanner
 =  Dawn                   Roy van Rijn       350    Q^4 -> Paper/imp
42  Static                 Miz                344    Q^4 -> Stone/imp
43  devilish 2             David Houston      330    Q^4 -> Stone/imp
 =  Vain                   Ian Oversby        330    Q^2 -> Stone/imp
45  Omnibus                John Metcalf       327    Q^2 -> Stone/imp
46  Win!                   David Moore        322    Scanner
47  Return of the PendragonChristian Schmidt  318    Q^4 -> Stone/imp
48  Numb                   Roy van Rijn       312    Q^4 -> Paper/stone
49  Hazy Lazy...           Steve Gunnell      309    Scanner
50  Gremlin                van Rijn/Grabun    302    Q^4 -> Stone/imp

Son of Vain finally perishes at an all time record age of 2573.  SoV was
crowned king of the Hall of Fame back in CW85 (January 2003), and at the
current rate of activity, it's position looks safe until around August
2011 :-)

At age 291, Maelstrom is just a few challenges away from entering the HoF.



                              '94 Draft Hill
                            *******************

_______________________________________________________________________________
Current Status of the KOTH.ORG '94 Draft Hill:

 #  %W/ %L/ %T                      Name               Author   Score     Age
 1  45/ 37/ 18                 Bulldozed    Christian Schmidt     153       1
 2  44/ 35/ 22                  ArtaBmoC    Christian Schmidt     153      17
 3  35/ 26/ 40             The Humanizer            bvowk/fiz     144      13
 4  30/ 18/ 52             unheard-of II    Christian Schmidt     141      57
 5  27/ 14/ 59            Chainlock v02a            G.Labarga     141      12
 6  35/ 30/ 34                Sunrise 06           Zul Nadzri     141      15
 7  39/ 39/ 22                 Cyberpunk    Christian Schmidt     139     143
 8  28/ 17/ 54               The Utterer    Christian Schmidt     139       8
 9  28/ 17/ 56                 Maelstrom         Roy van Rijn     139      95
10  39/ 39/ 22    Just experimenting 1.4        Blake Escritt     138      31
11  36/ 34/ 30             fallen leaves         John Metcalf     138      11
12  33/ 29/ 38                Hullabaloo         Roy van Rijn     137      46
13  40/ 43/ 18       Origin of Storms II      Metcalf/Schmidt     137      10
14  41/ 45/ 13                     Arrow    Christian Schmidt     137     116
15  29/ 20/ 51              Black Knight    Christian Schmidt     137      77
16  33/ 29/ 38 Spiritual Black Dimension    Christian Schmidt     137     135
17  29/ 21/ 50                 stray cat         John Metcalf     136       5
18  28/ 21/ 51         Bvowkium Fizmoxid          bvowk/fizmo     135      64
19  32/ 28/ 41                       elf    Christian Schmidt     135      62
20  40/ 47/ 13               Dandelion 3         Schmidt/Zapf     133     119

After an age of 68, 6 warriors remain on the hill from last issue.  Those
who didn't last the duration include Reepicheep (543), Sunrise (128), Muscle
Hammer (90), Armadillo (68), Arctica (66), Gremlin (66) and Devilish 2 (65).

Cyberpunk is now the oldest warrior with an age of just 143.

p-Warriors are again in top spots now but pure scanners are still scoring 
surprisingly well and can still survive for a lengthy term on the hill.
Welcome to Blake Escritt with his impressive debut.

Koth report: 7 warriors resided at number one. Most often seen there have
been Arrow (26), ArtaBmoC (16) and elf (16).
_______________________________________________________________________________
The '94 Draft Hall of Fame:  * indicates the warrior is still active.

Pos Name                   Author             Age    Strategy
 1  Reepicheep             Grabun/Metcalf     543    Q^4 -> Paper/stone
 2  Son of Vain            Oversby/Pihlaja    441    Q^4 -> Stone/imp
 3  Return of Vanquisher   Lukasz Grabun      283    Q^4 -> Bomber
 4  Bitter Sweet           Lukasz Grabun      262    Q^4 -> Stone/imp
 5  CrazyShot 2            Christian Schmidt  249    Q^4 -> Oneshot
 6  Herbal Avenger         Michal Janeczek    237    Scanner
 7  Bustling Spirit        Christian Schmidt  216    P-warrior
 8  Revenge of the Papers  Fizmo/Roy          204    Q^4 -> Paper
 9  Uninvited              John Metcalf       194    MiniQ^3 -> Stone/imp
10  Blowrag                Metcalf/Schmidt    192    Q^4 -> Paper/imp
11  Incredible!            John Metcalf       180    Paper/imp
12  Wallpaper              Christian Schmidt  175    Q^4 -> Paper/stone
13  Mantrap Arcade         Dave Hillis        170    P-warrior
14  Numb                   Roy van Rijn       167    Q^4 -> Paper/stone
15  PolyPap                Jakub Kozisek      160    Qscan -> Paper
16  Recon 2                David Moore        156    Scanner
17  Cyberpunk              Christian Schmidt  143 *  P-warrior
 =  Joyful Maw             Dave Hillis        143    P-warrior
19  Paperazor              Christian Schmidt  141    Q^4 -> Paper
20  Sunset                 David Moore        138    P-warrior
21  Dawn                   Roy van Rijn       137    Q^4 -> Paper/imp
22  Spiritual Black Dimens Christian Schmidt  135 *  Qscan -> Paper/stone
23  Self-Modifying Code    Ben Ford           132    P-warrior
24  Combatra               David Moore        131    Boot distance calculator
25  unheard-of             Christian Schmidt  128    Q^4 -> Paper/imp
 =  Sunrise                Zul Nadzri         128    P-warrior

Reepicheep stopped at an age of 543 having been the oldest active warrior
since November 2002.  Sunrise enters the HoF before he left the hill, while
Cyberpunk is still in good shape for climbing on up. Arrow and Dandelion 3
will enter soon.


                            SAL  Beginners Hill
                            *******************

_______________________________________________________________________________
Current Status of the SAL Beginners Hill:

 #    %W/   %L/   %T                      Name             Author Score   Age
 1  39.2/ 25.7/ 35.1         Stoney the second                Miz 152.6    61
 2  44.9/ 40.2/ 14.8       Studie strikes back        Sascha Zapf 149.6    93
 3  43.9/ 39.9/ 16.2      Shooting Star v0.262                brx 147.9    71
 4  44.7/ 41.5/ 13.8                    NSos10      Nenad Tomasev 147.8     4
 5  43.4/ 40.7/ 15.9                  Frullato              LAchi 146.2   110
 6  32.9/ 22.8/ 44.3                Enigma 2.1            brx/Roy 142.9    63
 7  42.6/ 42.8/ 14.7                   Unknown                Neo 142.3    53
 8  34.4/ 27.3/ 38.2              Uneven Twins        Sascha Zapf 141.6    97
 9  44.1/ 47.3/  8.7                      Star        Sascha Zapf 140.9    98
10  32.8/ 25.4/ 41.8                       Tom        David Moore 140.2    81
11  44.5/ 49.8/  5.7                    s-test        Sascha Zapf 139.3    46
12  26.9/ 14.8/ 58.3 Everybody must get STONED          madjester 139.1     3
13  31.8/ 27.0/ 41.2  Teenage Metal Isis v0.6a     Pascal Hofstee 136.6    52
14  29.1/ 21.6/ 49.3               ImpBulletv1      Nenad Tomasev 136.5    10
15  33.3/ 30.2/ 36.5           AntiImpBulletv3      Nenad Tomasev 136.5    16
16  39.3/ 43.4/ 17.3               French Kiss              LAchi 135.3    47
17  31.3/ 29.2/ 39.5               Veenah V0.8        Sascha Zapf 133.4    69
18  40.4/ 47.4/ 12.2                 EpsonXVII      Nenad Tomasev 133.4     7
19  38.8/ 46.5/ 14.7              Abraxas v1.1      Nenad Tomasev 131.1     5
20  38.4/ 46.7/ 14.9                 Hooligan2          G.Labarga 130.1    34
21  40.1/ 50.2/  9.7                  scantest      Nenad Tomasev 130.0     6
22  39.5/ 49.7/ 10.8                 Scizzory3                Miz 129.3    30
23  37.7/ 46.4/ 16.0                   ssoBeht        Sascha Zapf 129.0    84
24  35.1/ 44.3/ 20.5               Glass House        Ken Hubbard 125.9    50
25  29.8/ 38.4/ 31.8                 TestPaper      Nenad Tomasev 121.1     1

There were 64 challenges since the last issue with two new authors in good
hill position, namely Nenad Tomasev and madjester. Miz was mostly seen as
koth, with his stone/imp Stoney the second - followed by several oneshots.
_______________________________________________________________________________
Current Status of the Koenigstuhl Recursive ICWS '94 Draft Hill:

Koenigstuhl is a collection of 10 infinite hills found at:

  http://www.ociw.edu/COREWAR/koenigstuhl.html

Below we show the top 25 of a total 819 warriors:

rank name                        author                 score
--------------------------------------------------------------
   1 Hullabaloo                  Roy van Rijn           165.64
   2 Spiritual Black Dimension   Christian Schmidt      161.88
   3 Reepicheep                  Grabun/Metcalf         160.81
   4 Son of Vain                 Oversby/Pihlaja        158.94
   5 HazyLazy C 11               CS SG                  158.48
   6 Numb                        Roy van Rijn           157.84
   7 HazyLazy A 70               Steve Gunnell          157.05
   8 Herbal Avenger              Michal Janeczek        156.95
   9 Yorba                       Roy van Rijn           156.93
  10 Frantic                     Roy van Rijn           156.88
  11 Gargantuan                  Roy van Rijn           156.77
  12 Armadillo                   Lukasz Grabun          156.63
  13 Dandelion III               Schmidt/Zapf           155.85
  14 Quicksilver                 Michal Janeczek        155.48
  15 RotPendragon 2              Christian Schmidt      155.42
  16 Maelstrom                   Roy van Rijn           155.30
  17 Jinx 2                      Christian Schmidt      155.02
  18 Hammerhead                  Lukasz Grabun          154.84
  19 Devilstick                  Roy van Rijn           154.78
  20 Cheep! Half-Off!            Ben Ford               154.67
  21 Behemot                     Michal Janeczek        154.66
  22 Candy II                    Lukasz Grabun          154.33
  23 Pixie                       Lukasz Grabun          154.19
  24 Machines Will Rule          bvowk                  153.90
  25 Preserver                   Lukasz Grabun          153.79

Since the last report there are 28 new entries on the hill, of which 12
entered the top 25.  Koenigstuhl has a new Koth and deputy Koth, being
Hullabaloo the new king and Spiritual Black Dimension second.

By authors, Roy van Rijn has 7 warriors among top 25, followed by Lukasz
Grabun (6) and Christian Schmidt (4).

Welcome to Machines Will Rule, the first evolved warrior to enter this
ranking.
_______________________________________________________________________________
20th Anniversary Corewar Meeting 2004. A field report by Christian Schmidt

At the end of 2003 John Metcalf and other players suggested to have a meeting
to celebrate the 20th anniversary of Corewar.  Several players evinced their
interest in participating.  So, we decided to make it sometime in summer 2004
preferably somewhere in Europe, because most of the players hoping to take
part were living there.  I offered to host the meeting in Berlin, not
suspecting that it could be embraced by so many people. 

Unfortunately my time schedule for 2004 was more tricky than expected.  So
the date for the meeting was decided quite late - July 23-25, 2004.

I sent questionaires to numerous Redcoders to discover more about what they
would like to see during the meeting, a preferred time, etc.  Because it was
the first time I'd organized something like this, I was a bit worried if I
would be able to pull it off successfully.

Finally the following Redcoders promised me that they would surely attend the
meeting:  Achille 'LAchi' Astolfi from Italy, Joonas Pihlaja from Finland,
Ian Oversby from the U.K., Philip Thorne and Alexander 'Sasha' Wait from the
U.S.A. and el kauka and trac from Germany.

There was a lot of preparation needed for the meeting and without the help of
my wife it wouldn't have been possible.  But finally everything was ready for
the first Corewar meeting for many, many years - to take part on July 23-25,
2004 in Berlin.

On the afternoon of July 21, the first Redcoder arrived from the States at
the airport Berlin-Schoenefeld, Alexander 'Sasha' Wait.  I was quite nervous,
waiting at the arrival hall displaying a sign with the letters ICC 2004 and
the corewar.info logo.  Due to the photos on our websites, we recognized each
other immediately.

It was for me a new experience talking for the first time about Corewar
instead of communicating via IRC chatting or e-mails.  We were deep in
conversation for the remainder of the day, discussing everything related to
Corewar and Sasha's new quantum coreworld.  Everybody can get an impression
of that:

  http://www.corewar.info/meeting/21/img3.htm

On the next day we went together to the airport Berlin-Tegel to meet Joonas 
Pihlaja coming from Helsinki.  It was a touching moment to see him the first
time in person after knowing him for so many years only from the net. 

  http://www.corewar.info/meeting/22/img1.htm

As the previous day our discussion was mainly focused on Corewar related 
topics, even during the dinner ;-)  Interesting strategies, warriors, about
the past tournaments etc.  Joonas explained to us some of the secrets behind
the creation of Son of Vain, and I explained some of my unpublished warriors. 

  http://www.corewar.info/meeting/22/img4.htm

The official first day of the meeting started with the arrival of Achille 
'LAchi' Astolfi and Philip Thorne with his wife, while Ian Oversby and his 
wife were landing last, late evening.  For the barbecue at my home two new
Redcoders from Berlin announced their attendance, trac and el kauka.  We had
a lot of fun and interesting discussions until far into the night!  LAchi
explained to us the idea behind his oneshots and we were discussing how the
deadlock on Koth's experimental multiwarrior hill might be broken.

  http://www.corewar.info/meeting/23/img1.htm

On the next day we all met in the morning in Berlin downtown for a shopping
expedition visiting together the well-known KDW (Kaufhaus des Westens), the 
Ku'Damm and the Europa Center.  In the afternoon we went to a seminar room of
the University of Berlin for two workshops.  Many thanks to Prof Raul Rojas 
who was so kind to make it available for us.  The first workshop was held by
myself introducing optiMAX, a comprehensive Corewar optimizer and how to
improve warriors.  The second workshop was held by Sasha who presented the
audience with the idea behind the quantum coreworld.

After a rest we continued with the evening program, visiting the Potsdammer 
Platz for some further sightseeing and a german style dinner.  It was a
really nice atmosphere with lot of fun and interesting discussions.  Phil
teased us with his secret code of Toxic Spirit.  Phil I'll bear it in mind ;-)

Also on this evening, a really memorable picture of Joonas and Ian was made,
the authors of the most successful warrior in Corewar history, Son of Vain.

  http://www.corewar.info/meeting/24/img8.htm

On the final day we started the morning with a sightseeing tour. Beside the
Brandenburg Gate, the historical parliament and several other tourist
attractions we made a boat trip around the historical museum island and the
administrative district.

  http://www.corewar.info/meeting/25/img5.htm

On the evening we made a farewell dinner at my home looking back to the past
discussions and ideas.  How fast the time went by.  After all, I must say it
was a really enjoyable time spent with everyone and I hope we'll see each
other again soon.  If we will ever arrange another Corewar meeting I will
surely attend.

Christian
_______________________________________________________________________________
Imp Launchers & The Hybrid Launcher, by German Labarga

There exist three kinds of imp launcher which create an imp spiral with a
fixed number of processes :

* The binary launcher:  Fast and easy to design, it works under both the '88
  and the '94 rules.  Unfortunately, it is the largest of the three.  For a N
  process spiral, size is = (2*N)-1, (not including the imp).  It takes as
  many cycles to execute as lines in the code.

istep EQU (CORESIZE/3+1)

strt: spl 8               ;creates 8 processes, each line is executed once
      spl 4
      spl 2
a:    jmp imp+(0*istep)
b:    jmp imp+(1*istep)
      spl 2
c:    jmp imp+(2*istep)
d:    jmp imp+(3*istep)
      spl 4
      spl 2
e:    jmp imp+(4*istep)
f:    jmp imp+(5*istep)
      spl 2
g:    jmp imp+(6*istep)
h:    jmp imp+(7*istep)

imp:  mov 0,istep         ;or mov.i #0,istep


* JMP/ADD launcher, (also called Nimbus launch):  This is the smallest one,
  but also the slowest.  This launcher works under both the '88 and the '94
  rules, and uses the simplest design.  Size = 3+(ln N / ln 2).  If N is not
  a power of 2, you must round the result up to the next integer, (5.3 -> 6
  lines).  It takes (5*N)-1 cycles to launch.

imp:  mov.i #0,istep    ;or mov 0,istep under '88 rules

strt: spl 1             ;\
      spl 1             ; > creates N=8 processes in 7 cycles
      spl 1             ;/	
      spl 2             ;needs 2*N processes for the launch     ;8 cycles
      jmp imp           ;or jmp @0,    imp                      ;8 cycles
      add.a #istep,-1   ;   add #istep,-1   ;under '88 rules    ;8 cycles

      (dat 0,0)         ;remaining processes should be killed, taking 8
                        ; cycles more, but the spiral is already built
                        ; after (4*N)-1 cycles.


* Vector launcher: As fast as the binary but using much less code. It's size
  can be reduced depending the design. Mostly used under '94 rules. It can be
  implemented under '88, but requires more instructions and works N cycles
  slower.  

vect:	dat 0,imp+(0*istep)	;'94 basic design with one jmp
	dat 0,imp+(1*istep)
	dat 0,imp+(2*istep)
	dat 0,imp+(3*istep)
	dat 0,imp+(4*istep)
strt:	spl 1,imp+(5*istep)
	spl 1,imp+(6*istep)
	spl 1,imp+(7*istep)
send:	jmp @vect,}0
..
imp:    mov.i #0,istep

Adding more jumps allows us to reduce the table size using free fields in
your code, breaking the table in pieces of equal length. Size increases with
extra jmp's but takes the same time.

..                      ;\
        spl 2           ;/ create the processes needed
snd1:   jmp @vct1,}0    ;vct1 and vct2 point to the vector tables
snd2:   jmp @vct2,}0    ;note snd1 and snd2 are executed in alternate order

And the compact version:

	vect EQU send

tabl: dat 0,  imp+(7*istep)       ;this scheme allows us to launch 8
      dat 0,  imp+(6*istep)       ; processes in 8 lines + imp
      dat 0,  imp+(5*istep)
      dat 0,  imp+(4*istep)
strt: spl 1,  imp+(3*istep)
      spl 1,  imp+(2*istep)
      spl 1,  imp+(1*istep)
send: djn.a @vect,#imp+(0*istep)  ;djn decrements it's own A-field and
                                  ; B-field is free
imp:  mov.i #0,istep

Be careful when using djn.  In large launchers with more than one jump,
djn.a @1,#.. can be a problem difficult to solve without increasing the size.

* And this is my '88 version:

strt: spl 1                   ;\
      spl 1                   ; > create the processes needed
sptr: spl 1,last              ;/   [ln N / ln 2] instructions
send: jmp <sptr               ;or djn @0,#last - in this case djn @0,#1
tabl: jmp imp+(7*istep)       ; is not a problem.
      jmp imp+(6*istep)
      jmp imp+(5*istep)
      jmp imp+(4*istep)
      jmp imp+(3*istep)
      jmp imp+(2*istep)
      jmp imp+(1*istep)
last: jmp imp+(0*istep)       ;first point

imp:  mov 0,istep

It takes (3*N)-1 cycles to launch the spiral in  N+1+(ln N / ln 2) lines of
code, making it always shorter than the binary launch, but N cycles slower,
(about 34%).

Some warriors use modified binary launchers, reducing the size by splitting
more than one process to jmp instructions.  The jmp instructions increment
the launch addresses when executed.  Some of these are more complex than the
binary launch, but reduce size nicely.

This example, made by John Metcalf, is one line longer than the equivalent
jmp/add launcher and takes 55 cycles to launch, compared to jmp/add taking
115 cycles.

     spl   1                 ;code suitable for 3 points imps only
     spl   1
     spl   1
     spl   x
     spl   y
     jmp   imp+istep*0, }0
y:   jmp   imp+istep*1, }0
x:   nop   0,0               ;processes splitted here must wait
     jmp   imp+istep*2, }0   ; to execute jumps in the right order
                             ;anyway, you can always boot some code in x
imp: mov.i #istep,      *0

The number of processes (N) is optimal when N = 3*2^n.  The speed attained
is close to the speed of a binary launcher, at (7/3)*N-1.  The size of the
code will be 6+(ln (N/3) / ln 2)

Reanimator, a tiny clear/imp by John Metcalf, includes this interesting
launch code for an eight process 3 point imp spiral:

strt:spl   i4                                
     spl   i2
i6:  spl   i1
i3:  jmp   imp+0*istep, }0   ; 1   4   7
i4:  spl   i6
     spl   i5
i1:  jmp   imp+1*istep, }0   ;  2   5   8

i2:  spl   i3
i5:  jmp   imp+2*istep, }0   ;   3   6

imp: mov.i #istep,      *0


--- The hybrid launcher ---

Now we have seen the several kinds of existing launcher, I will explain the
hybrid launcher.

In the vector table of a vector launcher we have something like this, (for
3-point imps):

        istep EQU (CORESIZE/3+1)      ;three point imps

tabl:	dat 0,      imp+(7*istep)     ;= imp+(1*istep) +2
	dat 0,      imp+(6*istep)     ;= imp+(0*istep) +2
	dat 0,      imp+(5*istep)     ;= imp+(2*istep) +1
	dat 0,      imp+(4*istep)     ;= imp+(1*istep) +1
strt:	spl 1,      imp+(3*istep)     ;= imp+(0*istep) +1
	spl 1,      imp+(2*istep)
	spl 1,      imp+(1*istep)
send:	djn.a @vect,#imp+(0*istep)
imp:    mov.i #0,   istep

Notice that all the addresses are equal to the first three plus an increment,
+0,+1,+2...  It would be great if we could increment those addresses during
the launch, like the example above did, but without using one jump per point.

It can be done like this:

jmp >vect,}0    ;vect points to the head of the table, (addresses are in
                ; increasing order)

or alternatively:

djn.a >vect,#0  ;vect points to the end of the table, (addresses are in
                ; decreasing order)

The addresses in the table are incremented after splitting off each process.
So we can launch the processes with two jmp's which use the same table:

vect:	dat 0       , imp+(1*istep)	;          2nd	;s2 points to here
	dat 0       , imp+(0*istep)	; 1st (+1) 4th 	;s1 points to here
strt:	spl 1       , imp+(2*istep)	; 3rd (+1) 6th
	spl 1       , imp+(4*istep)	; 5th (+1) 8th
	spl 2       , imp+(6*istep)	; 7th (+1) 
s1:	jmp >vect+1,}0			; 1st  3rd  5th  7th
s2:	jmp @vect,}0			;  2nd  4th  6th  8th
imp:	mov.i #0,istep
end strt

The jumps are executed in alternate order: s1 s2 s1 s2 s1 s2 s1 s2
s1 increments imp+(0*istep) after the jump, so then it becomes:

imp+(0*istep)+1 = imp+(3*istep)	;for a 3-point imp

Then s2 jumps to imp+(1*istep)

Next s1 jumps ti imp+(2*istep) and increments the address

And then s2 jumps using the address which s1 used first and was incremented,
so now it is imp+(3*istep)

It can be defined as two mutating vector launchers interweaved. (Well, only
the first launcher mutates the addresses. The second one not, because we are
not going to use the addresses again).

So we have an 8 process launcher in 7 instructions using only four addresses
instead of eight, saving only one instruction. With 16 processes the launcher
would be 11 lines long (not including the imp).

But the size can be reduced even more if we use the compact version with djn:

;redcode-94
;name Short launcher
;author G.Labarga
;assert 1
;strategy 8-proc. 2x hybrid launcher

istep EQU (CORESIZE/3+1)
strt: spl 1       , imp+(6*istep) ;now the addresses are in
      spl 1       , imp+(4*istep) ;reverse order
      spl 2       , imp+(2*istep)
frst: djn.a >frst ,#imp+(0*istep)
scnd: djn.a @scnd ,#imp+(1*istep)
imp:  mov.i #0    , istep
end strt

Wow, the launcher itself is only 5 lines long!

For larger spirals, we can add more addreses to the table or add more jumps
in a binary structure.

;-- 4x hybrid launcher: 32 procs in 11 lines of code ------
;Also a 24-proc. launcher can be done in 10 lines + imp.
;could be 28 procs in 10 lines, but can't create 7 processes in three lines
; without modify B-fields

istep EQU (CORESIZE/3+1)

scnd:	djn.a @frst+2,#imp+(28*istep)
        dat 0        ,#imp+(24*istep)
strt:   spl 1        , imp+(20*istep)
        spl 1        , imp+(16*istep)
        spl 1        ,#imp+(12*istep)
        spl p_2      , imp+(8*istep)
p_1:    spl scnd     , imp+(4*istep)
frst:   djn.a >frst  ,#imp+(0*istep)   ;| 1st   4th
frth:   djn.a >frst  ,#imp+(2*istep)   ;|     3rd
p_2:    spl frth     , imp+(1*istep)   ;|   2nd
thrd:	djn.a >frst+1,#0

imp:    mov.i #0     , istep
end strt

Size depends on the number of processes of the spiral, table length and
jumps used to perform the launch. It is always smaller than the vector launch
and has the same speed.

The processes/size ratio is even better in larger launchers, but sometimes
continuous launchers would be more useful for '94 warriors.  The hybrid
launcher is not possible under '88 rules.

* What about 7-point imps?

No problem. The table would be 7+k-1 lines long. So table would be minimum
8 lines long for a 2x launcher.

;-- 4x hybrid launcher: 16 procs in 11 lines of code ------
; using a 7-pt spiral. Needs 2 dat instructions.

istep EQU (CORESIZE/7+1)

scnd:	djn.a >frst-2     ,#imp+(18*istep)
frth:	djn.a @frst+1     ,#imp+(14*istep)
	dat 0             ,#imp+(10*istep)
	dat 0             , imp+(6*istep)   ;|      7th
strt:	spl 1             , imp+(2*istep)   ;|   3rd
	spl 1             ,#imp+(5*istep)   ;|     6th
	spl p_2           , imp+(1*istep)   ;|  2nd
p_1:	spl scnd          , imp+(4*istep)   ;|    5th
frst:	djn.a >frst       ,#imp+(0*istep)   ;| 1st   
p_2:	spl frth          , imp+(3*istep)   ;|    4th
thrd:	djn.a >frst-4     ,#0
imp:	mov.i #0,istep
end strt

Vector tables for 7-pt spirals are bigger but are also easier to fit because
the djns are pointing to different locations in the table. Sometimes even,
we can use all the b-fields of the launch code to fit the table.
_______________________________________________________________________________
Extra Extra - Paper dodgers or oneshots with a snippet? by Christian Schmidt

On the search for interesting ideas I was thinking about John Lewis'
Rusty which I found on Koenigstuhl's infinite 94nop hill. 

;redcode
;author John Lewis
;name Rusty
;strategy Quickly scan and find nothing
;strategy then jump to a new location and
;strategy try to catch the other program
;strategy un-awares.  When this doesn't
;strategy work, twiddle your thumbs until
;strategy your opponets finds and kills you.
;assert 1

sight   add #5937,#0
        jmz.a -1,@sight
        add #-14,sight

mov     <burger,<sight
djn     -1,#6
add     #2,sight
        spl @sight
mov     burger+1,sight

ptr     dat.f   0,0
        dat.f   0,10
start   spl     #0,10
        mov.i   @2,>ptr
        mov.i   @1,>ptr
        djn.b   -2,{start
burger  dat 2301,0


It scans until it finds something and boot a clear 14 instructions ahead of
the scanned locations. The idea behind this warrior is quite fascinating.
If fighting against a paper the safest place should be very close to the
paper copies. This is especially true against papers with good spreading
constants (eg. highly optimized paper).

Based on Lewis' idea I started creating my own warrior. As a coreclear I
choose the one from David Moore's Forgotten Scanner, because this one is
able to beat paper/imps well. A .8c scan seems to work best for this kind
strategy. For the constant optimization I was using optiMAX with the
following settings:


;optimax 1234
;optimax work leap
;optimax rounds 1 100 200 200
;optimax suite fsh94nop0.2

;optimax phase2 fsh94nop0.2/pap/yorba.red
;optimax phase2 80%

;optimax phase3 top20
;optimax phase3 sbi:pap
;optimax phase3 120

;optimax phase4 top20
;optimax phase4 100%


Finally I got the following warrior:


;redcode-94nop
;name Leap in the Dark
;author Christian Schmidt
;strategy my first attempt to rediscover
;strategy a forgotten strategy for 94nop
;assert 1
;optimax clr

sOff    equ  3507
sStep   equ  1605

sGo     add.f  sTab,     sLook
        sne    *sLook,   @sLook
        add.f  sTab,     sLook
sLook   sne    sOff+10,  sOff
        djn.f  sGo,      <6431
	add.ab #-15,     sLook
        mov    <burger,  <sLook
        mov    <burger,  <sLook
        mov    <burger,  <sLook
        djn    -3,       #3
        add.ab #5,       sLook
        spl    @sLook
        mov    burger+1, sLook
sTab    dat    #sStep,   <sStep

    for 50
        dat    0,        0
    rof

gate    dat    4009,     18
jumper  jmp    4009,     18
        dat    0,        0
        dat    0,        0
        jmp    -400,     <2667
clear   spl    #4600,    18
        mov    @switch,  >gate
        mov    jumper,   }gate
switch  djn    clear+1,  {clear

burger  dat    0,        0

end

It scores surprisingly well against most of the strategies but has its
strength against papers and paper/imps. Interesting to mention is the fact
it has some problems with coreclear papers.

Here are some impressive scores against selected warriors:

Name                        W%     L%     T%   Leap score
==========================================================
Disincentive              76.00  13.50  10.50    238.50 
nPaper II                 71.00  19.00  10.00    222.00
Lord of the imp-rings II  70.00  19.00  11.00    221.00
Digitalis2003             61.00  24.50  14.50    197.50
RotF Copy                 53.00  13.00  34.00    193.00
Armadillo                 48.50  35.00  16.50    162.00
Ironic Imps               47.50  34.00  18.50    161.00

Roy van Rijn added a quickscanner to the above warrior and nicely re-optimized
it. Finally we send it again to the hill under the name Bottomless Pit:

;redcode-94nop
;name Bottomless Pit
;author Roy/Fizmo
;strategy The pit was found after a leap in the dark
;assert 1

zero    equ     qbomb

qtab3   equ     qbomb
qbomb   dat     >qoff           , >qc2
        dat     0               , 0

        dat     0               , <qb1
qtab2   dat     0               , <qb2
        dat     0               , <qb3

sOff    equ  2351
sStep   equ  1605


pGo     add.f  sTab,     @p
        sne    *sLook,   @sLook
        add.f  sTab,     @p
sLook   sne    sOff+10,  sOff
        djn.f  pGo,      <6431
        add.ab #-25,     sLook
p       mov    <burger,  <sLook
        djn    -1,       #9
        add.ab #5,       sLook
        jmp    @sLook,   <sLook
sTab    dat    #sStep,   <sStep

        dat     0               , 0
        dat    zero-1           , qa1
qtab1   dat    zero-1           , qa2

for     35
        dat     0               , 0
rof

gate    dat    4009,     18
jumper  jmp    4009,     18
        dat    0,        0
        dat    0,        0
        jmp    -400,     <2667
clear   spl    #4600,    18
        mov    @switch,  >gate
        mov    jumper,   }gate
switch  djn    clear+1,  {clear

burger  dat    0,        0
        dat    0,        0

qc2     equ ((1+(qtab3-qptr)*qy)%CORESIZE)
qb1     equ ((1+(qtab2-1-qptr)*qy)%CORESIZE)
qb2     equ ((1+(qtab2-qptr)*qy)%CORESIZE)
qb3     equ ((1+(qtab2+1-qptr)*qy)%CORESIZE)
qa1     equ ((1+(qtab1-1-qptr)*qy)%CORESIZE)
qa2     equ ((1+(qtab1-qptr)*qy)%CORESIZE)
qz      equ 2108
qy      equ 243         ;qy*(qz-1)=1


;q0 mutation
qgo     sne     qptr+qz*qc2     , qptr+qz*qc2+qb2
        seq     <qtab3          , qptr+qz*(qc2-1)+qb2
        jmp     q0              , }q0
        sne     qptr+qz*qa2     , qptr+qz*qa2+qb2
        seq     <qtab1          , qptr+qz*(qa2-1)+qb2
        jmp     q0              , {q0
        sne     qptr+qz*qa1     , qptr+qz*qa1+qb2
        seq     <(qtab1-1)      , qptr+qz*(qa1-1)+qb2
        djn.a   q0              , {q0
                                        ;q1 mutation
        sne     qptr+qz*qb3     , qptr+qz*qb3+qb3
        seq     <(qtab2+1)      , qptr+qz*(qb3-1)+(qb3-1)
        jmp     q0              , }q1
        sne     qptr+qz*qb1     , qptr+qz*qb1+qb1
        seq     <(qtab2-1)      , qptr+qz*(qb1-1)+(qb1-1)
        jmp     q0              , {q1

        sne     qptr+qz*qb2     , qptr+qz*qb2+qb2
        seq     <qtab2          , qptr+qz*(qb2-1)+(qb2-1)
        jmp     q0
                                        ;qz mutation
        seq     >qptr           , qptr+qz+(qb2-1)
        jmp     q2              , <qptr
                                        ;q0 mutation
        seq     qptr+(qz+1)*(qc2-1),qptr+(qz+1)*(qc2-1)+(qb2-1)
        jmp     q0              , }q0
        seq     qptr+(qz+1)*(qa2-1),qptr+(qz+1)*(qa2-1)+(qb2-1)
        jmp     q0              , {q0
        seq     qptr+(qz+1)*(qa1-1),qptr+(qz+1)*(qa1-1)+(qb2-1)
        djn.a   q0              , {q0
        jmz.f   pGo             , qptr+(qz+1)*(qb2-1)+(qb2-1)

qoff    equ     -86
qstep   equ     -7
qtime   equ     19

q0      mul.b   *2              , qptr
q2      sne     {qtab1          , @qptr
q1      add.b   qtab2           , qptr
        mov     qtab3           , @qptr
qptr    mov     qbomb           , }qz
        sub     #qstep          , qptr
        djn     -3              , #qtime
        djn.f   pGo             , #0
end qgo


I've adapted the same idea for the tiny hill. After some optimizations
under the following optimax commands:

;optimax 1234
;optimax work t-leap2
;optimax rounds 1 100 200 200
;optimax suite fshtiny0.1

;optimax phase2 fshtiny0.1/clr/tscan.red
;optimax phase2 80%

;optimax phase3 top25
;optimax phase3 clr:pap
;optimax phase3 90%

;optimax phase4 top25
;optimax phase4 100%

I got the following warrior. It was for a short period koth on the tiny
hill, because it was scoring extremely nice against most of the oneshots.

;redcode-tiny
;name Sidestep
;author Christian Schmidt
;strategy dodger
;assert CORESIZE==800


sOff    equ  737
sStep   equ  770

burger  equ  (bptr+1)


sGo   add.f  sTab,     sLook
      sne    *sLook,   @sLook
      add.f  sTab,     sLook
sLook sne    sOff+10,  sOff
      djn.f  sGo,      <194
      sub    #19,      sLook
      mov    <burger,  <sLook
      mov    <burger,  <sLook
      mov    <burger,  <sLook
      mov    <burger,  <sLook
      spl    @sLook,   <129
      mov    <burger,  <sLook
      mov    <burger,  <sLook

sTab  dat    #sStep,   <sStep

ptr   dat    0,        7
      dat    1,        11
sbmb  spl    #762,     13
wipe  mov    @bptr,    >ptr
      mov    @bptr,    >ptr
bptr  djn.f  wipe,     {sbmb

end sGo+1


A different approach is shown below. To increase the scores against scanners
I changed from a .8c scanning to a bombing/scanning loop. The booting part
has to be smaller in this case to give reasonable results.


;redcode-94nop
;name Attacker in the Darkness
;author Christian Schmidt
;strategy bomb -> dodge -> clear
;strategy sequential running strategy
;assert 1
;url http://www.corewar.info

sOff1   equ    4208
sOff2   equ    4064
sStep1  equ    3003
sStep2  equ    105

        add.f  sTab,     sScan 
sScan   mov.i  }sOff1,   sOff2 
        jmz.f  -2,       {sScan
	sub.a  #15,      sScan
        mov.i  <sRef,    {sScan
        djn    -1,       #9
        add.a  #5,       sScan
sRef    jmp    *sScan,   switch+1

    for 5
        dat    0,        0
    rof

sTab    dat    #sStep1,  <sStep2

    for 68
        dat    0,        0
    rof

gate    dat    4009,     18
jumper  jmp    4009,     18
        dat    0,        0
        dat    0,        0
        jmp    -400,     <2667
clear   spl    #4600,    18
        mov    @switch,  >gate
        mov    jumper,   }gate
switch  djn    clear+1,  {clear

end sScan

I hope I was able to show some new aspects of using a more intelligent boot.
_______________________________________________________________________________
Core Warrior was established by our founding editors Beppe Bezzi and
Myer R Bremer.  Later issues have been produced under the editorship of
Maurizio Vittuari, Anton Marsden, Christian Schmidt, Philip Kendall,
John Metcalf and German Labarga.

Questions?  Concerns?  Comments?  Complaints?  Mail them to people who
care.  Christian Schmidt <fizmo_master@yahoo.com>, German Labarga
<neogryzormail@mixmail.com> and John Metcalf <grumpy3039@hotmail.com>
© 2002-2005 corewar.info. Logo © C. Schmidt