April 18, 1994 Issue #6
______________________________________________________________________________
This newletter covers the current status of the ICWS '94 Draft hills,
and also attempts to keep up with the latest ideas in how the new standard
will affect corewars in general. I hope you enjoy it!
If you are unfamiliar with the '94 draft standard, you can learn more about
it by reading the FAQ for this newsgroup. In addition, the program pMARS
includes a highly recommended tutorial on the new standard. Feel free
to send me e-mail if you have any difficulty finding either of them, if you
need to have a corewar item mailed to you, or if you have any other questions.
The FAQ is available through anonymous FTP to rtfm.mit.edu, as
/pub/usenet/news.answers/games/corewar-faq.Z
______________________________________________________________________________
CHANGES and CORRECTIONS:
There have been several changes since the last issue of _The_'94_Warrior_
came off the electronic presses. With luck, I'll manage to get most of them.
The first big event is the addition of two (or three) new opcodes for
version 0.5 of pMARS. It was recently downloaded to soda.berkeley.edu
(in the pub/corewar/incoming directory). Even if you don't think you will
ever need to use SEQ, SNE, or NOP, there are a couple of bug fixes that make
it worth the effort to upgrade.
The another big event is the creation of a new hill server, "pizza". "Pizza"
is operated by Thomas Davies, and he's doing a great job at it! Most of the
programs residing at the "Intel KotH" and "stormking" have already managed to
migrate over, and there are several new programs on "pizza" as well. The
"pizza" hills eliminate the major complaint users had with the "stormking"
hills: you no longer need to wait a day or two to get back the results of a
warrior submission. (The process of submitting a warrior to a hill on "pizza"
is covered in the latest FAQ for the rec.games.corewar newsgroup. Send me
mail if you didn't receive a copy of it.)
Along with the creation of the "pizza" server came the passing of the Bill
Shubert's hill at Intel. Thanks, Bill, for the many years you have used your
resources to allow the rest of us to hone our corewars skills. The game has
improved greatly because of your efforts!
You'll also want to catch the first chapter of Steven Morrell's "MY FIRST
COREWAR BOOK". It's on soda.berkeley.edu in the pub/corewar/incoming
directory as "chapter1.Z". Even if Steven didn't mention my name in it and
he attended some school other than the University of Utah, I would still
recommend it. It's that good!
For those of you developing warriors in large core sizes, the upgraded version
of Optima I mentioned in the last issue is now available on soda. If you are
experimenting with different core sizes (like the small core on "pizza", this
program is a necessity.)
And, for those of you with a competitive streak, I would highly encourage you
to enter Stefan Strack's upcoming corewar tournament. In case you missed the
announcement, here it is again:
In the meantime, I am going to hold a double-elimination tournament with
weekly rounds, just like the summer and fall tourneys of last year
(soda.berkeley.edu:/pub/corewar/redcode/st93warriors.zip includes a rapport
of this kind of tourney).
Rules will alternate between '94 (coresize=8000) and '94x (coresize=55440)
hill specs. If there's demand, I'll also throw in a pure '88 round. If there
are enough participants, I'll divide them up into an A- and B-league
(verterans and beginners).
The submission deadline for round 1 is Friday, April 22nd. Rules are '94x
(big) hill specs, and you may use the new opcodes. Your opponent in round 1
will be chosen randomly.
And as though the fame was not enough incentive already, the tournament
winner will receive a free ICWS membership and subscription to the
newsletter for one year.
-Stefan (stst@vuse.vanderbilt.edu)
Just in case those prizes are not good enough for you, I will also throw in a
free one-year subscription to _The_'94_Warrior_ for the winner. Seriously
though, Stefan always does a great job with his tournaments, and I heartily
recommend you give this one a try.
______________________________________________________________________________
The ICWS '94 Draft Hill:
Core size: 8000 instrucitons
Max processes: 8000 per program
Duration: After 80,000 cycles, a tie is declared.
Max entry length: 100 instructions
The current ICWS '94 Draft hill:
# %W/ %L/ %T Name Author Score Age
1 45/ 20/ 34 Der Zweite Blitzkrieg - 9 Mike Nonemacher 170 13
2 47/ 31/ 21 Sauron v1.7 Michael Constant 163 3
3 42/ 30/ 28 Killer instinct Anders Ivner 154 64
4 46/ 41/ 13 Dragon Spear c w blue 151 63
5 36/ 22/ 42 Lucky 3 Stefan Strack 150 23
6 43/ 36/ 21 Request v2.0 Brant D. Thomsen 149 61
7 45/ 43/ 12 Iron Gate 1.5 Wayne Sheppard 148 7
8 31/ 17/ 53 Blue Funk Steven Morrell 145 30
9 33/ 21/ 46 Twimpede+/8000-E.2c Jay Han 144 17
10 32/ 21/ 47 Imperfection v3.1 Michael Constant 142 15
11 34/ 26/ 40 NC 94 Wayne Sheppard 142 43
12 31/ 24/ 44 Splash Jay Han 139 1
13 38/ 38/ 25 NTA 94 Wayne Sheppard 137 51
14 40/ 43/ 17 Test Stefan Strack 137 26
15 40/ 42/ 18 Sylvester v1.0 Brant D. Thomsen 137 60
16 38/ 41/ 22 Fast Food v2.1 Brant D. Thomsen 134 58
17 34/ 34/ 32 Match Stick c w blue 133 41
18 31/ 32/ 37 Little Flea v1.2 Michael Constant 129 5
19 38/ 49/ 13 Dagger v6.0 Michael Constant 126 67
20 32/ 45/ 23 Assassin v1.0 Michael Constant 119 20
For this issue, I was planning to post the results of both the "stormking" and
"pizza" '94 hills. However, as I haven't gotten back the results of the
queries I sent to "stormking" almost four days ago, I decided to simply make
a clean switch to pizza this month. Send any complaints to the editorial
board.
I believe most of the programs that are on the '94 draft hill on "stormking"
have made it over to "pizza". Next issue, after things have settled down a
little bit on the new hills, I will attempt to analyze what is happening.
______________________________________________________________________________
The ICWS '94 Draft Experimental Hill:
Core size: 55,440 instructions
Max processes: 10,000 per program
Duration: After 500,000 cycles, a tie is declared.
Max entry length: 200 instructions
The current ICWS '94 Experimental (Big) hill:
# %W/ %L/ %T Name Author Score Age
1 49/ 15/ 36 Variation G-1 Jay Han 182 1
2 47/ 15/ 38 Variation E-2.c Jay Han 178 13
3 44/ 16/ 39 Splash 1 Jay Han 172 2
4 45/ 22/ 32 Lucky 13 Stefan Strack 168 43
5 49/ 32/ 20 Request-55440 Brant D. Thomsen 165 37
6 35/ 18/ 47 Imperfection v2.4 Michael Constant 153 8
7 47/ 41/ 12 Rave B4 Stefan Strack 153 29
8 45/ 42/ 13 Virus Jay Han 148 3
9 44/ 43/ 13 bigproba nandor sieben 145 41
10 42/ 46/ 12 Scanalyzer-W Jay Han 138 4
11 42/ 46/ 13 Scanalyzer-V.3b Jay Han 138 11
12 35/ 33/ 32 Big Flea v1.1 Michael Constant 137 7
13 38/ 46/ 15 amoeba v82 Richard van der Brug 131 18
14 38/ 47/ 15 Dagger v8.0 Michael Constant 130 24
15 38/ 46/ 16 Sunburst 33 Jay Han 130 31
16 30/ 31/ 38 Nova-A.1b Jay 129 12
17 29/ 32/ 39 Skimp 127 Jay Han 127 30
18 34/ 42/ 23 IceCube 1.4 Richard van der Brug 126 17
19 32/ 40/ 28 Veeble Jr. T. H. Davies 125 27
20 36/ 51/ 13 Kill Imps!!! Steven Morrell 121 26
The comments for the other hill apply here as well.
______________________________________________________________________________
HINTS and HELPS:
For today's hint, I will be using the source code to "Request v2.0"
for the 55440 size '94 hill. "Request" is very similar to my earlier
"Distance" vampires (I know, I'm stuck in a rut ...) with the exception
that the fangs use indirect addressing instead of direct addressing to
send the processes to the pit. By using a two line piece of code that
contuously rewrites the reference value used by the fangs, I can "undo"
any damage caused by standard anti-vampire programs.
* * *
Writing code for a large coresize provides an interesting challenge.
Possibly the most frustrating thing about it is that it is hard to display
and analyze 55440 locations. I find that, more than ever, I am forced to
rely on other programs to help me generate the information I want for my
corewars warriors.
For instance, when I wanted to make the '94 version of my vampire "Request"
run in the 55440 coresize, I tried several things to make the process easier.
As you may have guessed by reading the last issue of _The_'94_Warrior_, one
of the first programs I used was "Optima" by Michael Constant.
This, however, was just the beginning. Take a look at the following "c" code:
/* Determine coverage with different RedCode spacing for bombers */
#include <stdio.h>
#include <stdlib.h>
#define WIDTH 80
int main(int argc, char *argv[])
{
long sp, coresize, first, step, lines = WIDTH+1, printed, count;
int i, core[WIDTH];
if (argc < 4 || argc > 5) {
printf("\nUsage: %s coresize step first [lines]\n", argv[0]);
return 0;
}
coresize = atol(argv[1]);
step = atol(argv[2]);
if(step < 0)
step += coresize;
first = atol(argv[3]);
if(argc > 4)
lines = atol(argv[4]);
for(i = 0; i < WIDTH; i++)
core[i] = 0;
printed = 0;
sp = first;
count = 0;
printf("%ld:\n", step);
do {
if(sp >= 0 && sp < WIDTH) {
core[sp] = 1;
for(i = 0; i < WIDTH; i++)
if(i == first)
printf("@");
else
printf("%c", core[i] ? '*' : ' ');
printed++;
}
sp += step;
sp %= coresize;
count++;
} while(sp != first && printed < lines);
printf("\nMod: %ld\n", coresize / count);
return 0;
}
This program simply takes an imaginary chunk of computer core with a given
starting point and step size, and plots how that piece of core will be hit
up as the bombing progresses. Then I was able to simply take the pieces of
request and fit them into the spaces that were hit latest.
(Since my computer screen is 80 columns wide, I simply used that size of
core. Feel free to change WIDTH as appropriate.) In the output, the "@"
indicates the very first location bombed (if it is in the range printed).
Of course, you can also make that the last location bombed by simply adding
one step value to your starting value.
Also, take a look at the bootstrapping code itself. By using the "FOR" macro,
and using the "SUB" statements in my bootstrapping code, it is trivial to
change the locations of the different parts of the vampire, because the
distances between them are automatically computed by the boot-strapping code
based on the number of "DAT" statements between the segments. I can even
change the order of the segments without touching my bootstrapping code; I
simply use the cut an paste tools in my editor to rearrange the segments as
I wanted them.
The end result: a competitive program that I have never run inside of a
size 55440 core. Is this a good way to go about it? I have no idea. It is,
however, an excellent example about how much trouble some people will go to
to avoid a little bit of work.
* * *
;redcode-94x
;name Request-55440
;author Brant D. Thomsen
;strategy '94 Vampire
;strategy The latest program in my "quest"
;strategy to yield less wins to anti-vampiric programs.
;strategy Submitted: @date@
step equ 9719
init equ (pit+1+step)
gate equ (jump-12)
decoy equ (gate-1+step)
FOR 132
dat #start*10, #1 ; Provide a large decoy.
ROF
start mov jump, <dist
sub #jump-adder-1, dist
mov adder, <dist
sub #adder-pit-5, dist
mov pit+4, <dist
mov pit+3, <dist
mov pit+2, <dist
mov pit+1, <dist
mov pit, <dist
sub #pit-vamp-4, dist
mov vamp+3, <dist
mov vamp+2, <dist
mov vamp+1, <dist
mov vamp, <dist
spl @dist, <10000 ; Start the vampire
sub #vamp-help-2, dist
mov help+1, <dist
mov help, <dist
spl @dist, <20000 ; Send 2 processes to "help" so that will
spl @dist, <30000 ; execute "MOV" once cycle.
sub #help-wimp-1, dist
mov wimp, <dist
spl @dist, <40000
sub #10000, dist ; Erase record of where boot-strapped.
dist dat #15501 ; Then kill the process.
; The following is the code for the program.
; Spacing (for DATs between segments) is computed automatically.
jump jmp @decoy-init, init
FOR 8
dat #start*10, #1
ROF
; Wimp is necessary so will still have a process when pit dies.
; Runs no risk of starvation since no SPL in it.
wimp jmp #0, <gate
FOR 3
dat #start*10, #1
ROF
pit mov @8, <gate-1
spl #0, <gate
spl -2, <gate
spl -2, <gate
djn.F pit, >adder-2
FOR 9
dat #start*10, #1
ROF
help mov #pit-decoy, decoy
jmp help, <gate
FOR 6
dat #start*10, #1
ROF
adder dat <-step, <step
FOR 3
dat #start*10, #1
ROF
vamp spl #0, <gate
move mov @0, @jump
add adder, @move
djn.F -2, <-step
end start
______________________________________________________________________________
Looking to the Future:
There promise to be some interesting times ahead for the '94 draft, the '94
hills, and _The_'94_Warrior_. With the advent of the "pizza" hills, I have
no doubt that the number and quality of warriors on the '94 hills will
increase at an unprecedented rate. (In fact, one could probably argue that
they already have.) Of course, this also means that those of you who have
been putting off experimenting around with the new standard no longer have an
excuse! (Well, not a _good_ excuse.)
If you have any comments or questions about the '94 hills or the '94
standard that you think might be of general interest, please let me know.
Good luck, and happy computing!
______________________________________________________________________________
Brant D. Thomsen, Editor Snail mail: 1197 East 6290 South
(bdthomse@peruvian.cs.utah.edu) Salt Lake City, UT 84121
University of Utah U.S.A.
--
Brant D. Thomsen Man will occasionally stumble over the truth,
(bdthomse@peruvian.cs.utah.edu) but most times he will pick himself up
University of Utah and carry on. - Winston Churchill
|