From news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!uwm.edu!vixen.cso.uiuc.edu!newsfeed.internetmci.com!solaris.cc.vt.edu!news.new-york.net!news.stormking.com!mpn@ifm.liu.se Tue Jul 23 20:44:38 1996 Article: 5655 of rec.games.corewar Path: news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!uwm.edu!vixen.cso.uiuc.edu!newsfeed.internetmci.com!solaris.cc.vt.edu!news.new-york.net!news.stormking.com!mpn@ifm.liu.se From: Magnus Paulsson Newsgroups: rec.games.corewar Subject: airBag Technology Date: 22 Jul 1996 10:53:27 -0400 Organization: Storm King Ind. Inc. Lines: 130 Sender: server@news.stormking.com Distribution: world Message-ID: <199607220918.LAA20914@watt.ifm.liu.se> Reply-To: mpn@ifm.liu.se NNTP-Posting-Host: valhalla.stormking.com Originator: corewar-l@stormking.com Since airBag is soon going to drop of the hill I might as well publish it :-( airBag is a renewed atempt to make a bomber that can get a hit in the engine and then go into coreclear (or as in airBag a imps/d-clear). (airBag lessens the impact) The whole idea is to use clever timing and decrement/increment to enable the bombing engine to know when it has ben hit by some bomb. In airBag I use two processes running in different loops giving a 1/2 c bombing performance in 6 bytes. start spl two one add.f step,ptr ptr mov.i hit,@hit+step jmz.f one,check jmp cclear ... dat.f 10,32 check dat.f 0,1 ;first changed by process in one to dat.f 0,0 (predec), ;then by two to dat.f 0,1 (postinc). If by some reason ;the timing is changed the jmz.f will fall through into cclear dat.f 10,32 The code for the complete airBag is below (I've added a d-clear and two continous imp launchers). Now I continued on the same line, the above code is more or less a Tornado engine divided up in two parts, making it 3 lines longer and 1/2 c instead of 3/5c. Wouldn't it be perfect if I could have both the speed and size of Tornado and the airBag feature. There is some ways to make this. First attempt was something like: start spl #0,0 spl 3 next add.f step,ptr mov.i check which is worthless because of the timing doesn't fit and a lot of time is wasted on bombing the same spot twice and scipping spots... Second attempt was a vector launched tornado bomber! :-) Launch it like: add ;5 mov ;4,9 mov ;3,8 mov.i >check,@ptr ;2,7 jmz.f next,cptr djn.f -1,>cptr dat.f 0,0 dat.f 0,0 ;h for 14 dat.f 0,0 rof start spl two ;h one add.f st,ptr ;first part ptr mov.i hit,*hit+step jmz.f one,>check jmp imps1 dat.f 0,0 ;h for 18 dat.f 0,0 rof dat.f 1,2 hit check dat.f 0,0 ;airBag check! bmb dat.f step,1 for 14 dat.f 0,0 rof two mov.i bmb,@ptr ;second part mov.i bmb,*ptr jmz.f two,