Zitat von Lukasz Adamowski <corewars@[EMAIL PROTECTED]
>:
> Hi!
> I've tried to write something that decodes position of pointer in
> q-scan, not the pointer itself. If we do it we won't have to look for
> good parameter values and worry about separation etc. My math is not
> very complicated. It goes like this:
> My q-scan doesn't jump. Instead of it it bombs scanned location if it's
> suspicious. So it's a q-shot rather... Anyway, MOV instruction which is
> used for bombing can modify one field in decoding code. There are 5
> possible modifications with modes: A-field increment, A-field decrement,
> B-field increment, B-field decrement and no modification. OK, so I
> wanted to have two numbers, one for A-field and one for B-field. I
> wanted them to give five different values when modificated. I have used
> numbers 13 and 31. Both can be incremented or decremented and then
> decoded by multiplying, so we have pairs like this:
> 13 * 30 = 390 = 78 * 5 + 0
> 13 * 32 = 416 = 83 * 5 + 1
> 12 * 31 = 372 = 74 * 5 + 2
> 13 * 31 = 403 = 80 * 5 + 3
> 14 * 31 = 434 = 86 * 5 + 4
> Then we would like to know which of these values comes from which MOV
> instruction. Simply dividing modulo 5 we get values from 0 to 4.
> Multiplying by 3 we can get offset in q-scan code where to pointer to
> scanned location is.
> One more thing is to find out which of scanning pair (SNE or SEQ). I use
> modification of scanning pointer in MOV instruction which then is used
> as additional offset. It is decoded in peculiar way, but it works.
> There are some advantages and disadvantages of this idea. First: it
> bombs immediatly instead of jumping and decoding, but it always takes
> full scan even if found something early. Second: scanned locations can
> be chosen almost randomly by author, there is no specific values set
> which can be used only. But on the other hand decoding of the offset is
> pretty long and slow. I guess it can be better, but I have no motivation
> for using more complicated math. ;] Third: due to multiple found
> locations possible decoding can make errors. Fourth: there is no
> switching to another strategy if nothing is found.
> I also have no idea how this warrior acts in real battles now. I might
> send it to KOTH but even without it I know clear (what it actually is)
> won't do good against papers on the hill.
> Anyway maybe my idea will seem interesting for some of you, feel free to
> exhaust. Maybe mixing it with other known coding/decoding methods will
> be successful. Here is the code:
>
> ;redcode
> ;name Q-Shot
> ;author Lukasz Adamowski
> ;assert CORESIZE==8000
>
> ptr3 dat $0, $0
>
> FOR 5
> dat $0, $0
> ROF
>
> clear spl #0, #0
> mov bomb, >ptr3
> mov bomb, >ptr3
> djn.f $-1, >ptr3
>
> FOR 60
> dat $0, $0
> ROF
>
> bomb dat <2667, <15
> boot
> sne $3800, $3500
> seq >1, $4200
> mov.i <ptr1, $4600-2 ; 13 * 30
> sne $5300, $5000
> seq >1, $5700
> mov.i >ptr1, $6100-2 ; 13 * 32
> sne $6800, $6500
> seq >1, $7200
> mov.i {ptr1, $7600-2 ; 12 * 31
> sne $800, $400
> seq >1, $1200
> mov.i @[EMAIL PROTECTED]
; 13 * 31
> sne $2300, $2000
> seq >1, $2700
> mov.i }ptr1, $3100-2 ; 14 * 31
> ptr1 mul.ab #13, #31
> mod.ab #5, $ptr1
> mul.ab #3, $ptr1
> add.b $ptr1, $ptr2
> mod.ab #100, @[EMAIL PROTECTED]
> add.b @[EMAIL PROTECTED]
> add.ab #-100, $ptr2
> mov.b @[EMAIL PROTECTED]
> ptr2 jmp clear, $boot+2 ; where the q-scan table starts
>
> end boot
>
> Greetings!
> Lukasz Adamowski
Some month Ago i've written som,ething based on the same idea. First try's
are
luca and Dualshock on 94nop. Luca is Hullab3loo only with changed qscan.
Later
today i will post some snippets..
Sascha
------------------
Powered by NetMail


|