• Corewar Global Masters Tournament

    From John Metcalf@21:1/5 to All on Sat Jan 1 14:42:25 2022
    Christian Schmidt has announced the Corewar Global Masters Tournament,
    deadline 6pm CET on 7th Feb 2022. There are three rounds and a grand
    final with the rounds being broadcast live on Twitch.

    * round 1 - Prove it Twice!
    * round 2 - Larger than Nano
    * round 3 - Everything About 8
    * grand final - Tiny Survival

    It's been quite a while since the last tournament, so fingers crossed a
    few players will be able to take part :-)

    Full rules are available at:

    * http://www.corewar.info/tournament/CGM1/

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Gunnell@21:1/5 to John Metcalf on Mon Jan 3 00:50:50 2022
    On Saturday, 1 January 2022 at 10:42:26 pm UTC+8, John Metcalf wrote:
    Christian Schmidt has announced the Corewar Global Masters Tournament, deadline 6pm CET on 7th Feb 2022. There are three rounds and a grand
    final with the rounds being broadcast live on Twitch.

    * round 1 - Prove it Twice!
    * round 2 - Larger than Nano
    * round 3 - Everything About 8
    * grand final - Tiny Survival

    It's been quite a while since the last tournament, so fingers crossed a
    few players will be able to take part :-)

    Full rules are available at:

    * http://www.corewar.info/tournament/CGM1/
    Thanks for the heads-up. Christian is not maintaining his RSS feed so I would have missed it completely!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Gunnell@21:1/5 to Stephen Gunnell on Wed Jan 12 15:36:10 2022
    On Monday, 3 January 2022 at 4:50:51 pm UTC+8, Stephen Gunnell wrote:
    On Saturday, 1 January 2022 at 10:42:26 pm UTC+8, John Metcalf wrote:
    Christian Schmidt has announced the Corewar Global Masters Tournament, deadline 6pm CET on 7th Feb 2022. There are three rounds and a grand
    final with the rounds being broadcast live on Twitch.

    * round 1 - Prove it Twice!
    * round 2 - Larger than Nano
    * round 3 - Everything About 8
    * grand final - Tiny Survival

    It's been quite a while since the last tournament, so fingers crossed a
    few players will be able to take part :-)

    Full rules are available at:

    * http://www.corewar.info/tournament/CGM1/
    Thanks for the heads-up. Christian is not maintaining his RSS feed so I would have missed it completely!

    How are people going with this? Round three has been the hardest so far ... not only do I have to create a candidate warrior but I have to create a test set to evaluate against. Plus I'm also weakest on the 94nop hill.

    Steve

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Metcalf@21:1/5 to Stephen Gunnell on Thu Jan 13 14:27:13 2022
    On Wed, 12 Jan 2022 15:36:10 -0800, Stephen Gunnell wrote:

    How are people going with this? Round three has been the hardest so far
    ... not only do I have to create a candidate warrior but I have to
    create a test set to evaluate against. Plus I'm also weakest on the
    94nop hill.

    I found writing 8 warriors a bit time consuming, but have finally
    submitted my entries.

    Round 1
    -------

    I tested a few of my published 88 / 94nop warriors against Christian's benchmark, added any with a good score to the benchmark, then picked out
    a couple as a starting point. I suspect a warrior like SnowDust would
    work really well, but ended up submitting something less specialised.

    Note: SAL has a medium process hill and a few tournaments used -P 64.

    Round 2
    -------

    I put together a quick benchmark of nano warriors with a few small tweaks
    (e.g. changing the imp numbers to 107). Scores seem similar to nano, so
    my entries are based on two of my nano warriors.

    Round 3
    -------

    I didn't worry about the -8 to 8 restriction for the benchmark and used
    the 94nop Koenigstuhl top 50. It's fairly easy to construction any
    number using a series of add / mul / div.

    E.g. 1143 for a 7-pt imp:

    DIV #7, #-6 ; (or use DIV #3, #-2 for 3-pt imps)
    ADD.BA -1, IMP
    ; ...
    IMP MOV.I #1, *0 ; becomes MOV.I #1143, *0

    Or an optima mod-8 step for a scanner:

    ADD ADJ, INC
    MUL ADJ, INC
    ADJ MUL #6, #6
    MUL ADJ, INC
    ; ...
    INC SPL #5, 5 ; becomes SPL #2376, 2376

    I use something similar in my round 3 entries - one has 5 instructions to
    set up the constants, the other has 6.

    Round 4
    -------

    The max process rule caused me a bit of a headache. I used the top 25
    tiny warriors from Koenigstuhl as a benchmark and looked for a warrior
    which scores well with 4-8 processes. Hopefully it won't get eliminated
    before it reaches that point!

    Good luck :-)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Gunnell@21:1/5 to John Metcalf on Thu Jan 13 15:36:58 2022
    On Thursday, 13 January 2022 at 10:27:14 pm UTC+8, John Metcalf wrote:
    On Wed, 12 Jan 2022 15:36:10 -0800, Stephen Gunnell wrote:

    How are people going with this? Round three has been the hardest so far
    ... not only do I have to create a candidate warrior but I have to
    create a test set to evaluate against. Plus I'm also weakest on the
    94nop hill.
    I found writing 8 warriors a bit time consuming, but have finally
    submitted my entries.

    Round 1
    -------

    I tested a few of my published 88 / 94nop warriors against Christian's benchmark, added any with a good score to the benchmark, then picked out
    a couple as a starting point. I suspect a warrior like SnowDust would
    work really well, but ended up submitting something less specialised.

    Note: SAL has a medium process hill and a few tournaments used -P 64.

    Round 2
    -------

    I put together a quick benchmark of nano warriors with a few small tweaks (e.g. changing the imp numbers to 107). Scores seem similar to nano, so
    my entries are based on two of my nano warriors.

    Round 3
    -------

    I didn't worry about the -8 to 8 restriction for the benchmark and used
    the 94nop Koenigstuhl top 50. It's fairly easy to construction any
    number using a series of add / mul / div.

    E.g. 1143 for a 7-pt imp:

    DIV #7, #-6 ; (or use DIV #3, #-2 for 3-pt imps)
    ADD.BA -1, IMP
    ; ...
    IMP MOV.I #1, *0 ; becomes MOV.I #1143, *0

    Or an optima mod-8 step for a scanner:

    ADD ADJ, INC
    MUL ADJ, INC
    ADJ MUL #6, #6
    MUL ADJ, INC
    ; ...
    INC SPL #5, 5 ; becomes SPL #2376, 2376

    I use something similar in my round 3 entries - one has 5 instructions to
    set up the constants, the other has 6.

    Round 4
    -------

    The max process rule caused me a bit of a headache. I used the top 25
    tiny warriors from Koenigstuhl as a benchmark and looked for a warrior
    which scores well with 4-8 processes. Hopefully it won't get eliminated before it reaches that point!

    Good luck :-)

    Heh! division didn't even occur to me ... and it should have. I use the modulus nature of negative numbers in other contexts.
    For some reason I can't submit to SAL so I don't play in that tiny/nano space and I have no stock of warriors outside of Koenigsthul. But I do have a program that will chop warriors apart looking for interesting fragments.
    For round 4 I am going the other direction, building warriors that work tolerably well at low process counts and then finding the best of them at high process counts.

    Good luck as well.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From skybuck2000@21:1/5 to All on Sat Jan 15 09:08:41 2022
    Would be more fun if the time to write these warriors was like 1 year instead of a few weeks/months.

    Some people only write 1 warrior per year ! LOL.

    Bye,
    Skybuck =D

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Gunnell@21:1/5 to John Metcalf on Wed Feb 2 00:28:30 2022
    On Thursday, 13 January 2022 at 10:27:14 pm UTC+8, John Metcalf wrote:
    On Wed, 12 Jan 2022 15:36:10 -0800, Stephen Gunnell wrote:

    How are people going with this? Round three has been the hardest so far ... not only do I have to create a candidate warrior but I have to
    create a test set to evaluate against. Plus I'm also weakest on the
    94nop hill.
    I found writing 8 warriors a bit time consuming, but have finally
    submitted my entries.

    Round 1
    -------

    I tested a few of my published 88 / 94nop warriors against Christian's benchmark, added any with a good score to the benchmark, then picked out
    a couple as a starting point. I suspect a warrior like SnowDust would
    work really well, but ended up submitting something less specialised.

    Note: SAL has a medium process hill and a few tournaments used -P 64.

    Round 2
    -------

    I put together a quick benchmark of nano warriors with a few small tweaks (e.g. changing the imp numbers to 107). Scores seem similar to nano, so
    my entries are based on two of my nano warriors.

    Round 3
    -------

    I didn't worry about the -8 to 8 restriction for the benchmark and used
    the 94nop Koenigstuhl top 50. It's fairly easy to construction any
    number using a series of add / mul / div.

    E.g. 1143 for a 7-pt imp:

    DIV #7, #-6 ; (or use DIV #3, #-2 for 3-pt imps)
    ADD.BA -1, IMP
    ; ...
    IMP MOV.I #1, *0 ; becomes MOV.I #1143, *0

    Or an optima mod-8 step for a scanner:

    ADD ADJ, INC
    MUL ADJ, INC
    ADJ MUL #6, #6
    MUL ADJ, INC
    ; ...
    INC SPL #5, 5 ; becomes SPL #2376, 2376

    I use something similar in my round 3 entries - one has 5 instructions to set up the constants, the other has 6.

    Round 4
    -------

    The max process rule caused me a bit of a headache. I used the top 25
    tiny warriors from Koenigstuhl as a benchmark and looked for a warrior
    which scores well with 4-8 processes. Hopefully it won't get eliminated before it reaches that point!

    Good luck :-)

    Christian accepted my bundle of warriors on Monday.

    Round 1: Several of my warriors performed well against the benchmark ... I ended up selecting two with a bias towards resilience, one with all the fruit (qscan etc) and the other is pretty bare.

    Round 2: I took somewhat the same path as John but I also have a Perl script that will chop existing warriors into fragments and comb through them for useful strategies. s774++ and dark skies (both from the tiny hill) yielded particularly effective
    fragments. I turned several of my evolver programs loose on the 200 best and eventually selected one from Fractal and another from Magenta (although neither was from the mentioned warriors).

    Round 3: I made a kind of pool and then I dumped a bunch of my warriors in to see what seemed to work. I then ported the evolvers for those warriors into round 3 by adding code to generate the needed address offsets and ran them to see what needed
    tweaking. I almost submitted a version of Origin of Storms but I eventually went with a couple of my own warriors at least one of which will be well known to readers here.

    Round 4: I started by optimizing for low process count and checking upwards to high process count and then because I wasn't happy I tried it the other way around ... my feeling was that the strong warriors at low process count would never get that far
    and the strong warriors at high process counts would be very vulnerable to chance at low process counts. I eventually opted for a couple of warriors that performed well enough for most of the way down the list in the hope that we wouldn't get enough
    entries to go all the way to the bottom. I also wrote a new evolver "Magenta" to munge stuff around and then ported it back to round 2 to get more options there. One of the warriors was derived from Dave Hillis' evolved warriors after munging by Magenta
    and the other was upcycled (by me) from Sacha Zapf's 476 from the tiny hill.

    Good luck,

    Steve

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Wayne Sheppard@21:1/5 to All on Mon Feb 7 13:45:31 2022
    25+ years later, and I'm back! I didn't actually write any warriors, just stole from you guys. I downloaded every warrior I could find, then ran some 25M battles to find the best ones, maybe 4-5 hours of actual work. I skipped R3, as I didn't have
    time to figure out how to use MUL/DIV.

    Here are the six warriors I used, without any changes.
    R1 - slime test 1.00 by David Houston
    R1 - Twin Flame by Ian Oversby
    R2 - victim of the night by John Metcalf
    R2 - Nano'Broda by G.Labarga
    F - Scanny Boy by David van Dam
    F - SDC by Anton Marsden

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Gunnell@21:1/5 to Wayne Sheppard on Mon Feb 7 14:59:04 2022
    On Tuesday, 8 February 2022 at 5:45:32 am UTC+8, Wayne Sheppard wrote:
    25+ years later, and I'm back! I didn't actually write any warriors, just stole from you guys. I downloaded every warrior I could find, then ran some 25M battles to find the best ones, maybe 4-5 hours of actual work. I skipped R3, as I didn't have time
    to figure out how to use MUL/DIV.

    Here are the six warriors I used, without any changes.
    R1 - slime test 1.00 by David Houston
    R1 - Twin Flame by Ian Oversby
    R2 - victim of the night by John Metcalf
    R2 - Nano'Broda by G.Labarga
    F - Scanny Boy by David van Dam
    F - SDC by Anton Marsden

    Welcome back! Yes, most of the good warrior ideas have been taken although John is one of the few people still producing new ideas.
    For round 3 this is the OoS clone that I didn't use. You can see the multiplication and pointer scheme starting at 'setup'.

    ;redcode
    ;name Dark and Stormy 2022GM sczd
    ;author Steve Gunnell
    ;strategy Origin of Storms clone
    ;assert 1

    ptr: sne 2 ,8
    go add step ,ptr
    p: mov bomb ,}ptr
    mov bomb ,>ptr
    djn @p ,#0

    bomb: spl #1 ,1
    mov step ,>ptr
    mov step ,>ptr
    djn.f -1 ,>ptr
    step dat 1 ,1

    for 47
    dat 0 ,0
    rof

    setup mul.ab #-8 ,#7
    mul.a #6 ,-1
    add.f setup ,1
    mul.ab #8 ,#5
    add.b -1 ,<setup
    sub.a -2 ,*setup
    sub.ab -3 ,*setup
    div.ab *setup ,#-1
    ptr2 add.b setup ,#-4
    mov.b -2 ,@ptr2
    sub.ab #3 ,ptr2
    spl @ptr2 ,0
    sub.f ptr2 ,ptr2

    end setup

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Wayne Sheppard@21:1/5 to stephen.g...@gmail.com on Tue Feb 8 15:58:59 2022
    On Monday, February 7, 2022 at 5:59:04 PM UTC-5, stephen.g...@gmail.com wrote:

    ;redcode
    ;name Dark and Stormy 2022GM sczd
    ;author Steve Gunnell
    ;strategy Origin of Storms clone
    ;assert 1

    That is interesting. "Origin of Storms v2" was one of the two warriors I picked for R3, along with "Tornado 4", then the deadline came up on me too fast..

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Gunnell@21:1/5 to Wayne Sheppard on Tue Feb 8 17:20:27 2022
    On Wednesday, 9 February 2022 at 7:59:00 am UTC+8, Wayne Sheppard wrote:
    On Monday, February 7, 2022 at 5:59:04 PM UTC-5, Steve Gunnell wrote:

    ;redcode
    ;name Dark and Stormy 2022GM sczd
    ;author Steve Gunnell
    ;strategy Origin of Storms clone
    ;assert 1
    That is interesting. "Origin of Storms v2" was one of the two warriors I picked for R3, along with "Tornado 4", then the deadline came up on me too fast..

    It is a good warrior. In some situations it can be used as a compact replacement for a qscan. One of John M's innovations.

    S.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From inversed@21:1/5 to stephen.g...@gmail.com on Wed Feb 9 12:39:40 2022
    Round 1:
    The benchmark is easy to abuse as it contains many unsafeguarded 94 warriors that will bleed processes and eventually die when hitting 1, 1 fields with DJN. My first entry, Penumbra, uses mov.i #1, <1 bombs and scores ~187 points (>90% wins against some
    benchmark opponents). The second entry, Sprawling Chaos, is a Digital Rain-like paper with extra dat bombing - a strong MP warrior overall.

    Round 2:
    The round I've spent most of my time on. In the end I've created a pool of 170 "supernano" warriors. New warriors were optimized against the pool and then added to it. I've tried handwriting, reoptimizing existing nano warriors and evolving. The warriors
    I ended up selecting were a scanner and a paper. Both have typical nano design but with an extended attack loop. On the one hand, this is the round I feel most confident about. On the other hand, nano scanners are easy to write and score well, so despite
    all my efforts someone else's scanner might take the win.

    Round 3:
    The round I've spent the least time on - I was just out of time and scrambling to submit something. The first entry, Silverblade, is an old clear-directing scanner with zooom trick I've never published. The second entry, also a CDS (but 0.33c), is
    literally a last minute attempt to send at least something. I chose these scanners because they require minimal modification and the setup (constant calculation) is small.

    Final round:
    I've discovered that two of my tiny warriors, Alpha Centauri and Dual Shock, score surprisingly well across a wide range of processes. That's what I ended up submitting. Alpha Centauri is published and seems such an obvious choice that I suspect someone
    else might've submitted it. For optimization I created a benchmark of other well-performing candidate warriors (ran round-robin tournaments with max processes ranging from 4 to 256 and analyzed the results). I then modified my optimization software to
    produce an average score across the 8 lowest process settings and let it rip through the constants. I'm happy with the average performance, but not 100% confident - if an LP paper survives to the last few rounds, I might be toast.

    On Tuesday, February 8, 2022 at 1:59:04 AM UTC+3, stephen.g...@gmail.com wrote:
    Yes, most of the good warrior ideas have been taken although John is one of the few people still producing new ideas.
    No and no.

    inversed

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Wayne Sheppard@21:1/5 to All on Thu Feb 10 15:06:09 2022
    Here were the top 20 warriors I found, out of over 1100, versus the R1 benchmark.
    162 - eccentric.red
    162 - infravision.red
    162 - lunchbreak.red
    162 - originofstorms.red
    162 - perseus.red
    163 - Eternal_Exile.red
    163 - slimetest1.red <Picked
    163 - vamps02.red
    165 - blacken.red
    165 - luckyluke.red
    166 - elvenking2.red
    167 - limestone.red
    168 - lukenvader.red
    168 - silvertalon12.red
    168 - toxicspirit2.red
    170 - toxicspirit.red
    170 - twinflame.red <Picked
    171 - oneshot.red
    173 - stingray.red
    174 - armadillo.red

    After narrowing this down, I fought these warriors versus another pool to pick the two warriors I used.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Gunnell@21:1/5 to Wayne Sheppard on Thu Feb 10 16:35:42 2022
    On Friday, 11 February 2022 at 7:06:10 am UTC+8, Wayne Sheppard wrote:
    Here were the top 20 warriors I found, out of over 1100, versus the R1 benchmark.
    162 - eccentric.red
    162 - infravision.red
    162 - lunchbreak.red
    162 - originofstorms.red
    162 - perseus.red
    163 - Eternal_Exile.red
    163 - slimetest1.red <Picked
    163 - vamps02.red
    165 - blacken.red
    165 - luckyluke.red
    166 - elvenking2.red
    167 - limestone.red
    168 - lukenvader.red
    168 - silvertalon12.red
    168 - toxicspirit2.red
    170 - toxicspirit.red
    170 - twinflame.red <Picked
    171 - oneshot.red
    173 - stingray.red
    174 - armadillo.red

    After narrowing this down, I fought these warriors versus another pool to pick the two warriors I used.

    My list went :
    174.90 0 by Ian Oversby / Twin Flame
    172.00 1 by Philip Thorne / LuckyLuke
    168.85 2 by Steve Gunnell / Nibelung B tdnd
    167.50 3 by Philip Kendall / One Shot
    166.60 4 by Steve Gunnell / Reamer E jodd
    166.35 5 by Lukasz Grabun / Armadillo
    164.55 6 by Philip Thorne / Luke N'Vader
    163.42 7 by Christian Schmidt / Arrow
    161.95 8 by Steve Gunnell / Nibelung B tdlh
    161.75 9 by Steve Gunnell / Nibelung B tdmv
    160.55 10 by G.Labarga / Under a burning sky
    160.20 11 by Steve Gunnell / Reamer E jodo
    160.05 12 by Anton Marsden / Shapeshifter gohv
    158.80 13 by Steve Gunnell / Nibelung B tdlm
    158.40 14 by Steve Gunnell / Nibelung B tdmp
    158.25 15 by Ian Oversby / Pulp
    157.50 16 by inversed / Rust
    157.25 17 by Lukasz Grabun / Vanquisher
    157.10 18 by Anton Marsden / Perseus
    156.85 19 by Anton Marsden / Shapeshifter gohf

    Inversed wrote:
    On Tuesday, February 8, 2022 at 1:59:04 AM UTC+3, stephen.gunnell wrote:
    Yes, most of the good warrior ideas have been taken although John is one of the few people still producing new ideas.
    No and no.
    Well I'm not seeing a high degree of innovation on the KOTH hills so I'm taking that first no with a pinch of salt. You (Inversed) would be among the few producing new ideas but you publish almost nothing and sometimes not even a strategy line so it is
    hard to confirm that.

    Of course there might be stuff happening on the SAL hills but I don't have an e-mail client that can submit there so I can't easily follow what is going on.

    Cheers,
    Steve

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Gunnell@21:1/5 to All on Thu Feb 10 22:27:41 2022
    Inversed wrote:
    On Tuesday, February 8, 2022 at 1:59:04 AM UTC+3, stephen.gunnell wrote:
    Yes, most of the good warrior ideas have been taken although John is one of the few people still producing new ideas.
    No and no.
    Well I'm not seeing a high degree of innovation on the KOTH hills so I'm taking that first no with a pinch of salt. You (Inversed) would be among the few producing new ideas but you publish almost nothing and sometimes not even a strategy line so it is
    hard to confirm that.

    Of course there might be stuff happening on the SAL hills but I don't have an e-mail client that can submit there so I can't easily follow what is going on.

    Inversed, I apologise, it isn't you that has the missing strategy lines. my bad.
    Steve.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Roy van Rijn@21:1/5 to All on Fri Feb 11 02:37:41 2022
    As promised yesterday during the livestream; I'll do a small write-up as well here and share some of the warriors.
    I love reading the tought process you all went through.

    == Round 1:

    In this round, initially, I focussed on LP/MP warriors. I thought the benchmark wasn't online, glanced over the download button multiple times.
    So I started working on my own LP paper and called it "From the Grave", here it is:

    ;redcode-94nop
    ;name From the Grave
    ;author Roy van Rijn
    ;strategy continuously booted LP paper
    ;assert 1

    pStep equ 1310
    bStep1 equ 5295
    bOff1 equ 7453
    bOff2 equ 6187
    bDist equ 2740
    bIncr equ 1407
    pDjn equ 3972
    bDjn equ 4232

    pLen equ 8

    ; LP paper with embedded stone
    pTop spl @pStep , >pLen
    sub.x pEnd , @3
    pBmb mov.i {bOff1 , {bOff2
    mov <pTop , {pTop
    mov <pTop , {pTop
    pLoop add.x #bStep1 , pBmb
    jmn.b -4 , @-2
    pEnd djn.f pTop , <pDjn

    for 10
    dat 0,0
    rof

    ; Continuously boot the paper:
    bTop add.f #bIncr , *8
    wGo mov.i <bBoot , {bBoot
    mov.i <bBoot , {bBoot
    mov.i <bBoot , {bBoot
    mov.i <bBoot , {bBoot
    mov.i <bBoot , {bBoot
    mov.i <bBoot , {bBoot
    bBoot spl bDist , pTop+pLen
    mov.i <bBoot , {bBoot
    mov.i <bBoot , {bBoot
    djn.f bTop , {bDjn

    end wGo

    Having just a single LP paper looked a bit 'off', so I decided to add a boot. And when I implemented it, I tried looping the boot code to create a continuous boot. This worked pretty well. It makes sure the paper is distributed quickly around the core.
    This might be something worth trying with other LP papers as well.

    The LP paper I created uses two lines to copy itself in less loops (making it a bit faster) and has a mov/add.x stone inside it. The reset part is pretty nice, it doesn't use the regular mov.ab #len,#0, instead I'm looping back and subtracting the step
    and length at the same time. Not sure where I based this on, it might have been brand new, correct me if I'm wrong.

    As a second warrior I first wrote a oneshot, but than I found out the benchmark is actually online. So I did a quick search and, like Wayne mentioned above, I found that Eccentric worked pretty well, so I optmized that warrior instead (very last minute).

    == Round 2:

    The second round... is a bit of an unknown. I never created a lot of nano warriors, so I decided to do something different. I fired up some of my old Java "evolver" code. Haven't used that code in years, left two instances running for about a day and
    took the result. It seems to have created two spl/mov-kind of clears, no idea how they'll stack up. No high hopes for this round haha.

    == Round 3:

    Using numbers -8 to 8.... this sounds like a fun challenge.

    The first warrior I created was a paper/stone, because my best warrior yet has been Hullabaloo... Creating one that boots away with good constants using these restrictions sounded like a "fun" challenge.
    It was quite hard to be able to create the constants, place them in the correct positions *AND* boot away the resulting paper AND stone. But I managed to create "something". I'm using a lot of DIV.X/SUB.X combinations so quickly generate some numbers
    that are big enough to use as stone/paper/boot steps. I sandwiched the constant-creation and boot in between a paper and stone and managed to make it all work.

    ;redcode-94nop
    ;name Aight
    ;author Roy van Rijn
    ;strategy Just -8 to 8, we can still have a paper/stone.
    ;assert 1

    pGo spl 7 , {3
    mov }2 , }-1
    bLine mov hBomb , }2
    mov 3 , }-3
    jmz.f -4 , *-1
    hBomb dat }7 , >1

    wGo div.x pGo , 1
    bDat sub.x #-5 , #-3
    pEnd add.a bDat , *-2
    add.b bDat , bLine
    sub.f bDat , dBoo
    mov hBomb , {dBoo
    mul.a -5 , @pBoo-1
    spl }2 , {bDat
    spl 1 , {bDat
    spl 0 , {dRec
    mov <dGo , {dBoo
    dBoo spl 3 , 0
    dRec mov <pEnd+3 , <dBoo
    spl *dBoo , 4
    pBoo jmp @dBoo

    dGo spl #0 , {6
    mov 5 , @hPtr
    hHit add #-8 , hPtr
    hPtr mov 3 , }-7
    djn.f -3 , {-4
    end wGo


    I'm hoping a lot of people picked the 'easy' route and made a simple bomber or scanner, which often only requires one or two constants. The paper/stone should do well against both of these.

    My other guess was that a lot of warriors are slow, because they have to do a lot of setup/booting. So the second warrior I created for this round is a faster bombing oneshot, based on Myrmidon. You're able to bridge gaps larger than 8 by using some
    clever indirection. In this case I ended up with the following warrior:

    ;redcode-94nop
    ;name SimpleShot
    ;author Roy van Rijn
    ;strategy -8/8 bombing oneshot with SSD
    ;assert 1

    ;People might have a lot of 'boot' code, building values
    ;So maybe speed wins?

    ; setup values:

    mul.x @4 , *iClr ;use indirection to access parts of the warrior
    mul.a *iClr , *iClr
    scan sub.f *iClr , @2 ;bombing oneshot
    mov.i *iClr , }gate
    jmz.f -2 , @gate
    iClr jmp clear , 0

    dat 0,0
    dat 0,0
    dat 0,0
    dat 0,0
    dat 0,0

    gate dat 8 , 8
    dat 1 , 8
    clear spl #7 , 7
    mov.i *gate+1 , >gate
    mov.i *gate+1 , >gate
    djn.f -2 , }clear

    end scan-2

    The oneshot quickly drops some bombs, does some scanning and very early goes into the SSD clear, it was hard to create "good" constants and/or try a lot of them haha.

    == Round 4 / Final

    Another conundrum, do you focus on high processes (to be safe) or do you focus on the low process side? I've decided to gamble a bit here.

    The first warrior I picked is a version (again) of Myrmidon, it is a very versatile warrior that does pretty well in different settings. With a bombing oneshot you can always get lucky.

    The second warrior is a bit of a gamble. When we have a lot of processes, a LP paper is useless. If we have very limited processes, a normal paper is useless. But what if we combine the two? This is something we normally don't see, but in this case,
    based on the amount of processes available the "best" suited paper takes precedence. With all these papers I've ended up with "Almost a book".

    I've decided to focus mainly on the bottom half of the amount of processes, hoping to survive the highest process rounds. I'm hoping that we have a few beginners joining the tournament, that might save me.

    The LP paper of this warrior is very similar in design to the one above (From the Grave). Again: not sure where this design comes from, might be new. The second "normal" paper is a Sunset-variant.
    I'm creating two processes and booting the LP paper away and using a tiny jump table to launch both papers. After that the processes get increased and it starts the Sunset-style paper for the cases where we have more processes available.

    This warrior gets stronger the less processes there are available, so fingers crossed....

    ;redcode-tiny
    ;name Almost a Book
    ;author Roy van Rijn
    ;strategy Final entry 1
    ;strategy Multiple papers, LP paper and normal paper
    ;strategy Needs to survive, optimized for lower processes.
    ;assert 1

    bBoot equ 1792;1385;2193
    pStep1 equ 7724;5449
    bOff1 equ 2957;7310;1215;1765
    bOff2 equ 6024;1434;2637
    pDjn equ 4071;6645
    pStep2 equ 6853;4911
    bOff3 equ 7132;7945;2324

    ; LP paper with embedded stone
    pTop spl @pStep1 , >6
    sub.x pEnd , pTop
    mov.i {bOff1 , {bOff2
    mov <pTop , {pTop
    jmn -2 , -4
    pEnd djn.f pTop , <pDjn

    ; Step 1: Boot the LP paper away
    ; Step 2: Start the LP paper
    ; Step 3: Start normal paper (for more processes)

    dat 1 , pTop+3

    start spl 1 , bBoot+2

    mov.i <bPtr2 , <bPtr1
    mov.i <bPtr2 , <bPtr1
    mov.i <bPtr2 , <bPtr1

    spl @start-1 , }0

    bPtr1 mov.i 1 , #bBoot
    bPtr2 spl 1 , pEnd+1

    pGo spl pStep2 , {3
    mov }2 , }-1
    mov.i 3 , <bOff3
    mov.i *3 , }-3
    jmz.f -4 , *-1
    dat }1 , >1
    end start

    == Conclusion

    Awesome to be programming CoreWar again, haven't done this in a while (hence the name 'From the Grave').

    Good luck to all, see you in the livestream/chat!

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