DarwinBotsManual
Abrir la app EnglishEN

Memoria (memloc, memval y genética)

Las direcciones para espiar la memoria de otro bot (por la vista o por un lazo) y las de la memoria genética, la que pasa de padres a hijos.

DirecciónSysvarTipoResumen
0Dirección 0InternaUna celda interna que el ADN no puede leer ni escribir: el motor la usa para desviar los ataques de veneno y toxina dirigidos a .delgene.
473.memvalSentidoEl contenido de una celda de la memoria del bot que estás viendo; la celda la elegís con .memloc.
474.memlocComandoElige qué celda de la memoria del bot que ves se copia en .memval.
475.tmemvalSentidoEl contenido de una celda de la memoria del bot atado; la celda la elegís con .tmemloc.
476.tmemlocComandoElige qué celda de la memoria del bot atado se copia en .tmemval.
971-975Memoria genética instantánea (971-975)Entrada y salidaCinco celdas sin nombre que el hijo recibe copiadas del padre en el momento de nacer.
976-990Memoria genética diferida (976-990)Entrada y salidaQuince celdas sin nombre que el hijo recibe del padre de a una por ciclo, mientras siga atado a él por el lazo de nacimiento.

Este grupo junta tres cosas que tienen que ver con la memoria del bot más allá de sus propias variables.

Espiar la memoria de otro. Dos pares de sysvars te dejan leer una celda cualquiera de la memoria de otro bot. Con .memloc elegís la dirección y en .memval aparece lo que tiene el bot que estás viendo; con .tmemloc y .tmemval es lo mismo, pero con el bot que tenés atado por un lazo. Las dos direcciones (memloc y tmemloc) son de configuración: las escribís una vez y quedan.

El uso más común en el Bestiario es reconocer a los de tu especie: si apuntás .memloc a .dnalen, .memval te dice el largo del ADN del otro, y lo comparás con el tuyo. Así lo hace, por ejemplo, EyeBot de Moonfisher:

' Una sola vez: espiar el largo del ADN del bot que veo
cond
*.memloc 0 =
start
.dnalen .memloc store
stop

' Si lo que veo tiene mi mismo largo de ADN, la celda 50 vale 1
cond
*.eye5 0 >
*.memval *.dnalen =
start
1 50 store
stop

También sirve para leer variables privadas de un aliado (su celda 50, por ejemplo) o lo que el otro ve con sus ojos.

La memoria genética. Las celdas 971 a 990 no tienen nombre, pero el motor las copia del padre al hijo: las 971–975 al nacer, y las 976–990 de a una por ciclo mientras el hijo siga atado a su padre. Junto con el .timer, son lo único de la memoria que se hereda; la explicación completa está en Memoria libre y epigenética.

La dirección 0. No la alcanza el ADN; el motor la usa como basurero para los ataques que apuntan a .delgene. Ver Dirección 0.