;redcode ;name Slimy Time Vamp ;author Philip Thorne ;strategy John Metcalf 2002 Tournament Round 2, Warrior 1 ;strategy Qbomb (restricted range)/Vamp (dual pit)/Clear(s) ;assert 1 ; (CORESIZE==55440) ; (MAXPROCESSES==8) ; (MAXLENGTH==200) && (MINDISTANCE==200) STEP EQU (-12104) ANTIMP EQU 34117 MSIZ EQU (8) PTR EQU (fang+STEP) MSPACE EQU for MSIZ EQU dat 0, 0 EQU rof inc EQU pit ;assert (STEP % MSIZ) == 0 SA EQU (STEP*(CORESIZE/MSIZ)/2) fang: jmp *STEP-(fang-PTR)+SA, -STEP-SA vamp: mov.i fang, >fang mov.i vbmb, }fang add.f inc, fang jmz vamp, PTR spl sclr cptr: jmp dclr, (fang+MAXLENGTH+1) + (CORESIZE/4) dat 0, 0 ;== MSPACE MSPACE ;=== tsclear EQU (sclr) sptr EQU (sclr) dat 0, 0 sclr: spl #sbmb2, <((dclr+2)-tsclear) + (MAXLENGTH) mov.i *sptr, >sptr djn.f -1, ((dclr-dptr+3)+ (MAXLENGTH-dclr)) dat 0, 0 dbmb: dat ((dclr-sptr)+3) dat 0, 0 dclr: mov.i dbmb, >dptr jmp dclr, >sptr dat 0, 0 ;=== MSPACE ;=== ;The pits are mostly passive to reduce accidental overruns. dat 0, 0 dat 0, 0 dat 0, 0 pit: spl #STEP-1, #-STEP-1 spl pit2, >PTR spl #0, #0 rip: spl -1, {(CORESIZE/4) spl -1, >-1 ;Next cell is bombed to close pit ;== MSPACE ;== ;Second pit incase first hit/cut-short. Small to drive 'rip' dat 0, 0 pit2: spl #0, #0 spl -1, >rip jmp pit2 for MSIZ-3 dat 0, 0 rof ;== MSPACE MSPACE ;== vbmb: dat >1, }2 ;Tired of tweaking this ptr: jmp pit-PTR, 0 boot: mov.i ptr, PTR mov.i rip-1, PTR-1 for 1 JCNT EQU (97) ;Restrict range of qbomb so as reduce likelyhood of early djn. ;Hopefully one-shot clears will start pot-body more often too. JSTEP EQU (((CORESIZE/6) - MAXLENGTH) / JCNT) J for JCNT mov.i vbmb, <(JSTEP*J)+(MAXLENGTH-vamp) rof jmp vamp sub.a -1, -1 rof end boot