From corewar-l@stormking.com Sat Jan 13 09:39:02 1996 Received: by couchey.inria.fr (5.57/Ultrix3.0-C) id AA22434; Sat, 13 Jan 96 09:39:02 +0100 Received: from valhalla.stormking.com (root@valhalla.stormking.com [204.141.14.1]) by nez-perce.inria.fr (8.7.1/8.7.1) with SMTP id JAA27568 for ; Sat, 13 Jan 1996 09:38:56 +0100 (MET) Received: from (server@localhost [127.0.0.1]) by valhalla.stormking.com (8.6.12/8.6.12) with SMTP id DAA06551; Sat, 13 Jan 1996 03:35:52 -0500 Date: Sat, 13 Jan 1996 03:35:52 -0500 Message-Id: Errors-To: tuc@stormking.com Reply-To: akemi@netcom.com Originator: corewar-l@stormking.com Sender: corewar-l@stormking.com Precedence: bulk From: akemi@netcom.com (David Boeren) To: Multiple recipients of list Subject: Koolaid revealed! X-Listprocessor-Version: 6.0b -- ListProcessor by Anastasios Kotsikonas X-Comment: Usenet News "rec.games.corewar" Status: R Well, JS Pulido has released his code for Fire Master 1.5, so I may as well let everyone have a look at my code too. :) Here's the version that's currently neck-and-neck with Fire Master 1.6 for the top of the beginner hill: ;redcode-b ;name Koolaid II: The Wrath of Goofy Grape v0.1 ;author David Boeren ;assert CORESIZE == 8000 ;strategy stun bomber -> coreclear ;strategy v0.1 New bombing engine with ideas from Tornado ;strategy Wasn't able to make it work with the Exodus bomb though... step equ 404 ; modulo 8 bombing stepb equ (2*step) stepc equ (3*step) gate equ loop-3 org loop loop MOV.I bomb2, @targ MOV.I bomb1, gate ; Coreclear modified from Phosphorus DJN.F clear, {gate kill DAT.F #0, #20 bomb1 SPL.B #2, #stepb+2 ; heavy stun bomb bomb2 MOV.I -1, }-1 vamp JMP.B -(step+1), {2667 END Basically, I throw 2-line stun bombs around core and JMP lines that point to them. The bombing loop runs at .5c and bombs mod-8. The stun bomb looks like this: spl.b #2, #stepb+2 mov.i -1, }-1 This does pretty good stunning, but I don't like it nearly as much as the Exodus. Unfortunately, I needed a field free, and the Exodus does not have any free fields left, so I had to go with this one. What I like about the Exodus over other incendiary style bombs is that it creates an infinte SPL carpet, rather than a limited size one. This means that the SPL carpet has the potential to engulf other enemy proceses lurking downstream, ie - It will possibly overrun some more copies of his paper. There isa tradeoff between how much time the stunned enemy should spend splitting and how much time he should spend making the SPL carpet larger. Here are a few different infinite-carpet stun bombs and stats: ; Exodus bomb, burn everything! ; 20 cycles: carpet=5 100 cycles: carpet=18 1000 cycles: carpet=93 ; procs=16 procs=84 procs=822 MOV.I 1, >1 SPL.A -1, #1 ; Faster-growing stun bomb ; 20 cycles: carpet=8 100 cycles: carpet=28 1000 cycles: carpet=224 ; procs=16 procs=76 procs=782 SPL.A #0, #95 MOV.I 1, >1 SPL.A -2, #1 ; Even faster-growing stun bomb ; 20 cycles: carpet=10 100 cycles: carpet=30 1000 cycles: carpet=257 ; procs=14 procs=74 procs=749 MOV.I 2, >2 MOV.I 1, >1 SPL.A -2, #1 ; Heavy stun bomb ; 20 cycles: carpet=5 100 cycles: carpet=7 1000 cycles: carpet=10 ; procs=18 procs=96 procs=993 SPL.A #0, #2 MOV.I -1, >-1 As you can see, the faster growth means that there is less splitting. The Exodus bomb is ideal due to being only 2 lines long, which makes your program bomb faster and saves space. The "Heavy Stun Bomb" is what Koolaid uses now. It's 2 instructions long, has 1 free field for putting a step or other data value in, and makes the opponent split very heavy, at almost 1c in fact! The only drawback is that it's not going to be able to overrun other copies of paper nearby. However, the superiority in stunning power over a SPL 0/JMP-1 or even a SPL 0/SPL 0/JMP-2 should be very evident, since these only stun at .5c and .66c respectively, and the .66c version needs an extra instruction. And it does have a little short-term growth, just enouhg to get the next couple instructions in the enemy loop. Well, I think we've got stun bombs pretty well covered now. My bombing loop drops 999 bombs at .5c, and then I start the coreclear. The coreclear is self-splitting, which helps me tie imps if I get overrun, or if my DJN is bobmed then I can continue the clear mostly functional. It's a continuous forward DAT and backward DJN.F combo which will run until time runs out. As you can see, I first learned about this style of coreclear from Phosphorus, but the same code is in quite a lot of other warriors as well. Well, that's about it for the secrets of Koolaid II v0.1. I'm working on a new version now, but it's still undergoing refinements and is not ready to be submitted to the hill yet, much less be released here. I promise to release it eventually though... I hope that at least a few of you have learned something interesting, like why SPL 0/JMP -1 bombs just don't cut it anymore! Anyway, if anyone has any questions or comments, I'd love to hear them. Oh, and if anyone wants source to any earlier version of Koolaid (before it became Koolaid II) you can just ask and I'll send it to you. The old ones didn't have the .5c bombing conversion in them yet and used the Exodus bomb instead, but they still may be useful to someone...