• Starlink (satellite paper)

    From Roy van Rijn@21:1/5 to All on Fri Feb 11 02:41:41 2022
    After watching the livestream and learning about Hydra (which I had never seen before), I decided to make a warrior that does something similar.

    I ended up on the design and payload from Sputnik, but instead of having 4 processes I'm using a smaller/faster paper with just three processes.

    Sadly it isn't good enough for the current hill (which I'm not on :-(), but I thought it would be fun to share here. I probably need a new benchmark that has more modern warriors and looks a bit like the current hill.

    ;redcode-94nop quiet
    ;name Starlink
    ;author Roy van Rijn
    ;strategy qscan > satellite paper
    ;strategy idea from Sputnik
    ;strategy slightly faster paper
    ;assert 1

    pStep1 equ 5756
    pDiff equ 5349
    cDjn equ 1946
    pDjn equ 3584

    zero equ qbomb

    qtab3 equ qbomb
    qbomb dat >qoff , >qc2

    dat 0 , 0

    bPtr dat cGo , }qb1
    qtab2 spl 1 , }qb2 ; bootstrap
    mov.i -1 , #qb3

    mov.i }bPtr , >pEnd ; boot payload instead of paper

    pGo spl @0 , }pStep1 ; fast paper
    mov.i }-1 , >-1 ; 15 cycles and writes 9 lines
    mov.i }-2 , >-2 ; where Sputnik uses 16 cycles and writes 8 lines
    mov.i <1 , {1
    pEnd djn.f pStep1 + pDiff , {pDiff - 3
    dat 0 , 0 ;luggage

    for 5
    dat 0 , 0
    rof

    dat zero-1 , qa1
    qtab1 dat zero-1 , qa2

    dat 0 , 0
    dat 0 , 0

    cGo spl #pDjn , <2 ; small 3-line payload like Sputnik
    mov.i #1 , <1
    djn.b -2 , #cDjn

    for 41
    dat 0 , 0
    rof

    qc2 equ ((1+(qtab3-qptr)*qy)%CORESIZE)
    qb1 equ ((1+(qtab2-1-qptr)*qy)%CORESIZE)
    qb2 equ ((1+(qtab2-qptr)*qy)%CORESIZE)
    qb3 equ ((1+(qtab2+1-qptr)*qy)%CORESIZE)
    qa1 equ ((1+(qtab1-1-qptr)*qy)%CORESIZE)
    qa2 equ ((1+(qtab1-qptr)*qy)%CORESIZE)

    qy equ 5931
    qz equ 3972

    ;q0 mutation
    qgo

    sne qptr+qz*qa1 , qptr+qz*qa1+qb2
    seq <(qtab1-1) , qptr+qz*(qa1-1)+qb2
    djn.a q0 , {q0
    sne qptr+qz*qc2 , qptr+qz*qc2+qb2
    seq <qtab3 , qptr+qz*(qc2-1)+qb2
    jmp q0 , }q0
    sne qptr+qz*qa2 , qptr+qz*qa2+qb2
    seq <qtab1 , qptr+qz*(qa2-1)+qb2
    jmp q0 , {q0
    ;q1 mutation
    sne qptr+qz*qb3 , qptr+qz*qb3+qb3
    seq <(qtab2+1) , qptr+qz*(qb3-1)+(qb3-1)
    jmp q0 , }q1
    sne qptr+qz*qb1 , qptr+qz*qb1+qb1
    seq <(qtab2-1) , qptr+qz*(qb1-1)+(qb1-1)
    jmp q0 , {q1
    sne qptr+qz*qb2 , qptr+qz*qb2+qb2
    seq <qtab2 , qptr+qz*(qb2-1)+(qb2-1)
    djn.f q0 , <6907

    ;qz mutation
    seq >qptr , qptr+qz+(qb2-1)
    jmp q2 , <qptr
    ;q0 mutation
    seq qptr+(qz+1)*(qc2-1),qptr+(qz+1)*(qc2-1)+(qb2-1)
    jmp q0 , }q0
    seq qptr+(qz+1)*(qa2-1),qptr+(qz+1)*(qa2-1)+(qb2-1)
    jmp q0 , {q0
    seq qptr+(qz+1)*(qa1-1),qptr+(qz+1)*(qa1-1)+(qb2-1)
    djn.a q0 , {q0
    jmz.f qtab2 , qptr+(qz+1)*(qb2-1)+(qb2-1)

    qoff equ -87
    qstep equ -7
    qtime equ 19

    q0 mul.b *2 , qptr
    q2 sne {qtab1 , @qptr
    q1 add.b qtab2 , qptr
    mov qtab3 , @qptr
    qptr mov qbomb , }qz
    sub #qstep , qptr
    djn -3 , #qtime
    jmp qtab2 , <-100
    end qgo

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)