🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: rec.games.corewar
Article #271

Re: Outlaw ImpRings? - There's a better way

#271
From: Daniel Starr
Date: Thu, 31 Dec 1992 11:16
67 lines
3141 bytes
In article <78903@hydra.gatech.EDU> gt7804b@prism.gatech.EDU (Wayne Edward Sheppard) writes:
>I don't know about the rest of you, but these imprings has made
>corewar boring.  But we shouldn't change the rules to fight them.
>How about changing the core size.  8000 is too friendly for imps.
>Do imprings work good when there are alot of points?  A coresize
>of 9000 would make the smallest impring have 7 points.  Is this 
>enough?  8400 core size would require 11 point rings.  
>
>If an impring had more points, wouldn't it be easier to kill?
>
Nope.  The nifty thing about an impring, after all, is that just like
a classic imp, each instruction prepares the very next one that executes.
As a result, no matter how many points there are, only one -- the one
about to execute -- is vulnerable to bombing/mutation at any given time.

But imprings aren't that hard to kill.  You just need to decrement a lot
in front of your program.  A program like this

spl 0, <-3
mov <-3,<-4
djn -1,<-5

will cause ANY impring or spiral to crash when it hits the line three above
the top.  (In point of fact, any program with an SPL 0 can't lose to an impring,
although it can tie, since an impring kills programs by subverting them and
letting them die when they outrun the slower ring into core.)
(This also illustrates the real advantage of "spirals" -- overlapping offset
rings:  each has its vulnerable instruction in a different place at any
given time, so a single djn stream can't hit both:  if it hits one, it
necessarily bypasses the other.)

Anyway, unless I'm overlooking something (comments, anyone?), the only
disadvantage of larger imprings is that they're messier to launch.

Speaking of launches, anyone found a simpler way than this? --

d EQU 8001/7
imp mov 0,d
start mov imp,100
spl 1
spl 1
spl 1
jmp <launch
jmp main-program
jmp start+100+d*6
jmp start+100+d*5
jmp start+100+d*4
jmp start+100+d*3
jmp start+100+d*2
jmp start+100+d*1
jmp start+100+d*0
launch  dat #0
...
main-program ...

For spirals, add a MOV imp,100+d at the top, an extra SPL 1, and precede
each of the normal JMP start+100+d*n statements with a JMP start+100+d*(n+1).
This creates two rings, the first always one instruction ahead of the second.

(I'm assuming here that I am correctly interpreting when Dan N. means by
spirals.  If I'm not, please enlighten me. (:  )

-- 
--------------------------------------------------------------------
|Daniel Starr                | "Wait! Wait! Maybe THIS will work!" |
|dstarr@minerva.cis.yale.edu |                                     |
--------------------------------------------------------------------
Technical Details
Message-ID: <1hukq1INNroe@MINERVA.CIS.YALE.EDU>
Path: arc1-ca.pugleaf.net!sparky!uunet!think.com!yale.edu!not-for-mail
References: <78903@hydra.gatech.EDU>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!think.com!yale.edu!not-for-mail
From: starr-daniel@yale.edu (Daniel Starr)
Newsgroups: rec.games.corewar
Subject: Re: Outlaw ImpRings? - There's a better way
Date: 31 Dec 1992 06:16:17 -0500
Organization: Yale University Science & Engineering UNIX(tm), New Haven, CT 06520-2158
Lines: 67
Message-ID: <1hukq1INNroe@MINERVA.CIS.YALE.EDU>
References: <78903@hydra.gatech.EDU>
NNTP-Posting-Host: minerva.cis.yale.edu