Diferencia entre revisiones de «Imp»
(Página creada con « {| border="0" class="infobox" style="width:350px; line-height: 1.4em; text-align:left; padding:.23em;border: 1px solid #B4BBC8;background-color: #f9f9f9;color: #000;margin...») |
|||
Línea 27: | Línea 27: | ||
MOV 0, 1 | 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. | ||
+ | |||
+ | ;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 |
Revisión de 19:58 25 ene 2017
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.
- 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