A paper is a self-replicating program which spawns off multiple copies of itself and executes them in parallel. Modern papers are normally small, resilient, score well against stones and lose to scanners. Papers are often paired with other components, for example paper/stone and paper/imp.

Looping Paper

Early self-replicating programs used a simple loop to copy themselves before splitting to the new copy. Looping papers are only effective against modern warriors in a limited process environment. The first looping paper won the International Core War Tournament for Chip Wendell in September 1986.

        step   equ 5620

paper   mov    #5,       #0
copy    mov    <paper,   {dest
        jmn    copy,     paper
        spl    >paper,   {-1277
dest    jmz    step,     *0

Silk Paper

A silk paper uses parallel processes to spawn a copy of itself without looping and splits to the new copy before it's actually been copied. The code for the new copy is placed just before it's executed. The heart of a silk paper is the SPL/MOV pair which splits and copies. The first silk paper was demonstrated by Juha Pohjalainen in August 1994.

        step1  equ 4832
        step2  equ 3416
        step3  equ 3600

        spl    2                  ; 6 parallel processes
        spl    1
        spl    1

papera  spl    @papera,  >step1
        mov    }papera,  >papera
paperb  spl    @paperb,  >step2
        mov    }paperb,  >paperb
        mov    {paperb,  <paperc
paperc  djn.f  @paperc,  >step3

Sunset Paper

A sunset-style paper copies itself using parallel processes and a split before copy technique similar to silk. When sunset overwrites an opponent its self check make it difficult for the opponent's processes to correctly execute sunset's code. The first example was published by David Moore in June 2003.

        step   equ 1092

        spl    1                  ; 4 parallel processes (must be even)
        spl    1

paper   spl    step,     {src
        mov    }src,     }paper
src     mov    *paper+4, }paper   ; must be exactly processes/2 lines after paper
        jmz.f  @paper+1, *src

Example Papers

Note Paper and FlyPaper 3.0 are examples of 88 style papers.

Hector 2 and Blizzard are pure silk papers.

TimeScape (1.0) is a silk paper that bombs with empty core.

Revenge of the Papers is a silk paper with anti-imp clear.

Phq, unrequited love, La Bomba and Barrage are silk papers with DAT bombs.

nPaper II , slime test 1.00 and The Art of CoreWar are silk papers with anti-imp MOV bombs.

Sputnik is an example of a paper with a satellite clear.

Further Reading

  1. Bailey, Steve. "Analysis of Silk Warriors." Steve's Guide for Beginners 13 (2 May 1996).
  2. Bezzi, Beppe. "Replicators (part 1)." Core Warrior 1 (16 Oct 1995).
  3. Bezzi, Beppe. "Replicators (part 2)." Core Warrior 3 (30 Oct 1995).
  4. Gutzeit, Jens. "Creating a Paper." Core Explorer 1 (16 Oct 2005).
  5. Hsu, Ting-Yu. "Creating a Competitive Paper." The '94 Warrior 11 (23 Jul 1994).
  6. Karpov, Peter. Paper Experiments 1. Usenet newsgroup rec.games.corewar, 24 Dec 2005.
  7. Karpov, Peter. Paper Experiments 2. Usenet newsgroup rec.games.corewar, 13 Jan 2006.
  8. Karpov, Peter. "Resonant Papers." CoreOps 2 (27 Jan 2020).
  9. Schmidt, Christian. "Replicators (part 3)." Core Warrior 60 (11 Jul 1997).
  10. Tomašev, Nenad. "Exploring Replicators." Core Explorer 1 (16 Oct 2005).
  11. Wangsaw, Mintardjo. "Paper Warriors." Intro to Art in '88: Paper — Stone — Scissors Trilogy KOTH.org, 1994.