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 5                                                               13/11/95
______________________________________________________________________________

Core_Warrior_ is a weekly newsletter promoting the game of corewar.  Emphasis
is placed on the most active hills--currently the '94 draft hill and the 
beginner hill.  Coverage will follow where ever the action is.  If you have 
no clue what I'm talking about then check out these five-star internet locals
for more information:

FAQs are available by anonymous FTP from rtfm.mit.edu as
pub/usenet/news.answers/games/corewar-faq.Z
FTP site is: ftp.csua.berkeley.edu /pub/corewar
Web pages are at:
http://www.stormking.com/~koth
http://www.ecst.csuchico.edu/~pizza/koth
http://pauillac.inria.fr/~doligez/corewar/
______________________________________________________________________________

Hi people,

this one is quick scanners week. We have two real scoops for you: Thermite,
n. 4 in hall of fame, and never published before, with comments of its
author, Robert Mcrae, and Phq by Maurizio Vittuari, second old warrior in 94
hill, also with author's comments.
Planar, our free lance columnist has a short hint, on equ behaviour, and a
call for volunteer.
We also have to report of great battles in 94 hill, after a couple of quiet
weeks, a p-space hint, and a lot more for you dear readers.
_____________________________________________________________________________
Tournament Time
(details at http://www.stormking.com/~koth/nsfcwt.html)

NSFCWT round 5 is over. Good news. Michael Constant joined our tournament
( better late than never :-)
There were 10 battles of 10-round round robins.

A turbo Pascal program generated the following parameters:

Battle Coresize-Processes
1.  12164-4245
2.  9414-5576
3.  13230-1033
4.  12016-72
5.  6280-1164
6.  13810-6126
7.  14599-9549
8.  2798-5242
9.  6483-1330
10 .8597-2180

The detailed scores are:

Battle 1.

  1   Simple Scissors         John K. Wilkinson      58  33   9 275
  2   Frontwards              Steven Morrell         49  30  21 253
  3   Perspire                Robert Macrae          44  23  33 248
  4   WT-Round5               P.Kline                47  35  18 240
  5   Mr Dumb                 Maurizio Vittuari      38  25  37 226
  6   black & white           Anders Ivner           41  33  25 224
  7   Rubber wall             Beppe Bezzi            30  17  53 214
  8   Rand-Man                Randy Graham           15  12  73 178
  9   A Quick Hack            Karl Lewin             16  16  68 174
 10   blah blah blah          M R Bremer             15  17  67 170
 11   Miss Careworn           Derek Ross             30  47  23 169
 12   Theme                   Michael Constant       13  15  71 167
 13   myImp                   Paulsson                8  30  62 129
 14   Multi-Stone             G. Eadon               12  84   4 60

Battle 2.

  1   Simple Scissors         John K. Wilkinson      57  29  13 278
  2   Frontwards              Steven Morrell         55  29  16 270
  3   WT-Round5               P.Kline                49  33  17 248
  4   Perspire                Robert Macrae          44  26  30 243
  5   Mr Dumb                 Maurizio Vittuari      40  25  35 232
  6   black & white           Anders Ivner           39  29  32 225
  7   Rubber wall             Beppe Bezzi            29  17  53 212
  8   blah blah blah          M R Bremer             23  13  65 199
  9   Theme                   Michael Constant       11  10  79 169
 10   A Quick Hack            Karl Lewin             13  16  71 164
 11   Miss Careworn           Derek Ross             28  49  23 161
 12   myImp                   Paulsson                9  25  66 138
 13   Rand-Man                Randy Graham            6  41  53 106
 14   Multi-Stone             G. Eadon               15  75   9 83

Battle 3.

  1   Simple Scissors         John K. Wilkinson      53  26  21 269
  2   Perspire                Robert Macrae          45  22  33 251
  3   Frontwards              Steven Morrell         50  35  15 248
  4   black & white           Anders Ivner           41  27  32 234
  5   WT-Round5               P.Kline                46  41  13 227
  6   Rubber wall             Beppe Bezzi            28  11  61 218
  7   Mr Dumb                 Maurizio Vittuari      28  20  52 204
  8   blah blah blah          M R Bremer             21  10  69 197
  9   Theme                   Michael Constant       12   7  81 175
 10   A Quick Hack            Karl Lewin             11  11  78 168
 11   Miss Careworn           Derek Ross             29  51  20 162
 12   Rand-Man                Randy Graham           11  23  66 150
 13   Multi-Stone             G. Eadon               16  65  19 101
 14   myImp                   Paulsson                0  45  55 83

Battle 4.

  1   Perspire                Robert Macrae          49  21  30 267
  2   Rubber wall             Beppe Bezzi            37   5  58 252
  3   Mr Dumb                 Maurizio Vittuari      43  21  35 248
  4   A Quick Hack            Karl Lewin             32   2  66 243
  5   blah blah blah          M R Bremer             34  13  53 233
  6   black & white           Anders Ivner           37  30  33 215
  7   Theme                   Michael Constant       27  15  59 208
  8   Rand-Man                Randy Graham           19   5  76 198
  9   Simple Scissors         John K. Wilkinson      37  52  11 182
 10   Frontwards              Steven Morrell         32  51  17 169
 11   myImp                   Paulsson               13  17  70 165
 12   WT-Round5               P.Kline                31  57  12 159
 13   Miss Careworn           Derek Ross             17  61  22 111
 14   Multi-Stone             G. Eadon               16  75   9 86

Battle 5.

  1   Frontwards              Steven Morrell         50  28  22 258
  2   Perspire                Robert Macrae          47  24  29 254
  3   WT-Round5               P.Kline                47  34  19 241
  4   black & white           Anders Ivner           39  28  33 226
  5   Simple Scissors         John K. Wilkinson      45  39  16 225
  6   blah blah blah          M R Bremer             25  10  65 211
  7   Rand-Man                Randy Graham           22  10  68 201
  8   Rubber wall             Beppe Bezzi            27  21  52 201
  9   Mr Dumb                 Maurizio Vittuari      29  25  46 198
 10   A Quick Hack            Karl Lewin             15  19  66 165
 11   Theme                   Michael Constant        9   8  83 164
 12   Miss Careworn           Derek Ross             23  55  23 136
 13   myImp                   Paulsson                9  27  65 136

Battle 6.

 14   Multi-Stone             G. Eadon               16  74  10 87
  1   Frontwards              Steven Morrell         57  23  21 286
  2   WT-Round5               P.Kline                51  27  23 262
  3   Simple Scissors         John K. Wilkinson      49  37  13 242
  4   black & white           Anders Ivner           45  29  27 241
  5   Perspire                Robert Macrae          36  25  39 221
  6   Mr Dumb                 Maurizio Vittuari      34  26  40 213
  7   Rubber wall             Beppe Bezzi            27  30  43 185
  8   blah blah blah          M R Bremer             19  17  65 181
  9   Theme                   Michael Constant       12   9  79 173
 10   Rand-Man                Randy Graham           15  17  69 169
 11   A Quick Hack            Karl Lewin             11  15  73 161
 12   myImp                   Paulsson               11  21  68 150
 13   Miss Careworn           Derek Ross             23  53  23 140
 14   Multi-Stone             G. Eadon               17  77   6 84

Battle 7.

  1   Simple Scissors         John K. Wilkinson      63  29   7 296
  2   Frontwards              Steven Morrell         55  24  21 278
  3   Perspire                Robert Macrae          40  27  33 229
  4   WT-Round5               P.Kline                41  33  26 225
  5   black & white           Anders Ivner           39  31  29 221
  6   Rubber wall             Beppe Bezzi            28  11  61 217
  7   blah blah blah          M R Bremer             18  13  69 184
  8   Mr Dumb                 Maurizio Vittuari      25  30  45 179
  9   Theme                   Michael Constant       15  15  70 171
 10   Miss Careworn           Derek Ross             28  45  27 166
 11   A Quick Hack            Karl Lewin             14  20  66 162
 12   Rand-Man                Randy Graham           11  17  72 156
 13   myImp                   Paulsson                5  21  75 133
 14   Multi-Stone             G. Eadon               17  80   3 80

Battle 8.

  1   Frontwards              Steven Morrell         65  23  13 310
  2   black & white           Anders Ivner           46  21  33 256
  3   WT-Round5               P.Kline                49  29  22 255
  4   Perspire                Robert Macrae          38  29  33 221
  5   Simple Scissors         John K. Wilkinson      43  42  15 217
  6   Rubber wall             Beppe Bezzi            31  22  47 211
  7   blah blah blah          M R Bremer             25  15  59 203
  8   A Quick Hack            Karl Lewin             18  11  71 187
  9   Miss Careworn           Derek Ross             35  45  21 187
 10   Mr Dumb                 Maurizio Vittuari      21  27  52 171
 11   Theme                   Michael Constant       10  23  67 145
 12   Rand-Man                Randy Graham           10  26  64 141
 13   myImp                   Paulsson                7  23  70 138

Battle 9.

 14   Multi-Stone             G. Eadon               16  79   5 80
  1   Frontwards              Steven Morrell         54  31  15 266
  2   WT-Round5               P.Kline                51  32  17 254
  3   Mr Dumb                 Maurizio Vittuari      34  17  49 227
  4   Simple Scissors         John K. Wilkinson      44  42  14 219
  5   blah blah blah          M R Bremer             25   9  67 211
  6   Perspire                Robert Macrae          36  33  31 209
  7   Rubber wall             Beppe Bezzi            25  15  59 203
  8   black & white           Anders Ivner           35  35  30 201
  9   Theme                   Michael Constant       15   5  79 188
 10   A Quick Hack            Karl Lewin             15  14  71 175
 11   Miss Careworn           Derek Ross             26  49  25 155
 12   Rand-Man                Randy Graham            8  21  71 143
 13   myImp                   Paulsson                9  23  69 142
 14   Multi-Stone             G. Eadon               20  72   8 102

Battle 10.

  1   Simple Scissors         John K. Wilkinson      57  25  17 284
  2   WT-Round5               P.Kline                49  33  18 249
  3   black & white           Anders Ivner           45  28  27 242
  4   Frontwards              Steven Morrell         47  34  19 239
  5   Mr Dumb                 Maurizio Vittuari      41  23  35 239
  6   Perspire                Robert Macrae          37  28  35 218
  7   blah blah blah          M R Bremer             21   9  71 199
  8   Rubber wall             Beppe Bezzi            21  18  61 187
  9   A Quick Hack            Karl Lewin             15  13  73 175
 10   Theme                   Michael Constant       13  11  77 172
 11   myImp                   Paulsson                9  23  68 144
 12   Rand-Man                Randy Graham            8  23  69 140
 13   Miss Careworn           Derek Ross             20  52  28 132
 14   Multi-Stone             G. Eadon               15  79   5 77


Here are the total scores of the 10 battles:

Name			Scores

G. Eadon           	840
Paulsson           	1358
Derek Ross         	1519
Randy Graham       	1582
Michael Constant	1732
Karl Lewin         	1774
M R Bremer         	1988
Beppe Bezzi        	2100
Maurizio Vittuari  	2137
Anders Ivner       	2285
P.Kline            	2360
Robert Macrae      	2361
John K. Wilkinson  	2487
Steven Morrell     	2577


The overall rank after round 5:

Name			1	2	3	4	5	total

Steven Morrell     	5	10	9	13	14	51
P.Kline            	7.5	9	7	11	11	45.5
Paulsson           	7.5	11	11	9	2	40.5
Beppe Bezzi        	7	7	13	2	8	37
John K. Wilkinson  	4	6	12	-       13	35
Maurizio Vittuari  	6.5	5	6	3	9	29.5
Anders Ivner       	5.5	8	4	  -     10	27.5
M R Bremer         	7	4	3.6	5	7	26.6
Robert Macrae      	-   	 -  	  -  	12	12	24
Randy Graham       	-   	 -  	8	10	4	22
Karl Lewin         	-   	 -  	10	4	6	20
Derek Ross         	3.5	3	3.3	7	3	19.8
G. Eadon           	1.5	2	5	6	1	15.5
Kurt Franke        	-   	 -  	  -  	8	 -	8
Michael Constant	-	 -	 -	 -	5	5
Anders Scholl      	-   	1	2	1	 -	4
John Lewis         	-   	 -  	3	  -      -	3
Calvin Loh         	-   	 -  	1	  -      -	1

Paulsson, previous leader, had a flop in this round, losing the head. Now
Steven Morrell is the new leader with 5.5 points over Paul Kline, that seems
the only one able to contend him first place, and more than 10 over other
contenders. The fight is open for third position, with three players in near
five points.
_____________________________________________________________________________
94 Hill - Standings

 #  %W/ %L/ %T                      Name               Author   Score     Age
 1  41/ 23/ 36                  La Bomba          Beppe Bezzi     158       8
 2  42/ 38/ 20                  Derision           M R Bremer     145       9
 3  43/ 44/ 13       Leprechaun on speed         Anders Ivner     141     165
 4  35/ 32/ 32                       Phq    Maurizio Vittuari     138     471
 5  35/ 32/ 33                 Torch t18              P.Kline     137     369
 6  37/ 38/ 25                endpoint .           M R Bremer     137      14
 7  40/ 43/ 17             Porch Swing +         Randy Graham     137      70
 8  37/ 39/ 24               myVamp v3.7             Paulsson     135     337
 9  33/ 32/ 35              Father & Son    Maurizio Vittuari     135      19
10  34/ 35/ 32           Thieves Like Us           M R Bremer     133      27
11  33/ 34/ 33              Son & Father    Maurizio Vittuari     132      20
12  30/ 28/ 41           Jack in the box          Beppe Bezzi     132     357
13  39/ 46/ 15         Leprechaun deluxe         Anders Ivner     132     274
14  26/ 20/ 54            Impfinity v3e7               Planar     132      34
15  39/ 47/ 14                Frontwards       Steven Morrell     131     304
16  18/  6/ 76            Chugging Along           Karl Lewin     130      54
17  34/ 38/ 28               Armory - A5            Wilkinson     130     508
18  28/ 29/ 43              .Brain Vamp.  B.Bezzi, M.Paulsson     128      71
19  38/ 48/ 15   Anti Die-Hard Bevo (3c)       John Wilkinson     127     174
20  29/ 30/ 42            nobody special              Schitzo     127       1

Revolution may be the theme word this week, the 94 hill has awaken after
some sleep. Bezzi's La Bomba exploded on the hill, taking strongly the head;
new Bremer's warrior in not worth Derision indeed: now and we have new n. 1
and n. 2
_____________________________________________________________________________

94 - What's new

 1  40/ 24/ 36                  La Bomba          Beppe Bezzi     156       1
 2  42/ 38/ 20                  Derision           M R Bremer     145       1
 5  34/ 28/ 38              Father & Son    Maurizio Vittuari     139       1
 7  37/ 38/ 24                endpoint .           M R Bremer     136       1
 9  34/ 33/ 33           Thieves Like Us           M R Bremer     135       1
 9  33/ 32/ 35              Son & Father    Maurizio Vittuari     133       1
20  29/ 30/ 42            nobody special              Schitzo     127       1

Just a few ;-) a new King, a new n. 2 some new entries in the middle.
Welcome back to Mike 'Schitzo' Nonemacher with his improved version of an
old King.
_____________________________________________________________________________
94 - What's no more


21  32/ 36/ 32               Tornado 1.8          Beppe Bezzi     129     203
21  34/ 43/ 23                  myZizzor             Paulsson     126      75
21  22/ 18/ 59                  paper01o          Beppe Bezzi     126      18

A veteran, Tornado 1.8, leaves us at 203 age :-( a younger but rather famous
warrior, myZizzor, the Die Hard killer, is out too.
_____________________________________________________________________________

What's old

17  34/ 38/ 28               Armory - A5            Wilkinson     130     508
 4  35/ 32/ 32                       Phq    Maurizio Vittuari     138     471
 5  35/ 32/ 33                 Torch t18              P.Kline     137     369
12  30/ 28/ 41           Jack in the box          Beppe Bezzi     132     357
 8  37/ 39/ 24               myVamp v3.7             Paulsson     135     337
15  39/ 47/ 14                Frontwards       Steven Morrell     131     304
13  39/ 46/ 15         Leprechaun deluxe         Anders Ivner     132     274

Armory passed age 500 and Frontwards 300, congratulations.
No new entry in the over 200, the only one went out at 203, see above.
Some veteran begins having problems; Torch and Phq keep positions, Jack in
the Box and myVamp lose a few places, Armory and Frontward begin to risks
being pushed off.
_____________________________________________________________________________

HALL OF FAME
* means the warrior is still running.

Pos    Name                  Author          Age     Strategy
 1  Iron Gate 1.5          Wayne Sheppard    926    CMP scanner
 2  Agony II               Stefan Strack     912    CMP scanner
 3  Blue Funk              Steven Morrell    869    Stone/ imp
 4  Thermite 1.0           Robert Macrae     802    Qscan -> bomber
 5  Blue Funk 3            Steven Morrell    766    Stone/ imp
 6  HeremScimitar          A.Ivner,P.Kline   666    Bomber
 7  B-Panama X             Steven Morrell    518    Stone/ replicator
 8  Armory - A5            Wilkinson         508 *  P-warrior
 9  Phq                    Maurizio Vittuari 471 *  Qscan -> replicator
10  NC 94                  Wayne Sheppard    387    Stone/ imp
11  Cannonade              P.Kline           382    Stone/ imp
12  Torch t17              P.Kline           378    Bomber
13  Torch t18              P.Kline           369 *  Bomber
14  Jack in the box        Beppe Bezzi       357 *  P-warrior
15  Lucky 3                Stefan Strack     355    Stone/ imp
16  Request v2.0           Brant D. Thomsen  347    Qvamp -> vampire
17  Dragon Spear           c w blue          346    CMP scanner
18  myVamp v3.7            Paulsson          337 *  Vampire
19  juliet storm           M R Bremer        333    Stone/ imp
20  TimeScape (1.0)        J. Pohjalainen    322    Replicator

my Vamp enters the elite, pushing Rave off. Torch and Jack gain a few
positions. Armory is now very near B-Panama X.
_____________________________________________________________________________

Beginner's Hill standings

 #  %W/ %L/ %T                      Name               Author   Score     Age
 1  41/ 29/ 30                Lurker 1.1          Kurt Franke     152      36
 2  30/ 12/ 58              juliet storm           M R Bremer     147      75
 3  37/ 34/ 29                   Test-Fc             G. Eadon     140      61
 4  25/ 11/ 64                    Schizo            J. Doster     139       6
 5  27/ 16/ 57               Trapper 1.1          Kurt Franke     139      11
 6  39/ 41/ 20                      Look            J. Doster     137       3
 7  38/ 41/ 21                 Searching          Kurt Franke     136      42
 8  32/ 33/ 35              Hint Test v4           M R Bremer     132       7
 9  21/ 11/ 68           Impfinity v3c11               Planar     131      18
10  16/  8/ 75                 Sheet 1.0            J. Doster     124      16
11  17/  9/ 74                    Paper8             G. Eadon     124      37
12  35/ 47/ 18                 Heatseek2        Phil Whineray     123      53
13  16/ 11/ 72             RingWorm_v2.4           Calvin Loh     122       4
14  32/ 45/ 24                Recon V7.0         A. Nevermind     119       1
15  12/  6/ 81              Impfinity v1               Planar     118      50
16  15/ 15/ 70             P_Banzai_v2.1           Calvin Loh     114       5
17  12/ 13/ 75             RingWorm_v1.0           Calvin Loh     112      22
18  11/ 11/ 78             RingWorm_v1.4           Calvin Loh     111      20
19  14/ 19/ 66              Paper Dragon          Kurt Franke     109      32
20  12/ 16/ 72             P_Banzai_v1.2           Calvin Loh     109      24

Not too much movement here; less than 10 new warriors. I cannot say more
because I haven't got my test warrior's results.
_____________________________________________________________________________

The hint

P-space

Hi, 
this time we'll speak of p-space, the last tool, implemented by pmars08,
that allows our warrior to change strategy according to the history of the
match.
P-space is a protected area of memory, i.e. every warrior has its own
p-space and cannot read or write opponent's one. P-space hold but values,
not whole instructions, and is accessed by two specific instructions LDP and
STP load and store Pspace.
At the beginning of every round p-space cell 0 holds the result of previous
round, -1 at the very beginning, others cells hold the value they had at the
end of previous round, 0 at the start of the match. The value is 0 if we
lose, and the number of alive warriors if we survive; in standard one
against one matches those values are 1 for the win and 2 for the tie.

Warriors using p-space are called p-warriors or p-switchers; they store in a
location of p-space informations on the strategy they are using, at the end
of the round they evaluate the result of prvious round and, according to it
and, sometimes, the result of others rounds, continue with current strategy
or change to another, in the hope of doing better. In practice, if you are a
general, planning long term strategies, the switcher is your colonel,
deciding on battlefield what to use against your opponent.
It's important to say that even the best switching routine is worthless if
you don't have sound combat routines; if all you components lose against
your enemy, the mix will lose too, sometimes even worst because you lose
some time at the beginning to pplan the round, and to boot components away
from the big warrior body. 
P-space is a tool for intermediate players, not for beginners; until you
don't have at least two average level different warriors, a stone and a
paper for example, you cannot get anyhing good from it.

Now let's see how to assemble a p-warrior; first we need good components,
able to score points against different kind of enemies; we have them:
Paper01, to score against enemy bombers, juliet storm, to kill enemy
scanners; against enemy paper we are not defenceless, a paper usually cannot
beat another paper, so we should score:
Well against bombers, thanks Paper01
Well against scanners, thanks juliet
Ties against replicators, thanks Paper01.

Once chosen our hands, we have to assemble the brain; unless you want to do
something very complex, the switcher is not a difficult thing to do. Let's
give a look at a very simple one, and BTW successful, the switcher of Jack
in the Box, for three main reasons: it's one of my warriors, is doing well,
is the only one published :-)
Jack's has two components, a very heavy replicator, four times Paper01, and
a very fast bomber, Tornado. 
Its strategy is simple: the replicator scores lots of points against enemy
bombers but, because of the size, is rather vulnerable to scanners; well if
we are winning or tieing all right, we continue with the same strategy; if a
bad scanners happens to kill the paper, BOOH, Tornado pop up and with its
high speed and colored bombs kill him.
Here it's, very simple indeed.

        _RES    equ 0           ;here pmars loads results
        _STR    equ 1           ;here I store my strategy 

res     ldp.ab  _RES,   #0      ;load result last match
str     ldp.a   _STR,   str1    ;load strategy in use
	sne.ab  #0,     res     ;check result, win or tie OK
lost    add.a   #1,     str1    ;lost change
        mod.a   #2,     str1    ;secure jump     
win     stp.ab  str1,   _STR    ;save strategy
str1    jmp     @0,     juliet
        dat     0,      paper

We load in res.b the result of last match, in str1.a the strategy we used,
then we compare res to 0, if it's zero we add one to the strategy, if it's
different, tie or win, we don't. The mod instruction assure us to have a
value of 0 or 1.
At last we save new strategy for the round, and we jump at bomber or paper,
according to str1.a 
In 7 cycles we have finished, so even a Qscan has hard times to hang on.
Now the code, nothing more than taking the waariors, the switcher an putting
all together.

Last note, near to forget it, P-space has a 'dark side', brainwashing.
You cannot access your opponent p-space, but if you mage to force your
opponent, with a vampire attack, to execute these lines of code, or
something similar:

bwash   spl     0,>1                  
        stp.ab  #0,#0 
        jmp     -2,{-1
(usually this code is together with others spl and a core clear)

its p-space will soon fill of garbish and it's rather difficult that, in the
following round, its switcher will found what it needs to make a correct
decision. So, when you make your switcher, don't forget to think at what
will happens if something goes wrong in your p-space, and, _most_important_,
never forget to mod you STR value before executing the jump.

        mod     #2, 1
str     jmp     @0, paper       ;a field holds strategy
        dat     0,  juliet

If you forget it, may happens your warrior will have to execute something like

str     jmp     @1234,paper

and you will score something like 0/249/1 :-(

Here is the code. I submitted the warrior at both -94 and beginners hill, if
you have any question, or you are interested in results, mail me <bezzi@iol.it>
------------------------------
;redcode-b quiet
;name juliet and paper
;author M R Bremer, B. Bezzi
;strategy p-warrior for C.W. n.5 hint
;strategy switches juliet storm and Paper01
;kill juliet and paper
;assert CORESIZE == 8000

ptr     EQU 	-1333
dest0   equ     2200
dest1   equ     3740
dest2   equ     -1278   
range   equ     933

        RES    	equ 0           ;here pmars loads results
        STR    	equ 1           ;here I store my strategy 

imp_sz  equ     2667

org 	start

gate    dat <-445, <-446
s       spl #445, <-445
	spl #0, <-446
	mov {445-1, -445+2
	add -3, -1
	djn.f -2, <-2667-500
	mov 32, <-20
go      dat 	#0, 	#ptr
juliet	mov 	{-1, 	<-1
	mov 	{-2, 	<-2
	mov 	{-3, 	<-3
	mov 	{-4, 	<-4
	mov 	{-5, 	<-5
	mov 	{-6, 	<-6
	mov 	gate, 	ptr+24 
	mov 	gate,	ptr+24
	spl 	@go, 	<4000
	jmp 	boot, 	<4013
start

res     ldp.ab  RES,   	#0      ;load result last match
str     ldp.a   STR,   	str1    ;load strategy in use
	sne.ab  #0,     res     ;check result, win or tie OK
lost    add.a   #1,     str1    ;lost change
        mod.a   #2,     str1    ;secure jump     
win     stp.ab  str1,   _STR    ;save strategy
str1    jmp     @0,     juliet
        dat     0,      paper



paper
	spl     1,      <300    ;\
	spl     1,      <400    ;-> generate 8 consecutive processes
	spl     1,      <500  

silk    spl     @0,     {dest0
	mov.i   }-1,    >-1 
silk1   spl     @0,     <dest1  ;split to new copy
	mov.i   }-1,    >-1     ;copy self to new location
	mov.i   bomba,  }range
	mov     {silk1, <silk2
silk2   jmp     @0,     >dest2
bomba   dat     <2667,  <1

for MAXLENGTH-CURLINE-9
	dat	0,0
rof

boot    spl     1      ,#0
	spl     1      ,#0
	spl     <0     ,#vector+1
	djn.a   @vector,#0

imp     mov.i   #0,imp_sz

	jmp     imp+imp_sz*7,imp+imp_sz*6   
	jmp     imp+imp_sz*5,imp+imp_sz*4   
	jmp     imp+imp_sz*3,imp+imp_sz*2   
vector  jmp     imp+imp_sz  ,imp

	end

______________________________________________________________________________
Planar's corner:

Next week, you'll get the sequel to my article about imp spirals.
Today, I have a short hint for beginners and a call for volunteers.

The short hint:
---------------
I have written the following program:

	;redcode
	foo     equ     1+2
		nop     foo*2

Giving it to pMARS, I get this load file:

	START  NOP.F  $     5, $     0

Hey !  What's going on here ?  If foo is 1+2 and the argument to NOP is
foo*2, then it must be 6, right ?  Wrong.  The argument is 1+2*2 = 5,
because EQU does a textual replacement of the label with its argument,
not a numerical evaluation of its argument (there is a good reason for
this).

The solution is the same as in the C language: use parentheses generously:

	foo     equ     (1+2)

Now the argument to NOP is (1+2)*2 and I'm happy.  Maybe this was the
reason why my warrior failed on the hill.  But then again, maybe not.


The call for volunteers:
------------------------
I have started updating the ICWS'94 draft standard.  My new version
includes the new addressing modes and opcodes we are all using every
day.  Who will add p-space into it ?  We have missed the '94 deadline
by a long time now, and I think it's time to turn the draft into a
standard (does the ICWS still exist, by the way ?)  Or at least the
draft should describe the language that we are using.

Before we start discussing read/write limits, Stefan asked that I post
a summary of all the good arguments against them, so I have to find
the postings of one and a half year ago (does anybody know where to
find an archive of recent postings to r.g.cw ?)  Please no flame war
before I declare the season open.

The new version of the ICWS'94 draft standard is available at
http://pauillac.inria.fr/~doligez/corewar/icws94.95

<Damien.Doligez@inria.fr>
______________________________________________________________________________
Extra Extra:
Thermite

With impeccable timing I re-arrive on the internet just as Thermite is 
knocked off the hill, appropriately enough by Michael Constant. I don't  
think I ever published the code, so here it is with explanations as 
accurate as the mists of time permit. I'm not really sure why it worked 
for so long, but I guess it was a lack of decisive weaknesses rather than 
any single strength. Maybe P-space even helped, making targets bigger...

Thermite was standard quickscan, followed by a Torch-like incendiary bomber. 
The quickscan was originally developed from Michael Constant's Sauron (94 
tournament) and ended up almost exactly like his Pyramid. I experimented with 
various warriors to follow the scanning stage: a vampire, Midge, sadly couldn't 
bite as fast as Silks could grow, and Queasy (4-word Mod-1 MOV <A,B bomber) was 
good against scanners but otherwise weak.

Then Paul Kline published Torch which looked too good not to steal:
fast incendiary bombing, and multi-process -- so tending to draw if 
damaged. The only constructive change I made removed the anti-scanner gaps  
from the code, to make it more resistant to Silk-type strip bombing. 
I called the result Phosphorus and it was modestly effective (somewhat 
less so than Torch :) but it proved a great partner to the quickscan. 

The Phosphorus code may appear puzzling if you don't know Torch. The key idea, 
is that the instructions in the loop are executed in _reverse_ order because 
the SPL #0 instruction keeps feeding new processes into the loop.


:(             No-one "hides" near large decoys any more...             :(



;redcode-94
;name Thermite 1.0
;kill Phosphorus
;author Robert Macrae
;strategy  Quick-scan -> incendiary bomber.
;assert CORESIZE == 8000

; Since I don't launch phosphorus, vulnerable to carpet bombers. May
; pay to put it at start? I should make better use of DJN stream 
; (nascent). Either use <, or else start it somewhere which gets bombed
; by mov fairly quickly. What happens if I fall through early, due to
; DAT 1,1s? Should check this doesn't hurt...
 
SPC     equ 7700            ; (CORESIZE-MAXLENGTH-MINDISTANCE*2) 
STP1     equ 81              ; (SPC / (RAM/2) / 2)              
Lookat  equ look+237+8*(qscan-1)*STP1                        

; First scan at 237; last at -67?

traptr  dat     #0,     #trap
bite    jmp     @traptr,    0         ; Vampire bite. 

; Lots of pointers to these, so keep them away from trap!

look
qscan   for     6  
	sne.i   Lookat+0*STP1, Lookat+2*STP1
	seq.i   Lookat+4*STP1, Lookat+6*STP1
	mov.ab  #Lookat-bite-2*STP1, @bite
	rof

	jmn     test+1, bite   ; Save a few cycles

qscan   for     6  
	sne.i   Lookat+48*STP1, Lookat+50*STP1
	seq.i   Lookat+52*STP1, Lookat+54*STP1
	mov.ab  #Lookat-bite+46*STP1, @bite
	rof

	jmn     test+1, bite   ; Save a few cycles

qscan   for     6  
	sne.i   Lookat+1*STP1, Lookat+3*STP1
	seq.i   Lookat+5*STP1, Lookat+7*STP1
	mov.ab  #Lookat-bite-STP1, @bite
	rof

	jmn     test+1, bite   ; Save a few cycles

qscan   for     6   ; Should be 7 if I had space...  
	sne.i   Lookat+49*STP1, Lookat+51*STP1
	seq.i   Lookat+53*STP1, Lookat+55*STP1
	mov.ab  #Lookat-bite+47*STP1, @bite
	rof

; Intention is to place points evenly through the target area.

test    jmz.b   blind,  bite            ; if no address stored, no hit.
	add     #STP1*2, bite            ; Smaller than pyramid, as fast.
	jmz.f   -1,     @bite           ; find nonzero element.

	mov     spb,    @bite           ; Quick pre-bomb...

	add     #49,    bite            ; aim 51 past the hit
attack  sub.ba  bite,   bite            ; bite(b) contains target-bite
loop    mov     bite,   @bite           ; (a) contains the bite addr.
	add.f   step,   bite
	djn     loop,   #24             ; 6 spacing => 72 cycles...


; Incendiary bomber based on Phosphorus 1.0 (from Torch).

bstp     equ    155       ; Mod 5, as too big for mod 4 to miss!
gap      equ    15        ; Gap between mov and spl.
offset   equ    130       ; Chosen with step and gap to give long bombing run.
count    equ    1500

blind
spb      spl    #0,         <-gap+1    ; spl half of the incendiary
	 add    #bstp,      1                 
	 mov    spb,        @tgt-offset ; Gives longest run, given gap & step.
	 mov    mvb,        @-1                
tgt      djn.f  -3,         >300       ; gets bombed with spl to start clear
	 mov    ccb,        >spb-1     ; Uses copied mvb for CC.
	 djn.f  -1,         <spb-18    ; Aids clear.
mvb      mov    gap,        >gap       ; mov half of the incendiary
ccb      dat    0,          10         ; Core Clear.

; Bit worried about having trap so close to my code...
	
trap    spl     0,      >-200         ; Lackadaisical attempt at gates.     
	spl     -1,     >-200+2667    ; Each increments many times between
	jmp     -2,     >-200+2*2667  ; imp steps, but then the whole imp
				      ; moves! I only blow away rings...

step    dat     #6,     #-6           ; QS step size. Up from 5 for speed.

	end     look
 

(Editor note: I had to change it a little, because Robert used STP as a
label, and now it's not allowed being it an opcode. Just hope I didn't
introduce bugs; I tested it and all seems OK. - B.B.)
______________________________________________________________________________
Extra Extra Extra:
Phq

Well! I have received lots of requests about Phq so I have decided to publish
it... (in other words CoreWarrior' staff has payed me enough ! ;-)
Phq is one of my first programs written in 94 standard (I have started
redcoding with the 86 standard...)
First of all two words about the name...
Phq recalls a formula of quantum mech: the original name had been
Emc2 (reference to 2c initial qscan) but Emc2 was also the name of another my
QScan-->Stone warrior that never worked very fine...
When I began making Phq, another program behaved very well:
Marcia Trionfale of our friend Beppe Bezzi; so I decided that my warrior
should contain a paper module!  
At those times most of the programs on the hill reached the limit of 100
istructions, this made me choose for the initial QScan pass.
The initial QScan is also very useful to solve (without any PSpace routines)
the problem of papers in gaining points during self fighting: 
QScan makes Phq able to kill itself in self fighting about 83% times. 
So I took the decision: my program will have to be a Qscan --> Paper !
Well! At this point I had to decide what could I do if QScan found an enemy,
or simple a decoy :(  !
The first attempt was to bomb the neighborhood of the cell differing from 
dat.f 0,0 (blank) with simple dat bombs, using a series of "mov bomb,<ptr"
istructions.
The problem is finding the size of the neighborhood.
I had obtained just slight better results using incendiary bombing.
I'd have liked to use spl 0 bombs but this wasn't possible for after bombing
I had to start with paper, and a paper isn't the best to kill lots of
processes executing a "spl 0  jmp -1" loop (or similar)!
Maybe I could have tried some vamp bombing, but I didn't do this...
I choosed to copy some suicide 3-instr core-clear routines "around", hoping
that the enemy executes one of them!
This solution was quite good: if even only one enemy task executes this
3-instr code it may kill other eventually (near) enemy tasks; note that its
bombing is harmless against my paper!
An interesting question is: ...and what about against Pspace programs?  
I'm mainly a paper and if the enemy switches on a scanner module, it's a
slaughter for me! :(
So I'd liked to have some brainwashing routines: I added to my core-clear a
brainwashing stp line (who fills enemy PSpace with non-sense values).
Well! This program worked quite fine but another little change made it
even better!
After bombing my initial strategy was simple to jump to paper routines...
...and what about using a spl to have in any case a task who executes my
core-clear?
Well! I added this spl line and results were 3 points more then previous
version!
I'm not sure why this works better...
maybe because I bomb more wide around the non-blank cell and sometimes I
reach the enemy before the paper itself kills my own task.
Note that I'm brainwashing myself! (as you can read in the initial strategy
line;-), but this is unrelevant 'cos I don't use PSpace in "active mode",
meaning with "active mode" that I don't use PSpace for switching.
That's all!
What?
The program?
Yeah! Of course! Here you are!
(Hoping that Phq will reach at least Thermite in old scored programs ;-)
Note that it's quite full of bugs ;-)
I leave to find them out, to my "25 readers" as exercise (as my prof. of
geometry always said...)

For any questions, flaming etc. your mail is welcome!
Mail to pan0178.iperbole.bologna.it

-----------------------     
;redcode-94
;author Maurizio Vittuari
;name Phq
;assert CORESIZE==8000
;strategy New version! This one likes brainwashes...

step1	equ	3743	; unoptimized replicator costants
step2	equ 	1567	; see CoreWarrior issue 3
step3	equ	1349


;	****** QSCAN ROUTINES ******

start
s1 for 4
	sne start+400*s1,start+400*s1+100
	seq start+400*s1+200,start+400*s1+300
	mov #start+400*s1-found,found
rof
	jmn which,found
s2 for 4
	sne start+400*(4+s2),start+400*(4+s2)+100
	seq start+400*(4+s2)+200,start+400*(4+s2)+300
	mov #start+400*(4+s2)-found,found
rof
	jmn which,found
s3 for 4
	sne start+400*(s3+8),start+400*(s3+8)+100
	seq start+400*(s3+8)+200,start+400*(s3+8)+300
	mov #start+400*(s3+8)-found,found
rof
	jmn which,found
s4 for 4
	sne start+400*(s4+12),start+400*(s4+12)+100
	seq start+400*(s4+12)+200,start+400*(s4+12)+300
	mov #start+400*(s4+12)-found,found
rof

; just missed a line...	:(

s5 for 3
	sne start+400*(s5+16),start+400*(s5+16)+100
	seq start+400*(s5+16)+200,start+400*(s5+16)+300
	mov #start+400*(s5+16)-found-100,found
rof

found	jmz rabbit,#0
	add #100,-1
which	jmz -1,@found
	add #10,found
for 4				; bombing enemy
	mov m3,<found
	mov m2,<found
	mov mp,<found
	mov m1,<found
rof
	spl @found,{100		; So... why not ?

;	****** REPLICATOR ******

rabbit	spl	1,	<200	;create 11 processes
	mov	-1,	0
	spl	1,	<300
	mov	-1,	0
s1	spl	step1,	#0
	mov.i	>-1,	}-1
	mov.i	bomb,	}1942
s2	spl	step2,	#0
	mov.i	>-1,	}-1
	mov.i	bomb,	}1842	;I've changed > with } so many times
	mov.i	bomb,	>1900	;that I can't remember if this version
	mov.i	bomb,	}2000	;is the one actually on the hill...
	mov.i	<s2,	<s3
s3	jmp 	@0,	}step3
bomb	dat	<2667,	<5334	;anti-imp bomb

;	****** BRAINWASHING CORE-CLEAR ******

m1	mov	m3,	{m3
mp	stp	<0,	#20	; brainwashing instruction
m2	djn.f	m1,	}m3+1	
m3	dat	}bomb,	<2667
end start 

_____________________________________________________________________________

For questions and congratulations mail me <bezzi@iol.it>, flame Myer
<bremermr@ecn.purdue.edu> or if you think it's of general interest post to
rec.games.corewar

Anyone with hints or warriors to publish is welcome.
© 2002-2005 corewar.info. Logo © C. Schmidt