__ __| | ) _ \ | | \ \ / _) | __ \ _ \ / ( | | | \ \ \ / _` | __| __| | _ \ __| | | | | __/ \__ |___ __| \ \ \ / ( | | | | ( | | _| _| |_|\___| _/ _| \_/\_/ \__,_|_| _| _|\___/ _| November 30, 1994 Issue #14 ______________________________________________________________________________ _The_'94_Warrior_ is a monthly newsletter dedicated to supporting and encouraging the game of Corewars. This includes coverage of the more popular "hills" (which allow users anywhere on the Internet to compete against other users), and also by encouraging traffic in the rec.games.corewar newsgroup. The FAQ (Frequently Asked Questions) for the rec.games.corewar newsgroup is available through anonymous FTP to rtfm.mit.edu, as /pub/usenet/news.answers/games/corewar-faq.Z. There are also several tutorials on the '88 and '94 (draft) standard available on scotch.csua.berkeley.edu (128.32.43.51) that will greatly ease the process of becoming a proficient "redcoder." I would highly recommend referring to the FAQ if you are curious about exactly what Corewars is, or if you are unfamiliar with any of the terms used in this newsletter. ______________________________________________________________________________ CHANGES and CORRECTIONS: It looks as if we may soon have a version of pMARS that is capable of handling several warriors at the same time. (I, for one, would be very interested in seeing what types of warriors do well in that type of environment. :) The FAQ for the newsgroup has also been updated. Be sure to save a copy of the new one for your collection! ______________________________________________________________________________ The ICWS '94 Draft Hill: Standard: '94 Draft (with extensions) Core size: 8000 instructions Max processes: 8000 per program Duration: After 80,000 cycles, a tie is declared. Max entry length: 100 instructions The current ICWS '94 Draft hill on "Pizza": # %W/ %L/ %T Name Author Score Age 1 50/ 39/ 10 Taking names P.Kline 161 9 2 45/ 31/ 24 Torch t15 P.Kline 159 43 3 44/ 35/ 21 Stimpy 3.0 Brant D. Thomsen 154 15 4 46/ 38/ 16 HeremScimitar A.Ivner,P.Kline 153 63 5 47/ 42/ 10 Agony II Stefan Strack 152 179 6 40/ 28/ 32 Blue Funk 3 Steven Morrell 151 244 7 33/ 17/ 50 B-Panama X Steven Morrell 148 185 8 43/ 38/ 19 SJ-4 J.Layland 147 245 9 39/ 32/ 30 Rude Wind P.Kline 146 93 10 36/ 28/ 36 Blue Funk Steven Morrell 145 556 11 41/ 38/ 22 Leprechaun II Anders Ivner 144 37 12 43/ 44/ 14 Iron Gate 1.5 Wayne Sheppard 141 533 13 41/ 42/ 18 Drowning III Mike Nonemacher 140 26 14 29/ 20/ 51 Ryooki T.Hsu 138 31 15 30/ 24/ 46 Silk Warrior 1.4 J.Pohjalainen 137 186 16 39/ 43/ 18 The Spanish Inquisition Steven Morrell 134 72 17 34/ 34/ 32 Killer Instinct II Anders Ivner 133 38 18 32/ 31/ 37 Jet Black Reptile M R Bremer & Jippo 133 2 19 33/ 51/ 17 Grasp v0.1d Brant D. Thomsen 115 5 Of course, the most obvious change to this hill is the addition of Paul Kline's new warrior "Taking Names," which has been clinging to first place since its submission. ("Stimpy" has also jumped up several positions since I tacked a quick-scanner onto the front of it. Check out the hint section of this newsletter if you'd like more details! ;) ______________________________________________________________________________ The ICWS '94 Draft Experimental Hill: Standard: '94 Draft (with extensions) Core size: 55,440 instructions Max processes: 10,000 per program Duration: After 500,000 cycles, a tie is declared. Max entry length: 200 instructions The current ICWS '94 Experimental (Big) hill on "Pizza": # %W/ %L/ %T Name Author Score Age 1 46/ 32/ 22 ivscan6b J.Layland 161 35 2 47/ 36/ 17 Genocide 94x Mike Nonemacher 158 1 3 34/ 16/ 50 Big Phoenix 1.0 J.Pohjalainen 152 6 4 34/ 18/ 48 Aleph 1 Jay Han 150 33 5 44/ 38/ 19 Request-55440 Brant D. Thomsen 149 171 6 42/ 36/ 22 Stimpy v2.0 Brant D. Thomsen 148 26 7 46/ 44/ 10 Test Stefan Strack 147 7 8 43/ 41/ 16 Pyramid v5.3 Michael Constant 145 62 9 44/ 45/ 11 Rave B4.1 Stefan Strack 144 132 10 30/ 16/ 54 Big Silk Warrior 1.0 J.Pohjalainen 143 13 11 34/ 25/ 41 Variation G-1 Jay Han 142 135 12 38/ 39/ 23 Vanity IIx Stefan Strack 137 126 13 39/ 42/ 19 Fscan Jay Han 136 19 14 38/ 41/ 21 Aleph 0 Jay Han 136 34 15 30/ 27/ 43 Splash 1 Jay Han 133 136 16 29/ 26/ 45 Blue Funk Steven Morrell 133 25 17 29/ 25/ 47 NotSoBigImps James Layland 132 31 18 40/ 49/ 11 Squint Mike Nonemacher 131 109 19 31/ 31/ 38 Lucky 13 Stefan Strack 131 177 20 29/ 27/ 44 Der Zweite Blitzkrieg - 9 Mike Nonemacher 131 133 This hill is unchanged since last month. ______________________________________________________________________________ The ICWS '88 Standard Hill: Standard: '88 Core size: 8000 instructions Max processes: 8000 per program Duration: After 80,000 cycles, a tie is declared. Max entry length: 100 instructions The current Standard KotH hill on "Pizza": # %W/ %L/ %T Name Author Score Age 1 42/ 26/ 32 Yop La Boum v2.1 P.E.M & E.C. 158 56 2 44/ 44/ 13 Dragon Spear c w blue 144 78 3 32/ 21/ 47 Sphinx v5.1 W. Mintardjo 143 12 4 32/ 21/ 47 Der Zweite Blitzkrieg Mike Nonemacher 142 60 5 43/ 45/ 12 Iron Gate 1.5 Wayne Sheppard 141 109 6 40/ 41/ 19 Vanity II Stefan Strack 140 100 7 29/ 19/ 51 CAPS KEY IS STUCK AGAIN Steven Morrell 140 66 8 39/ 40/ 21 Request v2.0 Brant D. Thomsen 138 79 9 26/ 15/ 59 ttti nandor sieben 136 82 10 28/ 19/ 53 The Plauge Anonymous 136 15 11 27/ 19/ 53 NC Killer Anonymous 135 16 12 37/ 39/ 23 Christopher Steven Morrell 135 52 13 34/ 33/ 32 Annihilator v2.1 Carlos Paredes 135 3 14 27/ 18/ 55 Blue Funk 88 Steven Morrell 135 25 15 27/ 19/ 54 Night Crawler Wayne Sheppard 134 5 16 28/ 24/ 47 B-Panama V.i Steven Morrell 132 10 17 37/ 41/ 22 Titled Steven Morrell 132 2 18 26/ 19/ 55 Imprimis 6 Anonymous 132 17 19 24/ 16/ 61 Peace Mr. Jones 132 1 20 34/ 38/ 28 Keystone t21 P.Kline 131 98 The '88 hill hasn't aged much (1), but don't let that fool you. This hill is still very busy. The old standards still appear to be holding their own! ______________________________________________________________________________ The ICWS '94 Beginner Hill: Standard: '94 Draft (with extensions) Core size: 8000 instructions Max processes: 8000 per program Duration: After 80,000 cycles, a tie is declared. Max entry length: 100 instructions The current Beginner KotH hill on "Pizza": # %W/ %L/ %T Name Author Score Age 1 58/ 31/ 10 Samba2.2 Mr. Jones 185 21 2 57/ 33/ 10 Viewmaster4.0 Ryan Case 181 222 3 56/ 37/ 7 Ecstacy (XTC) Brant Thomsen 176 89 4 35/ 10/ 56 Peace Mr. Jones 160 5 5 39/ 27/ 34 Ox v1.0 Brian Zellner 150 18 6 28/ 12/ 60 Rabid Dwarfs v1.3 Brian Zellner 144 64 7 33/ 23/ 44 Slate, v0.3a Bharat Mediratta 143 143 8 40/ 37/ 23 Bloody Fang v2.1 Bharat Mediratta 142 9 9 37/ 36/ 27 AB Scanner 1.4a Chris Hodson 138 1 10 35/ 36/ 29 Green Knight v1.7 Brian Zellner 134 65 11 33/ 34/ 33 Count Zero #1 Marc Schefer 131 85 12 39/ 50/ 12 It Hari 127 206 13 26/ 25/ 49 Rubarbe et mort-vivant J.P.Laurin 126 92 14 24/ 23/ 53 War Machine v2.65 Matthias Wollnik 125 10 15 21/ 17/ 62 Paperous Mr. Jones 124 14 16 38/ 52/ 10 Cat v2.0 Tim Scheer 123 163 17 23/ 24/ 53 War Machine v2.6 Matthias Wollnik 123 11 18 25/ 30/ 45 strange carpet Erik Hughes 121 3 19 20/ 26/ 53 War Machine v2.5 Matthias Wollnik 114 12 20 18/ 28/ 54 Mostly Harmless Frank J. T. Wojcik 109 53 Congratulations are due to Mr. Jones: his program "Peace" is not only doing well on the beginner's hill, but has also made a place for itself on the "Standard" hill. (At least, I assume it's the same program.) Welcome to the Big League! ______________________________________________________________________________ HINTS and HELPS: For the hint this month, I will be discussing quick-scans. Scanning, bombing, and movement are often talked about in terms of "C", where "C" is one instruction per turn. Standard scanning techniques will allow you to scan one location every two turns, or two instructions every three turns, giving you a scanning speed of 50% or 67%. (Granted, the numbers can look even better if you account for mutilation of the core as a side effect as well.) However, with a quick-scan, you can scan at the fastest possible speed -- 2 instructions per turn, or 200%. The disadvantage is that you cannot use this scan in a loop (without reducing the speed), so even a short scan can be several instructions long. The original quick-scan, as used in Paul Kline's QuickFreeze, consists of alternating CMP (SEQ) and MOV statements. When each CMP instruction is executed, the following MOV instruction will only be executed if the two instructions compared are not equal. Each MOV instruction, when executed, will store the values for the previous comparison in a standard location. This allows you to scan two locations for every two instructions, and keep track of the last location where you found something of interest. When the series of CMP instructions is done executing, the process can then check the standard location referenced by the MOV instructions to see if any of the comparisons failed. If any did, then your program can take advantage of this knowledge by attacking whatever was found. Since what was found is very likely to be your opponent's original code, it is often possible to harm your opponent while they are still getting started. (Imp-Spirals, for example, take a long time to setup.) Below is a quick-scan that will run under the '88 standard. You may need to shorten it, as it only leaves eleven lines for the program you will execute after the quick-scan. My recommendation would be to quick-scan fewer locations if your warrior needs space for a few more instructions. ;redcode ;name Quick-Scan '88 Prototype ;author Brant D. Thomsen ;strategy Add this to the front of your warrior, ;strategy and see if it improves your score. ;assert CORESIZE == 8000 space equ (8000/81) ; Step when scanning for code. qbomb equ 6 ; Step when bombing whatever we found. scan cmp space*1+bottom, space*41+bottom mov #space*1+bottom-found, found cmp space*2+bottom, space*42+bottom mov #space*2+bottom-found, found cmp space*3+bottom, space*43+bottom mov #space*3+bottom-found, found cmp space*4+bottom, space*44+bottom mov #space*4+bottom-found, found cmp space*5+bottom, space*45+bottom mov #space*5+bottom-found, found cmp space*6+bottom, space*46+bottom mov #space*6+bottom-found, found cmp space*7+bottom, space*47+bottom mov #space*7+bottom-found, found cmp space*8+bottom, space*48+bottom mov #space*8+bottom-found, found cmp space*9+bottom, space*49+bottom mov #space*9+bottom-found, found cmp space*10+bottom, space*50+bottom mov #space*10+bottom-found, found cmp space*11+bottom, space*51+bottom mov #space*11+bottom-found, found cmp space*12+bottom, space*52+bottom mov #space*12+bottom-found, found cmp space*13+bottom, space*53+bottom mov #space*13+bottom-found, found cmp space*14+bottom, space*54+bottom mov #space*14+bottom-found, found cmp space*15+bottom, space*55+bottom mov #space*15+bottom-found, found cmp space*16+bottom, space*56+bottom mov #space*16+bottom-found, found cmp space*17+bottom, space*57+bottom mov #space*17+bottom-found, found cmp space*18+bottom, space*58+bottom mov #space*18+bottom-found, found cmp space*19+bottom, space*59+bottom mov #space*19+bottom-found, found cmp space*20+bottom, space*60+bottom mov #space*20+bottom-found, found jmn found, found ; Get out early if found something. cmp space*21+bottom, space*61+bottom mov #space*21+bottom-found, found cmp space*22+bottom, space*62+bottom mov #space*22+bottom-found, found cmp space*23+bottom, space*63+bottom mov #space*23+bottom-found, found cmp space*24+bottom, space*64+bottom mov #space*24+bottom-found, found cmp space*25+bottom, space*65+bottom mov #space*25+bottom-found, found cmp space*26+bottom, space*66+bottom mov #space*26+bottom-found, found cmp space*27+bottom, space*67+bottom mov #space*27+bottom-found, found cmp space*28+bottom, space*68+bottom mov #space*28+bottom-found, found cmp space*29+bottom, space*69+bottom mov #space*29+bottom-found, found cmp space*30+bottom, space*70+bottom mov #space*30+bottom-found, found cmp space*31+bottom, space*71+bottom mov #space*31+bottom-found, found cmp space*32+bottom, space*72+bottom mov #space*32+bottom-found, found cmp space*33+bottom, space*73+bottom mov #space*33+bottom-found, found cmp space*34+bottom, space*74+bottom mov #space*34+bottom-found, found cmp space*35+bottom, space*75+bottom mov #space*35+bottom-found, found cmp space*36+bottom, space*76+bottom mov #space*36+bottom-found, found cmp space*37+bottom, space*77+bottom mov #space*37+bottom-found, found cmp space*38+bottom, space*78+bottom mov #space*38+bottom-found, found cmp space*39+bottom, space*79+bottom mov #space*39+bottom-found, found cmp space*40+bottom, space*80+bottom mov #space*40+bottom-found, found jmz warrior, found ; Don't Quick-bomb if nothing found. found cmp bottom, 0 ; Find which instruction is not blank. jmp 2 ; CMP / JMP 2 is the '88 equivalent of SNE. add #40*space, found ; Goto second location if first is blank. forward mov jump, @found ; Use a SPL/JMP bomb. mov split, found mov.I jump, @found add #(qbomb-1), found jmn.F forward, @found sub #(2*qbomb), backwd ; Don't re-bomb over forward-scan. backwd mov.I jump, 0 mov.I split,