• [Tiny] Warrior 9-pack

    From inversed@21:1/5 to All on Sun May 22 11:24:05 2022
    I'm duplicating this post on Reddit because Google Groups like to destroy the formatting:
    https://www.reddit.com/r/corewar/comments/uvgr5i/tiny_warrior_9pack/

    DIMACHAERUS 3

    An updated bishot with SPL/DIV clear. The performance uplift from quickbombing is massive (around 10 points). This version even manages to beat Resinoid somehow.

    ;redcode-tiny
    ;name Dimachaerus 3
    ;author inversed
    ;strategy Quickbomb -> Bishot with SPL/DIV clear
    ;date 2022.05.11
    ;assert CORESIZE == 800

    step equ 404
    hop equ 490
    s0 equ 430
    djs equ 372
    ka equ 677
    kb equ 103

    q0a equ 527
    qda equ 778
    q0b equ 584
    qdb equ 411
    qalpha equ q0a + (i - 1) * qda
    qbeta equ q0b + (i - 1) * qdb
    qspace equ 1
    qlen equ (11 - qspace)

    org go - qlen

    scan add inc , ptr
    ptr sne.b s0 , s0 + hop
    djn.f scan , < djs

    div.x # ka , # kb
    inc spl # step , step
    cloop mov inc , } ptr
    mov inc , > ptr
    djn.a cloop , < inc

    for qspace
    dat 0 , 0
    rof
    i for qlen
    mov { qalpha, qbeta
    rof
    go djn.f ptr , { q0a + qlen * qda

    SYNERGY 2

    This refresh features two changes:
    - The bombs have been switched to T.N.T.-style
    - The bombing pattern and duration have been optimized. Turns out that longer bombing is not necessarily beneficial. Note the a-decrement attack affecting the pattern.

    ;redcode-tiny
    ;name Synergy 2
    ;author inversed
    ;strategy T.N.T.-style bomber with SPL stripe
    ;date 2022.05.05
    ;assert CORESIZE == 800

    hop equ 199
    step equ (2*hop-1)
    timer equ 56
    bmb0 equ 181
    stripe equ 212
    safe equ 4+dc-cptr
    any equ 669
    x0 equ bomb

    qlen equ 9
    qa equ 485
    qb equ 11
    qc equ 199
    qd equ 410
    a0 equ x0+qa
    c0 equ x0+qc

    org go-qlen

    bomb mov hop , 1
    loop add # step , ptr
    atk mov bomb , @ ptr
    ptr mov bomb , { bmb0
    cptr mov cs0 , < x0+stripe
    djn loop , # timer

    cs0 spl # 0 , 0
    dc mov kill , > cptr
    djn.f dc , > cptr
    kill dat any , safe

    i for qlen
    mov { a0+i*qb, c0+i*qd
    rof
    go djn.f atk , { a0+(qlen+1)*qb

    DESYNC

    An experimental paper with desynchronized processes. The main benefit is reducing the process generation code from 3 to 2 instructions. The single extra instruction means that a quickscanner fits perfectly even with the paper boot code. Also, we now have
    a hard counter to Resinoid.

    ;redcode-tiny
    ;author inversed
    ;name Desync
    ;strategy Proof of concept silk replicator with desynchronized execution
    ;date 2022.04.12
    ;assert CORESIZE == 800

    step equ 296
    qdec equ 599
    bdec equ 217
    atkB equ 771
    bdist equ 377
    bofs equ silk+bdist

    qx equ 100
    qy equ 65
    qa1 equ ((qx - 1) * qy + 1) * (((qx - 1) * qy) % 800)
    qb1 equ (qx - 1) * qy
    qa2 equ ( qx * qy + 1) * (( qx * qy) % 800)
    qa3 equ ((qx + 1) * qy + 1) * (((qx + 1) * qy) % 800)
    qb3 equ (qx + 1) * qy

    org qscan

    qscan sne.f qf+qa1, qf+qb1
    seq.f qf+qa2, } qf
    jmp @ qlo+1 , { qf
    sne.f qf+qa3, qf+qb3
    jmz.f start , < qf

    qf mul.x # qx , # qy
    jmz.f @ qlo+1 , > qf

    qlo mov } qdec , > qf
    mov } qlo , { qf
    seq { qf , > qf
    djn.f qlo , > qf

    start spl 0 , } 0 ; Create 6 processes:
    spl 1 , {-qdec ; 2 in front, 4 delayed.
    mov } silk , } inc
    djn.f bofs , < bdec

    silk spl @ 0 , } step ; Becomes spl @2 after the
    mov } silk , > silk ; front processes execute.
    inc spl # bofs , silk+step ; B-field necessary for replication.
    mov.i # 1 , < 1
    djn -1 , # atkB

    DESERT ROSE

    A paper using Mizcu's idea of adapting Biomech bombing to silk. Unfortunately, the results are underwhelming. I think the paper takes too much time to "heat up" and start the mod-4 bombing under the tiny settings.

    ;redcode-tiny
    ;name Desert Rose
    ;author inversed
    ;strategy Tiny version of Shrubbery
    ;date 2022.05.08
    ;assert CORESIZE == 800

    stepX equ 107
    stepY equ 13
    c1 equ 366
    c2 equ 37
    c3 equ 32
    c4 equ 150
    bdist equ 53

    qa equ 788
    qb equ 791
    qc equ 407
    qd equ 27

    x0 equ (-CURLINE)
    second equ silkX + bdist + 6
    qalpha equ x0 + qa + i * qb
    qbeta equ x0 + qc + i * qd

    i for 9
    mov { qalpha , qbeta
    rof

    start spl 2 , { x0 + qa + 10 * qb
    spl 1 , { x0 + qa + 11 * qb
    spl 1 , { x0 + qa + 12 * qb
    mov { silkX , { bp
    bp spl second , { x0 + qa + 13 * qb

    silkX spl @ 6 , > stepX
    mov } silkX , > silkX
    add.x # c1 , { c2
    mov < stepX-1 , > c3
    mov { silkX , { silkY
    silkY djn.f stepY , < c4

    MICROFUNK

    A stone + imp focusing on survivability, originally developed as a rework of Backdraft. An extended bombing combined with a heavy imp spiral gives excellent results against many papers. I don't think we've seen we see a plain stone+imp hard-countering
    papers this hard:

    Name Given
    7b15f4b8... 188.4
    e21ca502... 177.7
    4b0804b3... 159.2

    ;redcode-tiny
    ;name Microfunk
    ;author inversed
    ;strategy Stone + Imp
    ;date 2022.05.09
    ;assert CORESIZE == 800

    ; . . . S t o n e . . . . . . . . . . .
    step equ 539
    hop equ step/2 + 400
    time equ 512
    zofs equ -1-(step*time)
    bofs equ 5

    ; . . . I m p . . . . . . . . . . . . .
    istep equ 267
    iofs equ 3
    djs equ 609
    imp0 equ s0+iofs-(istep*4)

    ; . . . q B o m b . . . . . . . . . . .
    qa equ 316
    qb equ 786
    qc equ 209
    qd equ 645
    qa0 equ x0+qa
    qc0 equ x0+qc
    aq equ qa0+(i-1)*qb
    bq equ qc0+(i-1)*qd

    ; . . . B o o t . . . . . . . . . . . .
    sdist equ 593
    idist equ 503
    ipos equ x0+idist
    spos equ x0+sdist
    bpos equ spos+1+bofs
    x0 equ bomb
    org imp+1

    ; . . . . . . . . . . . . . . . . . . .

    bomb dat } hop+1 , > 1
    djn.f -2 , { zofs
    add # step , 1
    mov bofs , @ 2
    s0 spl # 0 , -3
    add.f # istep , 1
    jmp imp0 , { djs
    imp mov.i # 400 , istep

    i for 5
    mov { aq , bq
    rof

    mov bomb , bpos
    spl 1 , { qa0+5*qb
    ifrom spl 1 , s0+4
    mov > s0 , { sgo
    mov < ifrom , { igo
    sgo spl spos+4, { qa0+6*qb
    igo djn.f ipos+4, { qa0+7*qb

    SPIKY PALMS

    A coreclear paper with a very cool bombing idea taken from palm leaves by Metcalf / Schmidt.

    ;redcode-tiny
    ;author inversed
    ;name Spiky Palms
    ;date 2022.05.17
    ;strategy Silk paper with palm leaves-style bombing
    ;assert CORESIZE == 800

    pstep equ 119
    astep equ 696
    atkB equ 760
    bdist equ 211
    bofs equ silk + bdist

    qa equ 739
    qb equ 781
    qc equ 44
    qd equ 64
    x0 equ (-CURLINE)
    qalpha equ x0 + qa + (i - 1) * qb
    qbeta equ x0 + qc + (i - 1) * qd

    i for 9
    mov { qalpha, qbeta
    rof

    start spl 2 , { x0 + qa + 9 * qb
    spl 1 , { x0 + qa + 10 * qb
    spl 1 , { x0 + qa + 11 * qb
    mov < silk , { 1
    spl bofs , { x0 + qa + 12 * qb

    silk spl pstep , 6
    mov > silk , } silk
    spl { 0 , } 0
    add.x # astep , -2
    mov.i # 1 , < 1
    djn -2 , # atkB

    CHADERIA HYSURA

    An evolved-style paper produced by my old evovler RedShift. The main feature is the quickbombing combined with the paper's body. The idea has already appeared in Evolving Magic, but Chaderia Hysura executes it better. Its mostly preys on silk-based
    papers. Table scans and certain oneshots are the main weakness.

    Name Given
    7fe57f81... 185.4
    7b15f4b8... 183.6
    Wizard 180.9
    Chorus 180.1

    Name Taken
    Table Scan 218.0
    T-Scan 202.8
    Serval 198.0
    s774++ 192.6

    ;redcode-tiny
    ;name Chaderia Hysura
    ;author inversed
    ;strategy Quickbomb -> evolved-style paper
    ;strategy Evolved with RedShift
    ;date 2014.06.01
    ;assert CORESIZE == 800

    org go

    mov.i < 556 , { 371
    spl.a # 334 , > 503
    mov.i > -3 , } 1
    djn.a < 147 , > 770
    mov.i { 93 , { 279
    mov.i } 686 , { 350
    mov.i } 684 , { 538
    mov.i { 695 , { 209
    spl.a $ -8 , } 504
    mov.i } 674 , { 729
    mov.i { 610 , { 708
    go spl.a $ -6 , > 464
    mov.i > 609 , { 430
    mov.i { 386 , { 250
    mov.i { 257 , { 85
    mov.i { 695 , { 596
    mov.i { 695 , { 555
    mov.i { 108 , { 375
    mov.i { 695 , { 410
    div.b > 364 , < 733

    AR: CHTHONIC BUNNY

    A replicator produced by my new evolver / optimizer ArmsRace. It is quite unlike the other evolved papers we've seen so far. The MOV responsible for the replication is positioned far away from the paper's SPL head, and the DJN for process transfer is
    located at the end.

    ;redcode-tiny
    ;author inversed
    ;name AR: Chthonic Bunny
    ;strategy Replicator
    ;strategy Evolved with ArmsRace
    ;date 2022.05.12
    ;assert CORESIZE == 800

    org 1

    dat.b } 651 , { 0
    mov.i { 399 , $ 308
    mov.i > 537 , } 17
    mov.i } 512 , $ 688
    spl.b { 3 , } 627
    mov.i > 6 , $ 380
    mov.i { 132 , $ 229
    mov.i } 6 , { 666
    mov.i < 532 , { 500
    mov.i > 513 , $ 563
    mov.i < 357 , { 523
    spl.b # 674 , < 484 ; Head
    mov.i > 597 , { 584
    mov.i > 440 , { 341
    mov.i } -1 , { 425
    spl.b # 377 , } 2
    mov.i } -11 , } 2 ; Replication
    mov.i > 165 , { -17
    djn.f { 118 , { 399 ; Process transfer
    mov.i } 45 , { 534

    AR: LAVA FLOW

    An unintelligible mumbo-jumbo that shouldn't work, but somehow does. I can't even describe this strategy. There is no replication and no distinct attack loop. The warrior creates a horrible mess across the entire core and splits to a stripe of mov.i #x, {
    2 imps. The best description that comes to mind is "unspeakable horror". The attack is surprisingly efficient, covering the entire core without leaving large gaps within 600 cycles. The most puzzling is the thing's ability to beat papers, both silk-based
    and evolved.

    Name Given
    7fe57f81... 193.1
    7b15f4b8... 168.1
    4b0804b3... 167.1
    bestwar4 153.0

    ;redcode-tiny
    ;author inversed
    ;name AR: Lava Flow
    ;strategy Evolved with ArmsRace
    ;date 2022.05.16
    ;assert CORESIZE == 800

    org 0

    mov.i } 598 , $ 692
    spl.b # 374 , } 443
    spl.b # 711 , { 2
    mov.i # 1 , { 1
    mov.i # 670 , { 2
    mov.i > 354 , { -1
    spl.b $ 419 , { -1
    mov.i < 780 , { 462
    mov.i { 665 , < 779
    mov.i { 705 , { 302
    mov.i } 716 , { 57
    spl.b # 69 , } 1
    mov.i } 17 , { 702
    mov.i { 700 , { 111
    spl.b # 49 , { -8
    mov.i } 535 , < 203
    mov.i } 589 , { 323
    mov.i { 678 , < -16
    mov.i < 552 , { 707
    djn.f } 441 , $ 242

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Metcalf@21:1/5 to inversed on Sun May 29 15:30:53 2022
    On Sun, 22 May 2022 11:24:05 -0700, inversed wrote:

    DESYNC

    An experimental paper with desynchronized processes. The main benefit is reducing the process generation code from 3 to 2 instructions.

    Thanks, the desynced processes looks like they open up some interesting possibilities to explore :-)

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