Infinite Hills
For Beginners
First Steps
For Beginners
> Home > Tournaments > 1st ICPC

The 2nd International Corewar Programming Contest

This is a single round Corewar programming contest held by COREWAR.INFO.

Corewar is a programming game in which two or more battle programs (called "warriors") compete for the control of the "Memory Array Redcode Simulator" virtual computer ("MARS"). These warriors are written in an abstract assembly language called Redcode. The object of the game is to cause all processes of the opposing warrior to terminate, leaving the victorious program in sole possession of the machine.

And here are the winners of the 2ICPC

1st : inversed
2nd : Roy van Rijn
3rd : Dave Hillis

Details of the 2ICPC DynaHill can be found at:

Contest Rules

General Remarks
This is the tournament of The Grand Corewar Unification

It is the first time that warriors written for several different hills are able to meet in the same tournament on a single hill.

Furthermore, the entries won't only compete themself but will in addition compete against a huge set of warriors. That are no less than all warriors ever published which fits the rules of this tournament. That are >3800 pool warriors, including several unpublished warriors I wrote for test reasons.

Warriors for all hills with a coresize of 80 or 8000 can enter the tournament, namely:

Koth hills:
ICWS '88 Standard Hill
ICWS '94 Standard Hill
ICWS '94 NOP Hill

SAL hills:
Beginners' hill
Limited process hill
Nano hill

In addition the rules of the 1st International Corewar Programming Contest (1.ICPC) are included as well.

Entry Categories
The entries are devided into the following categories:

94draft warriors without the pspace instructions stp and ldp

94draft warriors containing the pspace instructions stp and ldp

88 warrior

LP warriors optimized for max. processes of 8 containing the pspace instructions stp and ldp

LP warriors optimized for max. processes of 8 without the pspace instructions stp and ldp

Warriors for the 1.ICPC rules without the pspace instructions stp and ldp

Warriors for the 1.ICPC rules containing the pspace instructions stp and ldp

Nano warriors

PS: Sorry for the inconsistencies in the naming. Everything was organic growing over the past 1.5 years.

Special Rules
All following special rules will give all entry categories almost equal chances to be on top of the DynaHill.

Special rules for max. process
The max. process -p setting depends on which categories battle each other.

Here is the matrix for the -p settings:

           94/PW/88   DS/DN    lp/ln     NW
 94/PW/88    High     Mid2     Mid1     High
 DS/DN       Mid2     Mid2     Low      Mid2
 lp/ln       Mid1     Low       Lp      Mid1
 NW          High     Mid2     Mid1     Low
High: -p randomly for every battle between 8000 and 2000
Mid2: -p randomly for every battle between 400 and 120
Mid1: -p randomly for every battle between 160 and 80
Low: -p randomly for every battle between 120 and 16
Lp: -p fixed for every battle at 8

Special rules for warrior lengths
The maximum length for the warriors is 200. That one for Nano warriors is 5

Special rules for '88 warriors
Compared to ICWS '94 the ICWS '88 instruction set is limited. To give them an equal chance '88 warriors will get therefor a special bonus.

- '88 warriors will get by default additionally 5-15% of the rounds as wins.
- '88 warriors will get additionally 5-15% more wins than they achieved in a battle.

Special rules for Nano warriors
Nano warriors fight each other in a coresize of 80 with the above mentioned max. process settings.

If Nano warriors battle a warrrior from a different category distinct numbers of copies of the Nano warrior are loaded into the coresize 8000 for a multi-warrior battle.
For half of the rounds 2 copies of the Nano warrior are loaded, for the other half 6 copies are loaded. (This gave so far the most promising results)

The Nano warrior wins if the coresize 8000 warrior is terminated. The coresize 8000 warrior wins if all Nano warriors in the multi-battle are terminated.

Further rules
- The predefined variable CORESIZE is allowed for all warriors to calculate constants. This might be useful especially for Nano warriors.

- The predifined variable CURLINE is allowed for all warriors to calculate constants.

- All other predefined variable are disallowed.

- All warriors submitted will be published at the end of the contest.

- All entries must run properly with exmars and pmars.

- It is disallowed to use one of the pool warriors as an entry. The md5 checksum of the compiled entries will be compared with that one for the pool warriors.

Running the Tournament

Further rules
For the tournament the hill program Corewar DynaHill v2.12 or higher will be used.

The Corewar DynaHill uses a different (dynamic) hill concept, which is quite similar to the ranking system used in Japanese professional sumo sport.

Every warrior fights 15 warriors on the hill. Depending on the result a victory or a defeat is declared. In case of a tie a victory is declared randomly. In case of 100% ties a defeat for both warriors is declared.

This means after fighting the 15 opponents the overall score can range between 15 victories (15 - 0) and 15 defeats (0 - 15). The higher the number of victories, the higher the warrior climbs up the hill for the next run. The higher the number of defeats, the further the warrior drops down the hill. No matter what the result is, it is most likely that on the next hill run the warriors have to face different opponents.

To limit the distance of two warriors fighting each other the DynaHill is divided into several hill segments. Warriors can fight only within each hill segment. The names of the hill segments are mostly taken from Sumo:

1. Makuuchi -> Top of the DynaHill
2. Juryo
3. Makushita
4. Sandanme -> Middle of the DynaHill
5. Jonidan
6. Jonokuchi
7. Maezumo -> Bottom of the DynaHill

Each hill segment contains 400 warriors. The Maezumo will contain together with the tournament entries slightly more than 400.

All entries will enter the DynaHill at the bottom (Maezumo) facing the weakest warriors of the hill. As higher they climb as stronger will be the opponents and depending on their strength they might be able to climb up to the top of the DynaHill or will 'hit the wall' somewhere inbetween.

How to win the tournament
All entries will enter the bottom of the fully populated DynaHill. After every hill run the ranking of the DynaHill will be recalculated depending on the number of victories for every of the warriors on the DynaHill and each of the entries will get points as following:

If N is the number of entries the highest ranked entry will get N points. The second highest will get N-1 points, the next N-2, and so on. That one with the lowest rank will get 1 point. If an entry achieves a perfect 15 - 0 victory (win all his fights) it will get additionally 2*N points.

The DynaHill will perform 50 hill runs. The entry who get the most points during this time is the winner of the tournament.

Contest Submission Guidelines

Submit your entries to: fizmo (at) corewar (.) info Format your submission as follows:
;redcode  <- define the entry category 
;name     <- name of your entry
;author   <- your name
;assert 1
;strategy <- if you like you can add some comments here
;evolver  <- if you use an evolver program please state
             here which one you was using
then add your program Here's a sample entry:
;name Dwarf
;author A. K. Dewdney
;assert 1
;strategy Throw DAT bombs around memory,
;strategy hitting every 4th memory cell.

bomb  DAT   #0
dwarf ADD   #4,    bomb
      MOV   bomb, @bomb
      JMP   dwarf
      END   dwarf
Every author can submit up to three entries, but only the best entry counts.

Top links for Corewar Newbies

The ICWS'94 draft (extended):

Clueless newbies should begin with Scott's Quick Core War Guide for a brief overview:

A very nicely written German tutorial can be found here:

If you're just starting to program in redcode you should download MARS, the Redcode virtual machine. Recommended are CoreWin for Windows:
or pMARS for virtually everything else.

Here is a Beginner's Guide to Redcode to learn the essentials of '94 Redcode programming:

The Corewar Bibliography is an ideal starting point for further research.

Also the Corewar Lexicon provides useful information:

If you like to dissect, study or play published warriors then check out Koenigstuhl:

Further interesting website are:

If you decided not to handcode your entry but use a evolver program then have a look here:


September 18, 2011

Happy coding

2002-2008 Logo C. Schmidt