Diferencia entre revisiones de «Imp»

De FdIwiki ELP
Saltar a: navegación, buscar
 
Línea 35: Línea 35:
  
  
Algunos guerreros optan por mantener alarmas que les avisen de modificaciones realizadas por otros guerreros. Esto les permite prepararse contra imps y al mismo tiempo poder responder a guerreros de otra naturaleza con pautas similares. Este es el caso del dwarfscout.
+
Algunos guerreros optan por mantener alarmas que les avisen de modificaciones realizadas por otros guerreros. Esto les permite prepararse contra imps y al mismo tiempo poder responder a guerreros de otra naturaleza con pautas similares. Este es el caso del dwarfscout, el cual se copia en otra localización cuando detecta que un guerrero enemigo está atacando zonas cercanas, por lo que es muy eficaz contra imps.
 
+
;redcode
+
 
+
;name DwarfScout
+
;version 2
+
;author Marcus
+
;date 2004-Feb-05
+
+
;strategy waits for dwarfy attack and dodges while dwarfing
+
 
+
 
+
ORG  EntryPoint
+
 
+
 
+
FSIZE EQU 9 ; field size
+
FDIST EQU 473 ; field distance
+
 
+
DSTEP EQU 5 ; dwarf step size
+
 
+
 
+
fUptr DAT #0, #0 ;watch Pointer to Up-field
+
dUptr DAT #0, #0 ;watch dwarf Up pointer
+
rlSptr DAT #0, #0 ;watch pointers for relocation
+
rlTptr DAT #0, #0 ;watch
+
 
+
EntryPoint
+
MOV.I dwarfLoop, dwarfKillSave
+
 
+
FIRST ; relocate begins with the following instruction
+
initFgenerate MOV.AB #-1*FDIST, fUptr
+
MOV.AB #FDIST, fDptr
+
 
+
generateFloop MOV.I FCODEu, <fUptr
+
MOV.I FCODEd, >fDptr
+
CMP.AB #FDIST+FSIZE, fDptr
+
JMP generateFloop
+
 
+
SPL dwarfInit
+
 
+
restartVerify MOV.AB #-1*FDIST, fUptr
+
MOV.AB #FDIST, fDptr
+
verifyFloop CMP.I FCODEu, <fUptr
+
JMP alertUfield
+
CMP.I FCODEd, >fDptr
+
JMP alertDfield
+
CMP.AB #FDIST+FSIZE, fDptr
+
JMP verifyFloop
+
JMP restartVerify
+
 
+
dwarfKillSave DAT.I #0
+
dwarfInit MOV.I dwarfKillSave, dwarfLoop
+
MOV.AB #-MINDISTANCE, dUptr
+
MOV.AB #MINDISTANCE, dDptr
+
dwarfLoop MOV.I BOMBu, @dUptr
+
MOV.I BOMBd, @dDptr
+
SUB.AB #DSTEP, dUptr
+
ADD.AB #DSTEP, dDptr
+
JMP dwarfLoop
+
 
+
alertUfield MOV.A #-FDIST-MINDISTANCE, rlDelta
+
JMP relocate
+
 
+
alertDfield MOV.A #FDIST+MINDISTANCE, rlDelta
+
 
+
relocate MOV BOMBd, dwarfLoop  ; save CPU time
+
MOV.AB #1+LAST-rlSptr, rlSptr ; initialize pointers
+
MOV.AB #2+LAST-FIRST, rlTptr
+
ADD.AB rlDelta, rlTptr ; add distance param
+
relocLoop MOV.I <rlSptr, <rlTptr
+
CMP.B rlSptr, #FIRST-rlSptr
+
JMP relocLoop
+
JMP @rlTptr
+
 
+
BOMBu FCODEu DAT.X <667, $766 ;watch recognition code Up-field
+
LAST ; relocate area ends with next instruction
+
BOMBd FCODEd DAT.X <776, $677 ;watch recognition code Down-field
+
 
+
rlDelta DAT #0 ;watch relocation distance
+
dDptr DAT #0, #0 ;watch dwarf Down pointer
+
fDptr DAT #0, #0 ;watch pointer to Down-field
+
 
+
END
+

Última revisión de 18:59 25 ene 2017

Imp
caption
Información general
Imp Guerrero más simple

Los Imp se entregan en cuerpo y alma al objetivo de supervivencia. Su comportamiento consiste en copiarse a la instrucción siguiente continuamente garantizando así su supervivencia hasta encontrar una sentencia DAT. Si no se evita, un Imp puede llegar a llenar todo el Core transformando a los otros guerreros en Imp a su vez. Sin embargo, presenta el problema de que le es imposible ganar una batalla consiguiendo únicamente un empate como su resultado óptimo.


Código de ejemplo: Imp

MOV 0, 1

Debilidades

Al ser tan simple, hay counters muy específicos para el mismo. La más eficaz contra los mismos es la Imp Gate, pero las básicas son inútiles contra otros tipos de guerreros.

jmp 0, <-2 (Imp Gate)


Algunos guerreros optan por mantener alarmas que les avisen de modificaciones realizadas por otros guerreros. Esto les permite prepararse contra imps y al mismo tiempo poder responder a guerreros de otra naturaleza con pautas similares. Este es el caso del dwarfscout, el cual se copia en otra localización cuando detecta que un guerrero enemigo está atacando zonas cercanas, por lo que es muy eficaz contra imps.