• [94] Toxic

    From John Metcalf@21:1/5 to All on Fri Dec 17 16:35:56 2021
    Toxic is a paper/imp with resonant steps which scores pretty well on the
    94 / 94nop hills. An early version entered the hill in 9th place without
    the qscan. Adding a qscan pushed it up to 1st / 2nd place.

    Toxic was optimized against the top 50 of the 94nop-Koenigstuhl, using
    Randy to generate candidate warriors and MTS to benchmark them. Scanners
    like Pendulum and Recon 2 are most successful against Toxic with 60%+
    wins.

    The code is also available here (with the whitespace which is currently discarded by Google groups):

    * https://users.obs.carnegiescience.edu/birk/COREWAR/94/HILL/toxic.red

    * https://corewar.co.uk/toxic.htm

    There's more information about resonant steps in CoreOps issue 2:

    * http://inversed.ru/CoreWar/CoreOps_02.txt


    ;redcode-94nop
    ;name Toxic
    ;author John Metcalf
    ;strategy qscan -> paper/imp
    ;strategy resonant spiral-forming steps & silk-imps
    ;assert CORESIZE==8000

    org qscan

    qfac equ 2259 ; 3771 ; 1533
    qdec equ 2140 ; 6132 ; 2198

    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 toxin, 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 toxin, qb
    qtab2 dat qgap, qf

    for 57
    dat 0, 0
    rof

    fact equ 5573 ; 3044 ; 756 ; 3356
    step1 equ 4001-fact*5
    step2 equ fact*3
    step3 equ istep+1
    istep equ 2667 ; (CORESIZE+1)/3

    toxin spl 1, {200
    spl 1, {400
    spl 1, {600
    mov.i {papera, {pboot
    pboot spl *papera+4008, {800

    papera spl @0+8, {step1
    mov }papera, >papera
    paperb spl @0, }step2
    mov }paperb, >paperb
    paperc spl @0, }step3
    mov }paperc, >paperc
    mov.i #step2+4000,}-step2
    imp mov.i #1, istep

    end

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