Redcoders Frenzy   

The Code Creator's "Frankenstein" Round

Organiser: Sascha Zapf


Rules:

Hill spec:

Coresize   : 8000
Maxprocess : 8000
Cycles     : 80000
Lenght     : 100+
Distance   : 500
Rounds     : 250 Round Robin
pSpace     : 500
Two entry's for each participant.

I hope this round is tricky enough to break the Summerhole of CW.

For your entry you can choose one of three instruction-pools. Out of this pool you must create a Warrior. In the creators code all instruction are allowed, but the a-field (the source) must always be one of the instructionpools labels ( PA1, PB1, PC4 etc ). Note the magic of the immediate-adressing!

Example:
mov.i $PB1,label+2
or
add.ab *PB4,label+9
Exception from this is the p-switcher code.

If your first instruction is called start, then between start and start+500 you can do anything you want. But after start+500 until start only read-access is allowed. Note that predrement or postinkrement reading is even a write-access.

Shortcut's
Instruction-pool-instruction : A
Creator-code-instruction : B
Created-warrior-instruction : C
The last instruction of the creator must be a
jmp $....
At the moment the execution is on this instruction all instructions A and B, except the jmp-instruction must be deleted. It's allowed to overwrite A or B with C. It's allowed to embed A in C. Means
CCCCCCCAACCCCCC
is allowed.

For each entry you have 15 actionpoints (AP). After choosing and copy'n'paste the pool to your source you can do some changes at it. Take the possible change and it's cost from the list below.
======= I M P O R T A N T =====================
Each not used AP will be added to entry's score
===============================================
Actions:
============================================

Flip modifier : A -> B -> A
                AB -> BA -> AB
                F -> X -> F
Cost 2 AP

============================================

Flip adressing mode : # -> $ -> #
                      * -> @ -> *
                      { -> } -> {
                      < -> > -> <

Cost  2 AP

============================================

Flip instruction : add -> sub -> add
                   seq -> sne -> seq
                   jmz -> jmn -> jmz
                   div -> mul -> div
                   dat -> nop -> dat

Cost  4 AP

============================================

Change modifier :  Cost  3 AP
Change addressing mode : Cost 4 AP
Change instruction : Cost 9 AP

============================================

Swap two constants : Cost 2 AP
Swap two instructions : Cost 3 AP

============================================

Increase entry's length for 5 instruktions : Cost 2 AP

============================================

Save B-instruction from clear : Cost 1 AP
( Last means that more than the jmp-instruction can be visible at the
end of creators code ). Example

Use this action two times, it's allowed that following snippet is
visible

spl 1
spl 1
spl 1
jmp $...

============================================
Please comment each action in your entry's source.

Example:
;Flip modifier of A-field PB01 : n points
;Swap constants A:PB04 with B:PB03 : n points
;Change instruction PB8 to spl : n points
Here are the pool's
; ========================
; Pool A - 10 Instructions
; ========================

PA00   spl    $  199 , #   17
PA01   jmp    @   11 , <   47
PA02   mov.i  *   -3 , }   -3
PA03   mul.ab #  367 , $    0
PA04   spl    @  -10 , #   10
PA05   mov.i  > 2667 , }   -5
PA06   mov.i  # 1143 , $   -2
PA07   mod.f  $   -1 , $   16
PA08   sne.b  $   22 , $ 3044
PA09   sub.a  $    0 , $ 2365

; ========================
; Pool B - 15 Instructions
; ========================

PB00   spl    @    1 , # 2667
PB01   mov.i  #    2 , * 1143
PB02   dat    <    3 , <  889
PB03   sne.i  < 1000 , @ 1006
PB04   seq.i  <    4 , $   17
PB05   add.f  $    5 , $    7
PB06   jmp    @    6 , <   61
PB07   jmz.f  $   -6 , >   95
PB08   mov.i  *   -5 , <   13
PB09   djn.b  $   -4 , #    0
PB10   spl    # 3044 , # 2365
PB11   mov.ab <   -3 , $   12
PB12   slt.a  $   -3 , $   -9
PB13   mov.i  >   -2 , }   -8
PB14   jmp    $   -1 , {   -7

; ========================
; Pool C - 25 Instructions
; ========================

PC00   spl    @    3077 , #       2
PC01   spl    $      -3 , #       3
PC02   mov.i  >      -1 , }      -1
PC03   mov.i  }      22 , >       5
PC04   dat    <    2667 , <    5334
PC05   mov.ab #       0 , >       7
PC06   sne.i  $    3044 , $    3364
PC07   sne.x  $      20 , $      11
PC08   seq.f  *    1143 , *      13
PC09   seq.b  $    1203 , <      17
PC10   mov.i  $    2376 , $      -7
PC11   mov.ab $       4 , @      19
PC12   jmz.f  $       1 , $      23
PC13   djn.x  $    1111 , <      29
PC14   djn.a  $      -4 , #    1000
PC15   spl    #      12 , #      31
PC16   add.ba #    2365 , $      -3
PC17   add.x  $       0 , $      37
PC18   slt.a  $     889 , $ (joker)
PC19   jmp    $   -2667 , $      41
PC20   mul.ab #      -8 , $      43
PC21   mov.i  #    3315 , *      47
PC22   mov.i  #      -1 , $      53
PC23   spl    $ (joker) , <    2936
PC24   jmn    $      -2 , @      59
* (joker) constants can be choosed by you.

Please notify: You have to send your entries to Sascha Zapf (nc-zapfsa@netcologne.de)



FAQ:

puhh, these rules are to hard...I'm going to explain most most the frequently asked questions here...

1) Must i use the hole pool or can i get only the instruction i need ?

Once choosen you must include the hole pool into your source.

2) Where should i include the pool, before or after the other code.

You can include the pool where ever you wan't

3) Parts of my entry are possible ?

You can have one of the standart p-switcher ( switch on loss, switch on tie/or loss oder p^3 etc ) With that you are only allowed to jump to different code creators. Surewin technology is not allowed!

Instead of a switcher you can have code that not creates a warrior directly, but is used to get constants or so. This code must have one of the pool labels in each instructions a-field.

Example: If you won't to create an decoy in your +500 zone, you must do it with the help from the pool. Example.

If you have pool b you can do something like this.

create_decoy    for 5
                mov.i PB10,>PB07 
                rof
This decoy will be seen as created code and must not be cleared.

The same if you want to scan for enemy 500er zone. That will be a little bit tricky, but you can use pointer in the pool to form a loop in your code. ( pool's code must be placed 20 instruction you this code. )

fast_look       mul.ab  $PB02, $PB12    ; to set b-field as jmz-pointer
sc_loop         add.ab  $PB05, $PB04
                jmz.f   @PB12, @PB04    ; where PB12 points to sc_loop
                ; target pointer at PB04.b
One or more creators: In each a-field of the creators code must be one of the pools labels. Targets can be the pool or the corecells where you create your warrior.

After creating you must clear everytihing but the created warrior, the last "jmp" to that warrior and each instruction whisch is saved by an AP

4) Which parts are under the +500 writerestriction

Each part, the switcher ( if you use one ), the creators code, or the clear code is only allowed to write in the 500 cell from your first instruction. The created warrior has no writelimits.

5) Must i use all AP's

No, saved AP are added to your points after fight.

6) If i have saved some instructions from the clear with my AP, can they be part of my warrior ?

No, that is not allowed.

7) Does the Pool have to appear in the order given, or can it be permuted?

You must include the pool in it's orginal order.

8) Creator's a-field must point into the pool. But is it allowed that b-field are pointing in the pool to? Can i modify the pool during the creation ?

Yes that is allowed.


O.K, i hope i have answered the most question..If not fell free to send entrys to me that i can check your idea's



Results:

#NameAuthor W%L%T%ScoreAP%
1Recon-structedChip Wendell 613181910100.00
2LuoG.Labarga 482923167489.52
3Bride of RoPChip Wendell 3210581541186.38
4PolyethyleneRoy van Rijn 351451153281.15
5Polish Traditional PaperLukasz Adamowski 343135137674.86
6Junkyard GuyZul Nadzri 221068134271.20
7Frankenstein's ImpJoshua 169751231170.15
8TuberclesZul Nadzri 345115117262.30
9SpeedballRoy van Rijn 284230114562.30
10Lord of the bricksG.Labarga 162856104858.63
11BeingLukasz Adamowski 154541861552.87
12igor's two thumbsel kauka 20631777442.40