Return Of The Jedimp is a paper/imp with an embedded vortex launch which first entered the Pizza 94 hill in July 1996. The most successful version entered the hill in October 1996 and survived 357 challenges before being pushed off in January 1998.

;redcode-94
;name Return Of The Jedimp
;author John K W
;strategy Return Of The Jedimp with Q^2 scan...
;strategy v.q4 - altered engine.  new qscan.
;strategy v.q52 - fixed spacing and qscan better
;assert 1

org start

step equ 12             ; gap between qbombs
strafelen equ 4         ; coverage area = step*strafelen*3

bomb    dat <1, step
qstep	dat -step, 2*step

;*************** QSCAN

qs    equ   10

QS1   equ   (100)
QS2   equ   (3*QS1)
QS3   equ   (6*QS2)
QBASE equ   (tab+300)

SIG01 equ   a01
SIG02 equ   {a01
SIG03 equ   }a01
SIG04 equ   >a01
SIG05 equ   <a01
SIG06 equ   a01

start   seq     QBASE+QS2*0+QS1*0, QBASE +QS2*0 +QS1*0+QS3
        jmp     aaa,  SIG01
        seq     QBASE+QS2*1+QS1*0, QBASE +QS2*1 +QS1*0+QS3
        jmp     a01,  SIG02
        seq     QBASE+QS2*2+QS1*0, QBASE +QS2*2 +QS1*0+QS3
        jmp     a01,  SIG03
        seq     QBASE+QS2*3+QS1*0, QBASE +QS2*3 +QS1*0+QS3
        jmp     aaa,  SIG04
        seq     QBASE+QS2*4+QS1*0, QBASE +QS2*4 +QS1*0+QS3
        jmp     aaa,  SIG05
        seq     QBASE+QS2*5+QS1*0, QBASE +QS2*5 +QS1*0+QS3
        djn.f   a01,  SIG06

        seq     QBASE+QS2*0+QS1*1, QBASE +QS2*0+QS1*1+QS3
        jmp     a02,  SIG01
        seq     QBASE+QS2*1+QS1*1, QBASE +QS2*1+QS1*1+QS3
        jmp     a02,  SIG02
        seq     QBASE+QS2*2+QS1*1, QBASE +QS2*2+QS1*1+QS3
        jmp     a02,  SIG03
        seq     QBASE+QS2*3+QS1*1, QBASE +QS2*3+QS1*1+QS3
        jmp     a02,  SIG04
        seq     QBASE+QS2*4+QS1*1, QBASE +QS2*4+QS1*1+QS3
        jmp     a02,  SIG05
        seq     QBASE+QS2*5+QS1*1, QBASE +QS2*5+QS1*1+QS3
        djn.f   a02,  SIG06

        seq     QBASE+QS2*0+QS1*2, QBASE+QS2*0+QS1*2+QS3
        jmp     a03,  SIG01
        seq     QBASE+QS2*1+QS1*2, QBASE+QS2*1+QS1*2+QS3
        jmp     a03,  SIG02
        seq     QBASE+QS2*2+QS1*2, QBASE+QS2*2+QS1*2+QS3
        jmp     a03,  SIG03
        seq     QBASE+QS2*3+QS1*2, QBASE+QS2*3+QS1*2+QS3
        jmp     a03,  SIG04
        seq     QBASE+QS2*4+QS1*2, QBASE+QS2*4+QS1*2+QS3
        jmp     a03,  SIG05
        seq     QBASE+QS2*5+QS1*2, QBASE+QS2*5+QS1*2+QS3
        djn.f   a03,  SIG06

        jmp     evopac          ;nothing found

        dat     1*QS2,  4*QS2+QBASE-ptr
tab     dat     0*QS2,  0*QS2+QBASE-ptr
        dat     2*QS2,  3*QS2+QBASE-ptr

a03     add     #QS1,   @a01
a02     add     #QS1,   @a01
a01     add.ab  tab,    tab
aaa     mov.ba  @a01,   ptr

        sne     DEAD,   *ptr  ;which of the two?
        add.a	#QS3,   ptr

	add.ab	ptr,	ptr

qbrun   mov 	bomb, 	@ptr
	mov 	bomb, 	*ptr
ptr     mov 	-0, 	@step
	add.f	qstep, 	-1
        djn     qbrun,  #strafelen
	jmp	evopac

;*************** EVOPAC

DEAD
ded for 32
dat 0, 0
rof

d2    equ 1143
TSTEP equ 1751
bstep equ 1819 ;2283 ;1997
boot  equ 1700-(80+15)*4-1

evopac  spl     1
        spl     1
        spl     1
        mov     <1,     {1
        jmp     boot,   imp2+1
evol:   spl     @evol,  }TSTEP
        mov.i   }evol,  >evol
evoli:  spl     #d2,    bstep-1
        mov     b,      >2
        add.f   evoli,  j
j:      jmp.f   imp2-d2*8, {-6+bstep
b       dat     <1,     1
imp2    mov.i   #d2,    *0