Corewar

Full Version: [94nop] Sputnik
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Here's the current king of the 94nop hill - a paper with satellite clear.  Sputnik was created as a simple example of the satellite technique so I'm surprised it scored so well.

http://corewar.co.uk/sputnik.htm


Code:
;redcode-94nop
;name Sputnik
;author John Metcalf
;strategy qscan -> paper with satellite
;assert CORESIZE==8000

       org    qscan

       step   equ 3416
       dist   equ 1234
       bpos   equ satel+4-dist+1

sputnik spl    1,        <1000    ; 4 parallel processes
       spl    1,        <2000

       mov    <boot,    {boot
boot    jmp    bpos,     paper+4

paper   spl    step
       mov    >paper,   }paper
       mov    <launch,  {launch
launch  djn.f  step+dist,{dist

satel   spl    #100,     <2
       mov.i  #1,       <1
       djn    satel,    #1000

       for    59
       dat    0,        0
       rof

       qfac   equ 369
       qdec   equ 3730 ; qdec = (1+qfac^-1) mod 8000

       qa     equ (qfac*(qtab0-1-qptr)+1)
       qb     equ (qfac*(qtab0-qptr)+1)
       qc     equ (qfac*(qtab1-1-qptr)+1)
       qd     equ (qfac*(qtab1-qptr)+1)
       qe     equ (qfac*(qtab1+1-qptr)+1)
       qf     equ (qfac*(qtab2-qptr)+1)

       qtime  equ 18
       qstep  equ -7
       qgap   equ 87

qdecode mul.b  *q1,          qptr
q0      sne    <qtab0,       @qptr
q1      add.b  qtab1,        qptr
q2      mov    qtab2,        @qptr
qptr    mov    qtab2,        *qdec
       add    #qstep,       qptr
       djn    q2,           #qtime
       jmp    sputnik,      qc
qtab1   dat    4000,         qd
       dat    4000,         qe

qscan   sne    qptr+qdec*qe, qptr+qdec*qe+qe
       seq    <qtab1+1,     qptr+qdec*(qe-1)+qe-1
       jmp    qdecode,      }q1
       sne    qptr+qdec*qb, qptr+qdec*qb+qd
       seq    <qtab0,       qptr+qdec*(qb-1)+qd
       jmp    qdecode,      {qdecode
       sne    qptr+qdec*qa, qptr+qdec*qa+qd
       seq    <qtab0-1,     qptr+qdec*(qa-1)+qd
       djn.a  qdecode,      {qdecode
       sne    qptr+qdec*qf, qptr+qdec*qf+qd
       seq    <qtab2,       qptr+qdec*(qf-1)+qd
       jmp    qdecode,      }qdecode
       sne    qptr+qdec*qc, qptr+qdec*qc+qc
       seq    <qtab1-1,     qptr+qdec*(qc-1)+qc-1
       jmp    qdecode,      {q1
       sne    qptr+qdec*qd, qptr+qdec*qd+qd
       seq    <qtab1,       qptr+qdec*(qd-1)+qd-1
       jmp    qdecode,      qa
qtab0   jmp    sputnik,      qb
qtab2   dat    qgap,         qf