;redcode-odd ;name Son of Vain as probe ;author David Houston ; (Real author: Oversby/Pihlaja) ;assert 1 load0 z for 0 rof ofs equ (-2) ; offset boot distances by this much. ; stone constants step equ 6457 ; primary step hop equ 3643 ; decr. ofs from bomb dbofs equ 9 ; bomb distance from stone tgt equ 2 ; first mutation target time equ 2293 ; bombs before first mutation sdist equ (2599+ofs) ; boot distance ; clear constants dgate equ (dclr-9) dwipeofs equ (-947) ; offset of clear trail from stone ddist equ (7328+ofs) ; boot distance dmopa equ <2667 ; mop a-field ; spin constants ldist equ (7426+ofs) ; boot distance ldecoy equ (5956+ofs) ; decoy distance idist equ (7471+ofs) ; imp trail dist. ; qscan constants a1 equ 3922 ; factors and scan offsets a2 equ 1999 b1 equ 609 b2 equ 6686 b3 equ 4763 c2 equ 2149 d equ 5014 ; qbomb constants qrep equ 13 ; repeats of bomb loop qinc1 equ 7 ; attack step qhop equ 60 ; offset of bomb ;;-- primary boot ;; boot spl misc , >b1 ; start secondary boot t2 spl 1 , >b2 ; t2 = qscan decode table spl 1 , >b3 mov hop , >1 ; dat bomb for stone dmop dat.a dmopa , dclr+8-dgate ; dat bomb for clear dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dsrc dclr spl #0 , 4 spl #0 , {dgate mov dgate+2 , >dgate djn.f -1 , >dgate dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 ;;-- qscan body ;; qscan seq qb + d , qb + d + b2 jmp q1 sne qb + d * a1, qb + d * a1 + b2 seq a1 ; q0-1 and boot-1 t1 jmp boot , >a2 ; must be dat 0,0's. ;;-- stone ;; spl0 ssrc ;spl 0 , 0 st spl 0 , 4 mov -1+dbofs, @2 add #step , @-1 djn.a @-1 , *st+(tgt-hop)-(step*time) dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 ;;-- misc. boot ;; ; bmbdist: address of stone bomb. ; gatedist: address of clear gate. ; wipedist: address of clear wipe start. bmbdist equ (sdist+dbofs) gatedist equ (ddist+dgate-dclr) wipedist equ (sdist+dwipeofs-ddist+dclr-dgate) misc mov imp , load0+idist mov db , load0+bmbdist pmop mov dmop , load0+gatedist+2 mov spl0 , {sdst mov dmop ,