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 85                                                       18 January, 2003
_______________________________________________________________________________
Core Warrior is a newsletter promoting the game of corewar.  Emphasis is
placed on the most active hills - currently the '94 no-pspace and '94 draft
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://www.ecst.csuchico.edu/~pizza/koth   ;Pizza (down)
  http://para.inria.fr/~doligez/corewar      ;Planar
  http://www.ociw.edu/~birk/corewar          ;C.Birk
  http://de.geocities.com/fizmo_master       ;Fizmo

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

The final results for the (inappropriately named) Spring / Summer 2002
tournament are included this issue, as are a collection of Hints by
Joonas Pihlaja and Thunderstrike by Lukasz Grabun.

The deadline for the Redcoders' Frenzy: the ongoing corewar tournament
is the 1st February, so if you haven't done so already, check out the
rules on Fizmo's corewar page:

  http://de.geocities.com/fizmo_master/cwt.htm

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

 #  %W/ %L/ %T                      Name               Author    Score    Age
 1  42/ 38/ 20              Toxic Spirit        Philip Thorne    146.3     55
 2  40/ 37/ 22      Return of Vanquisher        Lukasz Grabun    143.1    132
 3  32/ 22/ 46                Reepicheep       Grabun/Metcalf    141.7    601
 4  45/ 49/  6                      Claw                Fizmo    141.3    338
 5  33/ 24/ 43             Thunderstrike        Lukasz Grabun    141.3      6
 6  30/ 19/ 51     Revenge of the Papers            Fizmo/Roy    140.9    408
 7  28/ 16/ 56                      test         Roy van Rijn    139.9      1
 8  40/ 41/ 19              Hazy Test 63        Steve Gunnell    139.4    145
 9  31/ 23/ 46               Son of Vain      Oversby/Pihlaja    138.9   1370
10  38/ 38/ 23                 Driftwood         John Metcalf    138.2     54
11  39/ 42/ 19            Herbal Avenger      Michal Janeczek    136.4    219
12  26/ 17/ 57   Return of the Pendragon    Christian Schmidt    136.1    207
13  24/ 13/ 63   The Three-Handed Knight    Christian Schmidt    135.7    103
14  27/ 19/ 54                 Firestorm         John Metcalf    134.4    406
15  25/ 17/ 58                      test                   mj    134.0     11
16  42/ 49/  9                  Chainsaw    Christian Schmidt    133.8      3
17  21/  8/ 71              Decoy Signal             Ben Ford    132.8    297
18  30/ 29/ 41           Digitalis 2002a    Christian Schmidt    130.8    127
19  29/ 27/ 44                     Pixie        Lukasz Grabun    129.9     18
20  26/ 23/ 50            Positive Knife         Ken Espiritu    129.0    444

182 successful challenges pass since the previous issue, and Son of Vain
becomes the oldest warrior ever on the '94nop hill.  Blade, the second
oldest warrior last issue, perishes (age 643).  Also pushed into the fatal
21st place were The Stormkeeper (460), Hazy Lazy ... reborn (284), Blowrag
(234), Willow revised (205) and Dark Lowlands (108).

Koth report:  Most often seen in the top spot has been Son of Vain, king
after 59 successful challenges.  Also performing well were Reepicheep (55
times king), Toxic Spirit (28) and Return of Vanquisher (22).
_______________________________________________________________________________
The '94 No Pspace Hall of Fame:  * indicates the warrior is still active.

Pos Name                   Author             Age    Strategy
 1  Son of Vain            Oversby/Pihlaja   1370 *  Q^4 -> Stone/imp
 2  Blacken                Ian Oversby       1363    Q^2 -> Stone/imp
 3  nPaper II              Paul-V Khuong     1270    MiniQ^3 -> Paper
 4  Uninvited              John Metcalf      1130    MiniQ^3 -> Stone/imp
 5  Behemot                Michal Janeczek   1078    MiniQ^3 -> Bomber
 6  Olivia                 Ben Ford           886    Q^4 -> Stone/imp
 7  Keyser Soze            Anton Marsden      823    Qscan -> Bomber/paper/imp
 8  Quicksilver            Michal Janeczek    789    Q^4 -> Stone/imp
 9  Eraser II              Ken Espiritu       781    Scanner
10  Inky                   Ian Oversby        736    Q^4 -> Paper/stone
11  Jinx                   Christian Schmidt  662    Q^3 -> Scanner
12  Blade                  Fizmo              643    Qscan -> Scanner
13  Reepicheep             Grabun/Metcalf     601 *  Q^4 -> Paper/stone
14  Jade                   Ben Ford           600    Q^4 -> Stone/imp
15  G3-b                   David Moore        503    Twoshot
16  Vanquisher             Lukasz Grabun      469    Q^4 -> Bomber
17  Revival Fire           P.Kline            468    Bomber
18  The Phantom Menace     Anton Marsden      465    Qscan -> Paper/imp
19  The Stormkeeper        Christian Schmidt  460    Q^3 -> Stone/imp
20  Positive Knife         Ken Espiritu       444 *  Q^4 -> Stone/imp
21  Boys are Back in Town  Philip Kendall     441    Scanner
 =  Zooom...               John Metcalf       441    Scanner
23  Revenge of the Papers  Fizmo+Roy          408 *  Q^4 -> Paper
24  Firestorm              John Metcalf       406 *  MiniQ^3 -> Paper/imp
25  Qtest                  Christian Schmidt  394    Q^3 -> Paper

4 new entries, 2 stone/imp and 2 paper.  Next to enter should be Claw.
_______________________________________________________________________________
Current Status of the KOTH.ORG '94 Draft Hill:

 #  %W/ %L/ %T                      Name               Author    Score    Age
 1  43/ 38/ 19                  Combatra          David Moore    147.9     91
 2  32/ 22/ 45                Reepicheep       Grabun/Metcalf    142.8    219
 3  32/ 22/ 46               Son of Vain      Oversby/Pihlaja    142.7    190
 4  41/ 39/ 21  Return of Vanquisher PsP        Lukasz Grabun    142.3     30
 5  42/ 41/ 17           Bustling Spirit    Christian Schmidt    142.3     60
 6  40/ 40/ 20            Herbal Avenger      Michal Janeczek    140.3    102
 7  37/ 33/ 30            Cyanide Excuse          Dave Hillis    140.0     92
 8  28/ 17/ 55               Incredible!         John Metcalf    139.0     85
 9  36/ 33/ 30            Mantrap Arcade          Dave Hillis    139.0     17
10  40/ 42/ 18            Woozily Higgle    Christian Schmidt    138.6      5
11  32/ 25/ 43              Bitter Sweet        Lukasz Grabun    138.4     12
12  38/ 39/ 23              Microvenator      Michal Janeczek    137.7     23
13  26/ 14/ 60                 Defensive    Christian Schmidt    137.1     15
14  26/ 16/ 58                   Blowrag      Metcalf/Schmidt    136.5    146
15  38/ 39/ 23               CrazyShot 2    Christian Schmidt    136.4    202
16  26/ 17/ 57                  Monolith         John Metcalf    136.3     28
17  32/ 27/ 41             Dark Lowlands         Roy van Rijn    136.3     95
18  32/ 28/ 40           Digitalis 2002a    Christian Schmidt    136.0     29
19  29/ 22/ 49     Revenge of the Papers            Fizmo/Roy    135.3    197
20  25/ 19/ 56   The Three-Handed Knight    Christian Schmidt    131.1      1

Koth report:  Since last issue the hill has aged by 59.  Combatra has been
King most frequently, after 32 successful challenges.  Bustling Spirit was
often atop the hill too, 17 times in all.
_______________________________________________________________________________
The '94 Draft Hall of Fame:  * indicates the warrior is still active.

Pos Name                   Author             Age    Strategy
 1  Reepicheep             Grabun/Metcalf     219 *  Q^4 -> Paper/stone
 2  CrazyShot 2            Christian Schmidt  202 *  Q^4 -> Oneshot
 3  Revenge of the Papers  Fizmo/Roy          197 *  Q^4 -> Paper
 4  Uninvited              John Metcalf       194    MiniQ^3 -> Stone/imp
 5  Son of Vain            Oversby/Pihlaja    190 *  Q^4 -> Stone/imp
 6  Wallpaper              Christian Schmidt  175    Q^4 -> Paper/stone
 7  Blowrag                Metcalf/Schmidt    146 *  Q^4 -> Paper/imp
 8  Joyful Maw             Dave Hillis        143    P-warrior
 9  Paperazor              Christian Schmidt  141    Paper
10  Self-Modifying Code    Ben Ford           132    P-warrior
11  Mad                    Christian Schmidt  123    P-warrior
12  Shapeshifter           Michal Janeczek    107    P-warrior
13  Herbal Avenger         Michal Janeczek    102 *  Scanner
14  Help...I'm Scared      Roy van Rijn        98    Oneshot
15  Dark Lowlands          Roy van Rijn        95 *  *Unknown*
16  Cyanide Excuse         Dave Hillis         92 *  P-warrior
 =  Dry Ice                Ben Ford            92    P-warrior
18  Combatra               David Moore         91 *  Boot distance calculator
19  Digitalis 2002         Christian Schmidt   89    Q^4 -> Clear/imp
 =  WingShot++             Ben Ford            89    Oneshot
21  Origami Harquebus      mjp                 88    P-warrior
22  Incredible!            John Metcalf        85 *  Paper/imp
23  Firestorm              John Metcalf        80    MiniQ^3 -> Paper/imp
24  Pattel's Virus         Ben Ford            73    P-warrior
25  Hazy Lazy ... reborn   Steve Gunnell       67    Scanner

Yet another hall of fame :-)
_______________________________________________________________________________
Current Status of the Koenigstuhl Recursive ICWS '94 Draft Hill:

Koenigstuhl is a collection of 8 infinite hills found at:

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

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

rank name                        author                 score
--------------------------------------------------------------
   1 Reepicheep                  Grabun/Metcalf         170.18
   2 Son of Vain                 Oversby/Pihlaja        167.57
   3 Herbal Avenger              Michal Janeczek        166.35
   4 Blue Pike                   Roy van Rijn           165.79
   5 Quicksilver                 Michal Janeczek        165.06
   6 Pixie                       Lukasz Grabun          163.90
   7 Uninvited                   John Metcalf           163.04
   8 Hazy Lazy ...               Steve Gunnell          162.96
   9 Cheep! Half-Off!            Ben Ford               162.84
  10 Behemot                     Michal Janeczek        161.70
  11 Firestorm                   John Metcalf           160.61
  12 procoptodon                 Steve Gunnell          159.91
  13 Jinx                        Christian Schmidt      159.82
  14 Return of Vanquisher        Lukasz Grabun          159.70
  15 Vanquisher II               Lukasz Grabun          159.30
  16 Candy                       Lukasz Grabun          159.14
  17 Geist v0.1                  Ben Ford               157.82
  18 Olivia                      Ben Ford               157.79
  19 The Machine                 Anton Marsden          157.65
  20 Purifier                    Lukasz Grabun          157.58
  21 Silver Talon 1.2            Edgar                  157.19
  22 Deep Freeze X               Lukasz Grabun          156.79
  23 Recovery                    Ian Oversby            156.53
  24 Newt                        Ian Oversby            156.06
  25 The Pendragon               Christian Schmidt      156.03

Almost half of the top 25 are new entries:  Reepicheep, Herbal Avenger,
Blue Pike, Pixie, Cheep! Half-Off!, Firestorm, procoptodon, Jinx, Return
of Vanquisher, Geist v0.1, Olivia and finally The Pendragon.

Also new in the top 100 are The Marsupial Lion (in rank 32), Digitalis
2002 (37), Revenge of the Papers (54), Fast Action (56), Blowrag (63),
The Demon Duck of Doom (93) and Help I'm Scared (95).

The '88 infinite hill has some strong new entries too, with Quicksilver
'88 (in rank 2), '88 test IV (3) and vm5 (4).
_______________________________________________________________________________
Spring / Summer 2002 Corewar Tournament - Round 5 Results and Final Standings:

In round 5, competitors take part in three event.  Warriors have been
written without the use of the add / sub opcodes.  Pattern bombers /
scanners are still possible using mul, and several of these have been
entered.

* Our first event is multi-warrior, with three warriors in core, 5
  points for a win, 2 points for a two-way tie, and 1 point for a
  three-way tie.  All 969 combinations of three warriors are played:

 # %Won Lost Tie2 Tie3  Name                   Author             Score     %
 1 29.0 53.4  5.2 12.4  Russ Post              Steve Gunnell     167.77 100.0
 2 23.8 48.7 10.5 17.0  LuckyLuke              Philip Thorne     156.93  93.5
 3  5.8 10.0 35.8 48.4  The Duelist            Michal Janeczek   149.05  88.8
 4 19.7 45.0 15.2 20.1  Huanchot               G.Labarga         148.90  88.8
 5  2.6  2.4 36.7 58.3  Blackheart             Ben Ford          144.65  86.2
 6 11.3 26.2 24.5 38.0  Digimon                Christian Schmidt 143.56  85.6
 7  2.4  6.4 37.4 53.7  Pokemon                Christian Schmidt 140.69  83.9
 8  6.9 16.6 27.7 48.8  Dan Dare               Simon Wainwright  138.57  82.6
 9  6.6 18.4 30.0 45.0  Bravo                  Lukasz Grabun     137.95  82.2
10 19.4 52.7 11.0 16.8  Magneto                Roy van Rijn      135.92  81.0
11  3.6 13.8 32.2 50.5  Shadowfax              Roy van Rijn      132.68  79.1
12  3.1 13.9 32.3 50.6  Jolly Jumper           Philip Thorne     130.88  78.0
13 10.9 38.0 21.5 29.6  Dixie                  Lukasz Grabun     126.96  75.7
14 11.3 38.8 19.5 30.3  Commander Heliotornado Michal Janeczek   125.98  75.1
15  1.4 11.6 27.2 59.8  Ron Post               Steve Gunnell     121.35  72.3
16  4.1 25.0 25.3 45.6  Spiderman              Ben Ford          116.63  69.5
17  3.0 31.9 23.1 42.0  Yak Snout              Dave Hillis       103.09  61.4
18  2.7 40.5 20.3 36.5  Bonzo                  Sascha Zapf        90.68  54.1
19  0.3 65.8 11.5 22.4  Mekon                  Simon Wainwright   47.01  28.0

* The second is a standard round-robin battle, with no self-fights,
  4 points for a win, and 1 point for a tie:

 #  %Won Lost Tied  Name                   Author               Score     %
 1  56.0 33.3 10.7  Russ Post              Steve Gunnell       234.83 100.0
 2  42.5 27.9 29.6  The Duelist            Michal Janeczek     199.58  85.0
 3  45.1 38.2 16.7  LuckyLuke              Philip Thorne       197.27  84.0
 4  43.0 33.3 23.7  Huanchot               G.Labarga           195.64  83.3
 5  44.2 38.3 17.5  Magneto                Roy van Rijn        194.41  82.8
 6  37.8 21.0 41.2  Commander Heliotornado Michal Janeczek     192.42  81.9
 7  26.4 18.1 55.4  Digimon                Christian Schmidt   161.12  68.6
 8  23.3 17.6 59.1  Bravo                  Lukasz Grabun       152.33  64.9
 9  17.6 12.1 70.3  Shadowfax              Roy van Rijn        140.78  59.9
10  18.1 14.4 67.5  Dan Dare               Simon Wainwright    139.99  59.6
11  22.9 32.2 44.9  Dixie                  Lukasz Grabun       136.56  58.2
12  16.0 12.4 71.6  Jolly Jumper           Philip Thorne       135.75  57.8
13  11.8  4.4 83.8  Pokemon                Christian Schmidt   131.13  55.8
14  11.2  3.6 85.2  Blackheart             Ben Ford            129.92  55.3
15  10.2 10.8 79.0  Ron Post               Steve Gunnell       119.64  50.9
16  12.7 26.7 60.6  Spiderman              Ben Ford            111.36  47.4
17  14.9 34.0 51.1  Bonzo                  Sascha Zapf         110.68  47.1
18  12.4 34.3 53.3  Yak Snout              Dave Hillis         102.92  43.8
19   2.8 56.5 40.6  Mekon                  Simon Wainwright     51.98  22.1

* The final event sees the entries battle against the 'White Army'
  benchmark of 20 warriors, 3 points for a win, 1 point for a tie.
  The score of Commander Heliotornado just has to be admired:

 #  Name                   Author                 %W  %L  %T   Score      %
 1  Commander Heliotornado Michal Janeczek        54  26  20  182.30  100.0
 2  LuckyLuke              Philip Thorne          40  46  14  134.10   73.6
 3  Pokemon                Christian Schmidt      21  10  69  131.64   72.2
 4  Blackheart             Ben Ford               18  12  70  123.30   67.6
 5  Bravo                  Lukasz Grabun          27  31  42  123.24   67.6
 6  Shadowfax              Roy van Rijn           24  25  51  122.58   67.2
 7  Jolly Jumper           Philip Thorne [PVK/JM] 24  26  49  122.31   67.1
 8  Digimon                Christian Schmidt      30  39  31  122.02   66.9
 9  Dan Dare               Simon Wainwright       22  30  48  114.65   62.9
10  Ron Post               Steve Gunnell          18  23  58  112.70   61.8
11  The Duelist            Michal Janeczek        28  43  29  112.42   61.7
12  Dixie                  Lukasz Grabun          27  45  28  108.32   59.4
13  Russ Post              Steve Gunnell          33  58   9  108.26   59.4
14  Huanchot               G.Labarga              26  53  21   99.61   54.6
15  Magneto                Roy van Rijn           26  58  16   94.11   51.6
16  Spiderman              Ben Ford               14  41  45   87.08   47.8
17  Bonzo                  Sascha Zapf            16  62  22   70.45   38.6
18  Yak Snout              Dave Hillis            10  57  34   62.26   34.2
19  Mekon                  Simon Wainwright        7  70  23   45.29   24.8

Among the entries, paper is the most common strategy, with 4 in total,
(Jolly Jumper, Shadowfax, Spiderman and Ron Post).  Also, there are
3 paper/imp (Pokemon, Bonzo and Blackheart) and a paper/clear (Bravo).
Oneshots are well represented with 3, (Lucky Luke, Huanchot and
Magneto) and there's just one scanner (Ross Pot).  Two clear/imps
(Dixie and Digimon) take part, as do an evolved warrior (Yak Snout)
and an imp (Mekon).  The remaining 3 warriors are p-spacers, (Dan Dare,
The Duelist and Commander Heliotornado).

The total score for round 5:

 # Competitor             Multi  Robin  Bmark   Total
 1 Michal Janeczek         88.8   85.0  100.0   273.8
 2 Steve Gunnell          100.0  100.0   61.8   261.8
 3 Philip Thorne           93.5   84.0   73.6   251.1
 4 Roy van Rijn            81.0   82.8   67.2   231.0
 5 German Labarga          88.8   83.3   54.6   226.7
 6 Christian Schmidt       85.6   68.6   72.2   226.4
 7 Lukasz Grabun           82.2   64.9   67.6   214.7
 8 Ben Ford                86.2   55.3   67.6   209.1
 9 Simon Wainwright        82.6   59.6   62.9   205.1
10 Sascha Zapf             54.1   47.1   38.6   139.8
11 Dave Hillis             61.4   43.8   34.2   139.4

And finally, we have the Spring / Summer 2002 results.  For those players
who took part in all 5 rounds, only the highest 4 results count toward the
final score:

 # Competitor              Tiny  BigLP  88Win  Len50  3Atha  Total     Final
 1 Michal Janeczek         93.3  100.0  100.0   98.6  273.8  665.7  :  572.4
 2 Steve Gunnell           91.0   85.0   82.4   96.2  261.8  616.4  :  534.0
 3 Philip Thorne           75.5   68.0   72.7   89.0  251.1  556.3  :  488.3
 4 Ben Ford               100.0   74.4   75.1  100.0  209.1  558.6  :  484.2
 5 Simon Wainwright        79.1   71.5   89.1   79.0  205.1  523.8  :  452.3
 6 Lukasz Grabun           81.3     .    67.6   70.7  214.7  434.3  :  434.3
 7 Dave Hillis             99.9   84.3   87.3   87.7  139.4  498.6  :  414.3
 8 Roy Van Rijn              .      .      .    92.8  231.0  323.8  :  323.8
 9 Christian Schmidt         .      .      .    90.7  226.4  317.1  :  317.1
10 German Labarga            .      .      .    60.0  226.7  286.7  :  286.7
11 Robert Macrae           89.7   61.0     .      .      .   150.7  :  150.7
12 Sascha Zapf               .      .      .      .   139.8  139.8  :  139.8
13 Winston Featherly-Bean  72.9   47.3     .      .      .   120.2  :  120.2
14 David Moore               .    51.4   63.6     .      .   115.0  :  115.0
15 Martin Ankerl           88.2     .      .      .      .    88.2  :   88.2
16 Ken Espiritu              .      .    86.3     .      .    86.3  :   86.3
17 Leonardo H. Liporati    84.3     .      .      .      .    84.3  :   84.3
18 mushroommaker           71.3     .      .      .      .    71.3  :   71.3
19 Arek Paterek            66.0     .      .      .      .    66.0  :   66.0
20 Paul Drake              61.9     .      .      .      .    61.9  :   61.9
21 Sheep                     .      .      .    60.2     .    60.2  :   60.2
22 Compudemon              53.9     .      .      .      .    53.9  :   53.9
23 Darek L.                  .      .      .    35.2     .    35.2  :   35.2
24 bvowk                     .      .      .    27.0     .    27.0  :   27.0

So, the overall winner is Michal Janeczek, who wins the International Money
Order for $100 (US).  The best performance in an individual round also goes
to Michal, for FragPaper in the BigLP round.  The highest ranking tournament
newcomer is Philip Thorne, in 3rd place.  Congratulations to everyone who
has taken part.
_______________________________________________________________________________
Seven Hints, by Joonas Pihlaja

Here are some hints that you probably know already, but might refresh
your memory.

1) In a stone you can spread out your decrement stream by having the
decrement pointer change like the main bombing pointer does:

;redcode
;assert 1

STEP    equ     (3039*8)

steps   spl     #3*STEP,3*STEP
        add     steps,  ptr
ptr     mov     bmb+2+2*STEP, *bmb+2
        mov     bmb,    @ptr
        djn.f   -3,     *ptr
bmb     dat     STEP,   0

end

2) When your one shot finds something, try moving your scan pointers
back a bit so it has a better chance of stunning the enemy.  Try it
with and without the "add #-20, gate" line in the one shot below, for
instance.

;redcode-94nop
;name one shot test
;strat .5c fscan -> .5c sdd clear
;assert 1

gate equ (bp-(bs-bp))
sca     add    #10, gate
        jmz.f   sca, @gate
        add     #-20, gate
bp      spl     #bs, bd-gate
        mov     *bp, >gate
        djn.f   -1, {gate
        dat     0,0
        dat     0,0
bd      dat     0, 20-gate
bs      spl     #bp-(gate-1), 20-gate
end sca

3) You don't need a d-clear to have an effective gate in your clear.
The loop works almost as well.  (Thanks to David Moore, who pointed
this one out.)

        mov     bomb,   >gate
        djn.f   -1,     {gate

4) When booting multi-component warriors where the components are
heavy splitters, make sure all your processes leave the boot code at
roughly the same time.  Otherwise if you send processes to a heavy
splitter and still have things to do in your boot code, then those
remaining processes may linger in the boot code, just gagging to be
spl wiped.

5) Don't buy the hype: There's no magic d-clear bomb.  Use your spare
fields for something useful.

Here's the imp pump:
pump    spl     0,0
        add.a   #2667+1,2
        mov     imp,>1
        jmp     imp-2*2668,1
imp     mov     0,2667
end

And here's the d-clear:
gate    equ     (clr-5)

clr     spl     0,0
        mov     2,>gate
        djn.f   -1,>gate
        dat     AFIELD,2-gate           ; AFIELD one of 0, <2667, etc.

Here are the results for various AFIELD's from running pmars-server
with the flags -r 1000 -F 1000 imp.red dclr.red.  Wins are for the imp.

0:   3-536-461

<0:  3-536-461   <2666:  3-536-461   <5333:  3-535-462
<-1: 3-536-461   <2667:  3-540-457   <5334:  4-536-460
<1:  3-536-461   <2668:  3-536-461   <5335:  3-536-461

>0:  3-525-472   >2666:  3-471-526   >5333:  5-498-497
>-1: 4-507-489   >2667:  3-525-472   >5334:  4-525-471
>1:  4-535-461   >2668:  3-536-461   >5335:  10-525-465

Note that across the board the incrementing bombs score worse than the
control bomb dat 0,2-gate by a fair deal, except once.  Contrast that
to the decrementing bombs where mostly there is no effect, except
<2667, which has a very slight advantage.

6) Airbag techniques are more effective with larger loops.

7) Scan your opponent in unexpected ways.
_______________________________________________________________________________
Extra Extra - Thunderstrike by Lukasz Grabun

One way in which a warrior made by a experienced programmer differs from one
made by a beginner is the variety of classes of other programs it can beat.
Sure, it's easy to make a scanner that beats paper, but can we make it
anti-stone enough to enter the hill and survive there?  For a stone, it's
important to score well against other stones, clears and paper.  During the
process of creating Thunderstrike I've realised that it is scanners which
are sometimes the hardest to beat.

The idea was given a few years ago by Ian Oversby in his article about Newt.
("Longevity, Imp/Stones and Newt", CW69).  Here's what he stated:

: So, how is it possible to future-proof your new program?  I believe we
: must look at the problem in the correct light.  If we take the traditional
: analogy of warriors to stone/paper/scissors then we condemn our warrior to
: death as the hill balance changes.  If we wrote a scanner then when many
: stones enter the hill we will surely die.  However, this analogy holds
: very loosely.  For example, it is possible to write a stone that will kill
: paper or paper that will kill scissors.  That attitude that we _can_ beat
: a warrior type that would usually beat us is very important.  It is
: interesting to note that Vigor, allegedly a paper, suffers its worst
: defeat at the hands of a stone - Newt.

Thunderstrike originates from the idea expressed by Ian in his program:  a
strong and resilient stone to kill scanners, with a d-clear to wipe imps.
TS's stone implements just one more trick while bombing:  a Torch-like
engine, as widely used by other stones.  So, why not try it in a Newt-like
bomber?  The idea was quite easy to implement:

step  equ (3510)
hop   equ (46)
gate  equ (inc-6)
from  equ (0+step)
hit   equ (loop-step-hop)

inc   SPL.B #step  , <-step
      MOV.I {from  , <hit
      MOV.I bomb   , @-1
      ADD.F inc    , -2
loop  DJN.F -3     , <-step+inc
      MOV.I bomb   , >gate
      DJN.F -1     , >gate
bomb  DAT.F >5335  , hop+1

It produces quite a good pattern of laid bombs/decrements:

...0..X..*...0..X..*...

where 0 is a dat 0,0 bomb, X is a dat >5335,hop+1 and * is a decrement.  As
you will have noticed it is similar to Newt's pattern, though not so dense.

The stone itself is large - 8 cells, opposed to 4-5 cells for the generic
frenzy killers commonly used in stone/imps, which does not compare well.  On
the other hand, TS has a good offensive power against imps - not only does
it have its own d-clear, but it also uses an anti-imp bomb as a pointer for
the second bomb.  Other stone/imps in general do not have their own clear,
or they self-bomb to create a clumsy 0.33c clear, losing many processes when
they do so.

Skew Dwarf from Recycled Bits has the most offensive power against stone/imp
warriors among generic stones - compare the results (scores calculated for
SD, Candy and TS, respectively):

     :    Skew Dwarf    :       Candy      :  Thunderstrike   :
     : %W %L %T Sto S/I : %W %L %T Sto S/I : %W %L %T Sto S/I :
Candy: 32 53 16 112 175 :  7 89  4  25 271 : 31 45 24 117 159 :
Jade : 30 55 15 105 180 :  5 89 10  25 277 : 33 39 28 127 155 :
QS   : 22 72  6  72 222 : 12 85  3  39 279 : 35 51 13 118 166 :
Uninv: 25 56 19  94 187 : 13 81  6  45 249 : 30 48 22 112 166 :
Oliv : 24 57 19  91 190 :  6 82 12  30 258 : 25 51 27 102 180 :
SoV  : 18 51 32  76 185 :  8 85  3  27 253 : 21 51 27  90 180 :
Newt : 24 53 24  96 183 :  9 81 10  37 253 : 22 42 36 102 162 :
WMute: 12 72 15  51 231 :  9 83  8  35 257 : 22 55 23  89 188 :
Storm: 26 57 17  95 188 :  6 89  5  23 272 : 27 40 33 114 153 :
PenDr: 19 46 35  92 173 :  5 88  7  22 271 : 17 36 47  98 155 :
Roseb: 22 71  7  73 219 :  9 83  8  35 256 : 27 50 24 100 172 :

Avr  : 23 57 20  89 191 :  8 85  7  31 262 : 26 46 28 106 166 :

As you can see, Candy is totally unable to handle stone/imps.  Skew Dwarf
scores much better, but it is Thunderstrike that gains most wins and turns
many losses into ties.  Sidenote:  the effectiveness with which Newt handles
d-clear is strongly overstated.  D-clear of the form:

gate  dat   0     , 100
      dat   0     , 0
clear spl  #0     , #0
      mov   bomb  , >gate
      djn.f -1    , >gate
bomb  dat   >5335 , 2-gate
      end   clear

...  scores even with a stone derived from Newt, while Thunderstrike beats
it (52/42/6).  To give you a better picture here are detailed results (pmars
executed with -P option)

Number of       Newt's stone        Thunders's stone
   cycles        loses/wins            loses/wins

    1000           18/100                 4/100
    5000           92/100                55/100
   10000          103/100                94/100
   80000          103/100               118/100

Newt disables the d-clear sooner, but overall Thundestrike performs better.
As I discovered, the average performarance of Newt against d-clear is caused
by the double spl lines.  Commenting first line in the stone helps a lot:
Newt scores now 51/39/9.

This leaves papers (and as I later found out, scanners) to take care of.
Paper can harm Thunderstrike.  This is a weakness of all stone/imp warriors
and only a little can be done about this.  After careful consideration and
testing, I chose to use medium-weight imps (30 processes) and kill the
launcher after 3000 cycles.  If the stone survives the first 1200 cycles -
the moment when d-clear is entered - it completely surpasses imps, to
perform a better end-phase, and disallow the imps reaching any remaining
gates.

This is done in a similar manner to Newt - kind of double spl line when
`loop' is hit produces so many processes, the imps slow down, hardly moving
over the core.  However, if the stone is killed during paper carpet bombing,
the imps are strong enough to face paper bombs.  For example, a paper
derived from Purifier ties with Thunderstrike (2/4/94 - counted for paper).
Reepicheep's paper scores about 13/7/80.  However, stronger anti-imp papers,
such as Disincentive, can do real harm.  Hopefully, the times of stand-alone
papers are gone.  :-)

While creating the stone, I discovered that even programs which by
definition should be killed by stones (namely: scissors) can produce some
real problems:

     :    Skew Dwarf    :       Candy      :  Thunderstrike   :
     : %W %L %T Sto Sca : %W %L %T Sto Sca : %W %L %T Sto Sca :
HL   : 63 31  6 195  99 : 66 28  6 204  90 : 42 51  7 133 160 :
Boys : 68 25  6 210  81 : 68 25  7 211  82 : 57 37  5 176 116 :
CS2  : 49 43  7 154 136 : 45 45  9 144 144 : 48 38 13 157 127 :
DeepF: 67 28  4 205  88 : 65 27  7 202  88 : 45 45 10 145 145 :
SilvT: 73 17  9 228  60 : 72 21  6 222  69 : 57 35  8 179 113 :
Zooom: 73 21  6 225  69 : 78 16  5 239  53 : 57 35  8 179 113 :
HerbA: 67 25  8 209  83 : 61 30  9 192  99 : 51 41  7 160 130 :
Willw: 69 29  2 209  89 : 76 19  4 232  61 : 65 34  2 197 104 :
Jinx : 73 18  8 227  62 : 70 22  7 217  73 : 57 35  7 178 112 :

Avr  : 68 26  6 210  84 : 67 25  7 208  82 : 53 39  8 167 125 :

Thunderstrike scores well against traditional scanners.  Those with
anti-stone improvements cause some problems but overall the score is quite
good.  Skew Dwarf and Candy's stone score extraordinarily, and outrun
scanners (no wonder, Candy *was* designed to kill them).

Here are results counted for Thunderstrike against some top-notch
warriors:

                               %W  %L  %T    Score
===================================================
Behemot                        41  43  16     139
Boys Are Back                  45  40  14     150
Candy                          24   9  67     140
Crazyshot 2                    41  30  28     152
Deep Freeze X                  42  42  16     143
Disincentive                   13  24  62     102
Executor                       45  35  20     156
Firestorm                      15  14  71     117
Hazy Lazy                      36  43  20     129
Herbal Avenger                 42  37  21     146
Jade                           31   8  61     153
Mini Jedi                      12   9  79     116
Newt                           25  27  48     124
nPaper II                       9  11  80     108
Olivia                         24  27  49     121
Purifier                       15  12  72     118
Quicksilver                    30  11  60     149
Recovery                       21  19  60     123
Reepicheep                     23  18  59     128
Return of Vanquisher           43  40  17     145
RotF Copy                      13   7  80     119
Silver Talon 1.2               43  41  16     145
Son of Vain                    22  23  55     121
Stylizede Euphoria             30   7  62     153
Uninvited                      34   8  58     160
Vanquisher II                  44  37  19     152
Wallpaper                      21  25  54     116
Wintermute                     30  10  60     150
Zooom                          43  39  18     148

Here's the code. Enjoy.

;redcode-94nop
;author Lukasz Grabun
;assert (CORESIZE==8000)
;name Thunderstrike
;strategy Q^4 -> Stone/Imp

orig  z for 0
        rof

; -- imp constants

istep   equ     (2667)            ; 3-point imps
ioff    equ     (6338+orig)       ; imp launcher offset

qBmb    dat     {qOff , #qF

; -- imp launcher

pump    SPL.B   #imp            , #imp+1
        SUB.F   #-istep-1       , iloop
        MOV.I   imp             , }pump
iloop   JMP.B   imp-2*(istep+1) , >imp+2*istep-1
imp     MOV.I   #0              , istep

; -- stone constants

step    equ     (3510)
hop     equ     (46)

gate    equ     (inc-6)

from    equ     (0+step)
hit     equ     (loop-step-hop)

soff    equ     (2498+ioff)     ; stone offset

; -- stone

inc     SPL.B   #step   , <-step
        MOV.I   {from   , <hit
        MOV.I   bomb    , @-1
        ADD.F   inc     , -2
loop    DJN.F   -3      , <-step+inc
        MOV.I   bomb    , >gate
        DJN.F   -1      , >gate
bomb    DAT.F   >5335   , hop+1

; -- boot

boot    MOV.I  bomb     , soff
        MOV.I  {boot    , <boot
        MOV.I  {boot    , <boot
        SPL.B  }2       , }qC
qTab2   SPL.B  *1       , }qD
        SPL.B  0        , }qE
        MOV.I  {boot    , <boot
        MOV.I  <pump    , {qTab1
        DJN.B  @boot    , #5
        JMP.B  ioff-5   , #qA
qTab1   DAT.F  ioff     , #qB

for 46
dat 0,0
rof

; -- qscan constants

qX      equ 6844
qA      equ 6390
qB      equ 5097
qC      equ 6148
qD      equ 4855
qE      equ 3562
qF      equ 4129

qStep   equ         7
qTime   equ        16
qOff    equ        87

; -- qscan

qGo   seq    qPtr+qX          , qPtr+qX+qD
      jmp    qSkip            , {qPtr+qX+qStep
      sne    qPtr+qX*qE       , qPtr+qX*qE+qE
      seq    <qTab2+1         , qPtr+qX*(qE-1)+(qE-1)
      jmp    qDec             , }qDec+2
      sne    qPtr+qX*qF       , qPtr+qX*qF+qD
      seq    <qBmb            , qPtr+qX*(qF-1)+qD
      jmp    qDec             , }qDec
      sne    qPtr+qX*qA       , qPtr+qX*qA+qD
      seq    <qTab1-1         , qPtr+qX*(qA-1)+qD
      djn.a  qDec             , {qDec
      sne    qPtr+qX*qB       , qPtr+qX*qB+qD
      seq    <qTab1           , qPtr+qX*(qB-1)+qD
      jmp    qDec             , {qDec
      sne    qPtr+qX*qC       , qPtr+qX*qC+qC
      seq    <qTab2-1         , qPtr+qX*(qC-1)+(qC-1)
      jmp    qDec             , {qDec+2
      seq    qPtr+qX*(qC-2)   , qPtr+qX*(qC-2)+(qC-2)
      djn    qDec             , {qDec+2
      sne    qPtr+qX*qD       , qPtr+qX*qD+qD
      jmz.f  boot             , <qTab2

qDec    mul.b  *   2 ,  qPtr
qSkip   sne    *qTab1, @qPtr
        add.b   qTab2,  qPtr
qLoop   mov     qBmb , @qPtr
qPtr    mov     qBmb , }qX
        sub    #qStep, @qSkip
        djn     qLoop, #qTime
        jmp     boot , 0

        org     qGo
_______________________________________________________________________________
Errata

Ah.. the joys of writing.  Errata.  Thanks to all who pointed out the
errors, typos, and misleading code.  Here's the short list:

- After introducing the a-predecrement mode in the sne line of the decoder,
  I gave as the table tab1 this:

tab1    dat     foo,    A1              ; \ foo and bar must be preceded
        dat     bar,    A2              ; / by empty core.

  The 'tab1' label should be on the second dat line.

- Afterwards, whenever I repeated the code for Decoder (2) I wasn't
  really repeating it, because the SNE line of the decoder should have had
  an a-predecrement mode in it's a-field.  But it didn't, and neither did
  any of the later variations of the decoder in the text.

- Similarly, the .b modifier of the add line in some later decoder
  variations was missing.

*sigh*

Also, it was pointed out to me that many implementations of the qscan
contain a number of improvements that you may want to look out for.
I'd list them here but would probably have to write another errata for
the next issue, so I'll save myself the pain and rather not. :)
_______________________________________________________________________________
Questions?  Concerns?  Comments?  Complaints?  Mail them to people who care.
Beppe Bezzi <giuseppe.bezzi@galactica.it>, Philip Kendall <pak21@cam.ac.uk>,
Anton Marsden <anton@paradise.net.nz>, John Metcalf <grumpy3039@hotmail.com>
and Christian Schmidt <DrSchmidt007@aol.com>
© 2002-2005 corewar.info. Logo © C. Schmidt