Bma 40B
Bma 40B
v4.0 βeta
Cuaderno de Apuntes
EXPLORANDO EL INTERIOR DE BM
CONTENIDO
Introducción
1.3 Componentes de BM 3
1.3.1 Bloques y Eventos 4
[Link] Los MB, PB, OB y AB 4
[Link] Los CE 4
[Link] ¿Cómo se Localizan los Bloques en la Memoria? 5
[Link] Los Bloques y sus Dimensiones 6
[Link] Los UE (Eventos Inusuales) 6
1.3.2 Complementos gráficos 6
[Link] Gráficos 6
Estructura de estos componentes 7
Estructura de las listas: bgGrobList y fgGrobList 7
[Link] Etiquetas 7
[Link] Animaciones 7
1.3.3 Los paquetes gráficos 8
[Link] GLPacks 8
Estructura de un GLPack 8
CBGrobList 9
GLPack no estándar 9
[Link] aniSecLists (aSL) 9
2.2 El Mapa 12
2.2.1 Cargando el mapa 12
2.2.2 El tamaño del mapa en Gbuff 13
2.5 Sistema M5 17
2.6 Sistema M6 17
2.15 Inventario 21
2.15.1 Variables relacionadas 21
2.18.2 CodeInp 24
[Link] Módulos relacionados 24
4.4 Reinstalando BM 39
Este documento es básicamente una recopilación de anotaciones que he realizado durante la creación del
sistema BM. Claro que aquí las he puesto en forma más organizada y presentable que en el cuaderno
original. Además he agregado muchas cosas nuevas.
La idea es intentar explicar diversos aspectos del diseño interno y el funcionamiento de BM, tanto del
Engine como del Builder. La mayor parte de la información aquí mostrada no se encuentra en ninguno de
los otros documentos publicados anteriormente. También se explica el manejo de la librería BML, la cual
utilizo durante la compilación del código fuente.
A esta recopilación de apuntes me gusta llamarla Manual [A], por ser un manual de [A]puntes, sobre la
[A]rquitectura de BM y por tratar asuntos más [A]vanzados que en los otros documentos de BM.
Espero que este manual ofrezca ideas y reflexiones útiles para los proyectos emprendidos por el lector.
PARTE I
Aspectos Básicos
BMA- PARTE I. ASPECTOS BASICOS
BM es un sistema para crear y ejecutar determinados tipos de juegos 2D en calculadoras hp50g. Aunque
estos juegos son sencillos, pueden llegar a ser muy entretenidos. Pero lo más importante es que son muy
fáciles de crear, jugar y compartir.
Para crear juegos con BM no se necesita conocimientos sobre programación, ya que los componentes son
elegidos y configurados a través de menús, y el código se genera automáticamente.
Un aspecto fundamental del diseño de BM es que los juegos se encuentran separados del programa que los
ejecuta. Esto es lo que permite poder reutilizar dicho programa con distintos juegos.
1
BMA- PARTE I. ASPECTOS BASICOS
Cada ZxPack constituye una Zona de juego, con su mapa, enemigos, objetivos, etc.
Los AxPack no son más que un grupo de ZxPack en un solo paquete. Al inicio de la Aventura solo tienes
acceso a la primera Zona y a medida que avanzas obtienes acceso a las siguientes.
EL USUARIO DEL BUILDER DEBE RECORDAR QUE DEBE INSTALAR COMPRESOR BZ2
PARA CREAR AVENTURAS.
Si se sale de un juego por haberlo ganado se deja un TRUE en la pila en otro caso se deja un FALSE.
Este indicador (flag) lo utiliza El sistema Ax para controlar flujo al siguiente nivel.
Es una variable creada por el Engine en el directorio oculto que le dice a los módulos si se está jugando una
Aventura o un Zx o Sx. Es creada y actualizada por AxLevels, ZxLevels y SxLevels.
2
BMA- PARTE I. ASPECTOS BASICOS
El módulo CkGoalc lo utiliza para saber si gestiona el flag de control de Ax o si lo deja al módulo M1, esto
último solo para el caso de los Rx
1.3 Componentes de BM
Bloques Comunes o CB: son los que aparecen con mayor frecuencia, forman los muros o paredes.
Son los que ocupan menos memoria, así que puedes crear todos los que desees.
Bloques Móviles o MB: son aquellos que tienen la capacidad de moverse por si solos, algunos en
una ruta fija y otros para perseguir.
Bloques Push o PB: son aquellos que se mueven o se modifican al ser empujados.
Bloques Objetos OB: son los que reaccionan al ser recogidos, es decir al colocarte sobre ellos y
presionar la tecla T.
Bloques Active o AB: generalmente sirven como obstáculos y puertas que desaparecen/aparecen al
activar un interruptor.
Eventos Comunes o CE: son los componentes más potentes del juego y los que ocupan más
memoria, por lo que deben usarse con discreción.
Mensaje de Ayuda: son informaciones o sugerencias que el creador del juego proporciona el
jugador. Se accede a esta presionando la tecla H durante la partida.
Mensaje de Bienvenida: es un texto que se muestra al jugador al inicio de la partida y que sirve
como presentación o introducción al juego.
Gráficos: esta opción permite insertar a tu juego los gráficos creados con la herramienta del Builder
(opción Manejar Gráficos en el menú).
Animaciones: esta opción permite insertar a tu juego las secuencias gráficos creados con la
herramienta del Builder (opción Manejar Animaciones en el menú).
Evento de Salida: es el que dice cómo se gana el juego. Si usas por ejemplo “Llegar hasta aquí” el
jugador ganara tu juego cuando logre llegar a ese lugar.
Paquete gráfico de componentes (GLPacks): lista de gráficos utilizados por BM para representar
los componentes en la pantalla.
Paquete de secuencias gráficas (aSL): lista de varias secuencias gráficas utilizadas por BM.
3
BMA- PARTE I. ASPECTOS BASICOS
Estos datos son extraídos de ZxPack y almacenados como variables lambda en el siguiente orden:
Después de almacenar los MB, PB y OB, se continúa con los AB y los CE.
A diferencia de los otros bloques especiales, los AB solo usan cinco variables:
0- type
1- status
2- xpix
3- ypix
4- g0
[Link] Los CE
Los CE, o Eventos complementarios, son los componentes más potentes del programa, usan 32
variables:
4
BMA- PARTE I. ASPECTOS BASICOS
0 CEtype
1 CEstatus
2 CEtest
3 CEprogT
4 CEprogF
5 CEx5pix
6 CEy5pix
7 CEx4pix
8 CEy4pix
9 CEx3pix
BINT10 CEy3pix
BINT11 CEx2pix
BINT12 CEy2pix
BINT13 CEx1pix
BINT14 CEy1pix
BINT15 CEx0pix
BINT16 CEy0pix
BINT17 CEL2
BINT18 CEL1
BINT19 CEL0
BINT20 CEc2
BINT21 CEc1
BINT22 CEc0
BINT23 CEf2
BINT24 CEf1
BINT25 CEf0
BINT26 CEg2
BINT27 CEg1
BINT28 CEg0
BINT29 CEk2
BINT30 CEk1
BINT31 CEk0
Para referirse a cualquier MB, PB, OB, AB o CE se utilizan como punteros las variables lambda de BM
llamadas actuales, que son: MBActual, PBActual, OBActual, ABActual y CEActual.
Para trabajar con un objeto (bloque o evento) determinado lo primero es hacer que la Actual
correspondiente apunte hacia él. O sea, se coloca la número de la primera variable de dicho objeto en la
Actual que le corresponde, y luego se hará referencia los distintos componentes del objeto
incrementando su Actual en la cantidad necesaria.
5
BMA- PARTE I. ASPECTOS BASICOS
Todos los bloques deben tener las mismas dimensiones. Dichas dimensiones serán las mismas del
gráfico de CBGrobList que M0 utilice para generar mapa en GBUFF:
BoxGrobH x BoxGrobW
Estas dimensiones pueden variar, pero se toma como tamaños estándar los bloques de 5x5, 7x7 y 9x9
píxeles.
El tamaño de los gráficos de Eli y sus animaciones también debe ser igual que el de los bloques.
El espacio de separación entre bloques está contenido en la variable InterBox y tiene un valor por
defecto de 1 píxel. Algunos valores de está variable no funcionan correctamente, ya que hacen que al
llegar al final del mapa Eli se salga de la pantalla.
Tómese en cuenta que el gráfico de la Bomba también debe ser igual al de los bloques.
[Link] Gráficos
Los de fondo se colocan antes que los bloques y por tanto el g0 de cada bloque es una parte del fondo.
Esto implica que al mover el bloque no afecta el fondo.
Los gráficos de fondo serán todos los que estén en bgGrobList. Ejemplo: Los gráficos de Telepuertos.
Los de sobrefondo se colocan después de los bloques y por tanto sobrescriben los bloques en GBUFF.
6
BMA- PARTE I. ASPECTOS BASICOS
donde:
gn: es el gráfico
xn: coordenada x en abuff
yn: coordenada y en abuff
fn: flag para activar y desactivar carga del gráfico
El módulo común de carga es cgLoader. Utilizado tanto por bgIni como por fgIni.
Los gráficos de fondo son manejados en el Builder por: Grb (Crear, Instalar, Recuperar, Eliminar) y son
agregados a un juego y configurados por GrbBuilder.
Para ser utilizados por el Builder, los grob deben ser instalados, lo que implica ser guardados en el directorio
oculto y agregar su nombre a la lista BMGrbList.
[Link] Etiquetas
Estas no constituyen un nuevo tipo de componente, ya que son en esencia un gráfico de fondo. Para crear
una etiqueta el módulo LabelBuilder toma una cadena de caracteres y la convierte en un grob. Luego agrega
este grob a la lista fgGrobList.
[Link] Animaciones
Existen dos tipos de animaciones: Las que se ejecutan en un ciclo y las que se ejecutan en varios ciclos.
Las secuencias gráficas que utiliza son manejadas en el Builder por Anm (Crear, Instalar, Recuperar,
Eliminar).
Las animaciones son agregadas a un juego y configuradas por AnmBuilder.
En su ejecucion utiliza los módulos siguientes:
AnmRunner: Corre un ciclo de la secuencia grafica
AnmBGroundUpdater: Cactualiza gráficos de fondo
AnmL1Runner: Corre lista L1 de acciones a ejecutar
7
BMA- PARTE I. ASPECTOS BASICOS
[Link] GLPacks
Contiene los gráficos de los bloques y de Eli, e información sobre el tamaño de dichos gráficos.
Son manejadas en el Builder por GLpack (Crear, Instalar, Recuperar, Eliminar y Editar).
Los GLPack son asignados a un juego por el módulo del Builder GLPackSelection
Los GLPack son cargados por el módulo del Engine GLPackLoader
El GLPackSelection utiliza:
GLPackStdOn
GLPackStdOff
Los GLPack y otros archivos son comunes para muchos juegos y por tanto, para reducir el consumo de
memoria, estos archivos comunes se han dejado en el Engine en lugar de tenerlos repetidas veces el los
distintos juegos.
La función de StdGClear es retirar del archivo de juego aquellas cosas que estén en el Engine, reduciendo
así su tamaño.
La función de StdGLoader es restaurar las cosas que fueron retiradas del archivo de juego por StdGClear.
Estructura de un GLPack:
{
{ "BMGLPack" "NombredePaquete" #Dimensiones #NumerodeColumnas #NumerodeFilas }
{CBGrobList}
{MBGrobList}
{PBGrobList}
{OBGrobList}
{ABGrobList}
{eNList sin dividir} (Es dividida por el módulo ListSplitter en GLPackLoader)
}
8
BMA- PARTE I. ASPECTOS BASICOS
CBGrobList:
CBtype:
#1 BoxGrob diseño 1 (Gráfico del bloque común utilizado)
#2 BoxGrob diseño 2 (Gráfico del bloque común utilizado)
#3 BoxGrob diseño 3 (Gráfico del bloque común utilizado)
#4 BoxGrob diseño 4 (Gráfico del bloque común utilizado)
#5 BoxGrob diseño 5 (Gráfico del bloque común utilizado)
#6 BoxGrob diseño 6 (Gráfico del bloque común utilizado)
#7 BoxGrob diseño 7 (Gráfico del bloque común utilizado)
#8 BoxGrob diseño 8 (Gráfico del bloque común utilizado)
#9 IndGrob
#A BombGrob (Gráfico de fondo para bombas)
#B AfterBombGrob (Gráfico de puntitos colocado luego de explosión de bombas)
GLPack no estándar
Cuando se crea un mundo con un GLPack que no es estándar, es decir que no viene incluido en el Engine,
este GLPack se incluira en el archivo del juego, es decir en el Zx o Sx, pero comprimido. Se ha creado la
variable GLPackIncluded? para indicar esta situación y se tiene la variable GLPackBZ para guardar el
GLPack comprimido.
EL USUARIO DEL BUILDER DEBE RECORDAR QUE DEBE COMPRIMIR LOS GLPacks CON
BZ2 ANTES DE INTENTAR INSTALARLOS.
Es una lista que contiene varias secuencias gráficas utilizadas por diferentes módulos
del Engine y por varios componentes.
El estándar 5x5 esta en el archivo aSLStd1. El archivo aSLStd1 esta comprimido y contiene 5 secuencias:
9
BMA- PARTE I. ASPECTOS BASICOS
La versión 4.0 de BMB consta de 287 módulos, de los cuales 177 son de BME. Algunos módulos ejecutan
su trabajo de manera independiente, pero la mayoría se auxilia de otros. Los anexos 1 y 2 contienen
información sobre los módulos de BM.
El número de variables lambda creadas por BM para un juego va a depender de la cantidad de componentes
que tenga dicho juego. Las primeras 281 variables están presentes en todos los juegos de BM. A estas se les
suma 16 por cada MB, 16 por cada PB, 16 por cada OB, 5 por cada AB y 32 por cada CE, que el juego
incluya. El anexo 3 contiene información detallada sobre todas las variables lambda de BM.
Una de las características más importantes de BM es que permite organizar los componentes de un juego en
grupos. Esto hace posible ejecutar operaciones sobre varios componentes a la vez.
Los Grupos son manejados mediante el módulo GroupsBuilder del Builder, que cuenta con las siguientes
opciones:
Agregar Componente: Sirve para agregar un componente a un grupo.
Eliminar Componente: Sirve para eliminar un componente de un grupo.
Ver Componentes: Sirve para ver cuales componente pertenecen a un grupo.
Limpiar Grupo: Sirve para eliminar todos los componentes de un grupo.
Agregar Grupo: Sirve para agregar un grupo a otro grupo (suma de grupos).
Activar/Desactivar: Sirve para activar/desactivar todos los componentes de un grupo.
Entre los nuevos componentes de grupo que se pueden agregar a un juego están:
PB: Interruptores de grupo.
PB: Interruptores de grupo por Impacto.
OB: Interruptor de grupo.
CE: Interruptor de grupo.
Un módulo muy importante aquí es TongleGroups, que sirve para invierte el estado de un grupo de
componentes, es decir, si están activados los desactiva y si están desactivados los activa.
10
PARTE II
Sistemas de BME
BMA - PARTE II. LOS SISTEMAS DE BME
Utilizaremos el término “sistema” para referirnos a un conjunto de módulos y variables de BM que interaccionan
con un objetivo común.
Obsérvese que Nciclosinc dice en cuantos ciclos se producirá una reducción de la energía de Eli.
2.2 El Mapa
Al cargar una zona del juego se debe suministrar un mapa al módulo M0. Este módulo lo coloca en
ABUFF (patalla de texto) en las coordenadas (0,0) y deja debajo de este dos zonas de igual tamaño, una
para los MB, PB y AB y otra más abajo para los OB. Por lo que se tiene lo siguiente:
12
BMA - PARTE II. LOS SISTEMAS DE BME
El mapa nunca puedes tener más de 131 píxeles de ancho, pero la altura solo esta limitada por la
memoria de la calculadora. Sin embargo, se recomienda un tamaño estándar de 39x65 píxeles, ya que
cuando el mapa es muy grande el consumo de memoria es demasiado alto y toma mucho tiempo para
cargarlo.
En una ventana normal (80x131) tiene cuatro veces el tamaño el tamaño estándar 39x65.
El Módulo M0 pasa luego a la etapa que consume más tiempo de todo el proceso de carga del juego:
Crea una ampliación del mapa en Gbuff.
Este proceso consiste en escanear el mapa (Abuff) píxel por píxel y colocar un bloque común por cada
píxel activado en su lugar correspondiente. Las dimensiones del Gbuff fueron determinadas
previamente multiplicando las del mapa por las de un bloque común.
13
BMA - PARTE II. LOS SISTEMAS DE BME
Cada vez que Eli se mueve realiza un salto. Esto es: se borra el gráfico de Eli de las coordenadas en que
se encuentra y se coloca en las coordenadas de destino.
Xeli y Yeli son las coordenadas de Eli en Gbuff, o sea, las coordenadas del píxel superior izquierdo del
gráfico de Eli en Gbuff. Estas de calculan de la siguiente forma:
Coord = Píxel - 1
Ejemplos:
Si Eli está en el segundo píxel de Abuff, su coordenada es 2 - 1 = 1
Si Eli está en el tercer píxel de Abuff, su coordenada es 3 - 1 = 2
Esto se explica por el hecho de que el primer píxel tiene coordenada cero.
Cuando queremos que Eli se desplace dejamos presionada una de las teclas de dirección, si al hacer esto
observamos con cuidado veremos que luego de dar el primer salto Eli se detiene durante una fracción
de segundo, para luego continua su marcha con cierta velocidad. Este pequeño retardo es necesario
para permitir un mayor control al jugador.
14
BMA - PARTE II. LOS SISTEMAS DE BME
FMDelayOn?: Indica si el retardo está activado. Este es el flag principal. Este permite crear zonas del
mapa en la que el jugador tenga menos control del movimiento de Eli, algo así como moverse sobre un
piso resbaladizo.
FMDelay?: Indica si el retardo debe ocurrir. Este interruptor se revisa solo si flag principal está
activado.
Existe una zona de la pantalla en la que Eli se puede mover sin que se produzca desplazamiento de la
ventana, esta es llamada la zona estática de la ventana. Dicha zona queda determinada por las
constantes dW y dH.
Al presionar la tecla el Módulo M1 efectúa dos pruebas para saber si se debe desplazar la ventana:
15
BMA - PARTE II. LOS SISTEMAS DE BME
Para ayudar a que M1 funcione mas rapido se ha creado algunas constantes especiales:
XeliB = Wgbuffinpix - XJump
YeliB = Hgbuffinpix - Yjump
EW+dW = EW + dW
EH+dH = EH + dH
Esto evita tener que efectuar su cálculo en cada ciclo del Módulo M1.
Cuando Eli se acerca a los límites del mapa, a una distancia dW o dH, la ventana deja de desplazarse.
En cada ciclo del módulo M1 la variable CTbomb se incrementa en #1. Cuando CTbomb llega a #2 la
variable Tbomb se incrementa en #1 y CTbomb se reinicia. Cuando Tbomb llega a #A se ejecuta la
secuencia de detonación de bomba.
16
BMA - PARTE II. LOS SISTEMAS DE BME
2.5 Sistema M5
Es el encargado de manejar los PB, evaluando su test y ejecutando el código correspondiente. Este sistema
se activa cuando el jugador empuja un bloque. Un punto importante es que M5 no sobrescribe PBActual.
2.6 Sistema M6
Es el encargado de manejar los OB, evaluando su test y ejecutando el código correspondiente. Este sistema
se activa cuando el jugador recoge un objeto. De forma similar a M5, el módulo M6 no sobrescribe el
OBActual.
El SCMB es el encargado de manejar los MB. Este sistema se activa en cada ciclo del módulo principal M1,
y lo que hace es básicamente evaluar todos aquellos MB cuyos índices están en la lista ListMBtoRun,
evaluando su test y ejecutando los programa correspondientes.
Es el encargado de ejecutar las animaciones monocíclicas, es decir aquellas cuya secuencia gráfica se
presenta en un solo ciclo del modulo M1. (las animaciones policíclicas son manejadas por el SCCE).
17
BMA - PARTE II. LOS SISTEMAS DE BME
Me he inventado este tipo de diagrama, que nos da una idea del flujo de ejecución y nos dice los módulos
que intervienen. Aunque no se si ya se le había ocurrido a alguien.
CkDescomp (A)
GetBMver (A)
BMver (A)
ShowOnHB2 (A)
InvBG (A)
YouWinMsjStd (A)
ShowOnHB2 (A)
Ubz2 (A)
StdGLoader ToDMemList (A)
GLPackLoader aSLStd1 (A)
aSLStd2 (A)
aSLStd3 (A)
ListSplitter (A)
ToDMemList (A)
ShowOnHB2 (A)
ExpandB
ToDMemList (A)
PlayZxPack ZxPackIni ZxLoader
ToDMemList (A)
bgIni
cgLoader (A)
GMapCBBuilder ShowOnHB2 (A)
BorderGenerator ShowOnHB2 (A)
SBIni (A)
TeleportLoader (A)
M0 CEIni
WormLoader (A)
ToDMemList (A)
fgIni
cgLoader (A)
InitT&M (A)
GBuffIni (A)
CopyBox0 (A)
EliIni
eNRunner (A)
M1Rx
M1ZxSx
CloseENGN ShowOnHB2 (A)
Aquí tenemos los módulos que se ejecutan al cargar BM. El flujo de ejecución se da de izquierda a derecha y
de arriba hacia abajo para los submodulos. Los módulos que no utilizan submodulos tienen una (A) a su
derecha. Los otros se indican con una .
18
BMA - PARTE II. LOS SISTEMAS DE BME
Los replay permiten reproducir de manera exacta una partida ya jugada. Pudiera dar la impresión de que se
trata de un video, pero no lo es. Lo que se guarda es realmente una lista de las pulsaciones de teclas que
hace el jugador, y del estado de todas las variables del juego al momento de iniciar la grabación.
19
BMA - PARTE II. LOS SISTEMAS DE BME
El módulo Save crea una copia de todas las variables del juego y la guarda en el ZxPack. Para dicha copia
invoca el módulo BMBackup. Luego comprime el archivo obtenido y lo coloca en el lugar correspondiente
del ZxPack/AxPack.
Creé este sistema para monitorear el consumo de memoria y la velocidad del módulo principal de BM.
20
BMA - PARTE II. LOS SISTEMAS DE BME
2.15 Inventario
El módulo Inventory recopila información el inventario de Eli, y la presenta en forma organizada al jugador.
También gestiona esta función durante la grabación y reproducción de los replay. Durante la reproducción
de un replay, en lugar de esperar a que se presione una tecla, espera 0.5 segundos y continúa la ejecución.
21
BMA - PARTE II. LOS SISTEMAS DE BME
CkDescomp (A)
GetBMver (A)
BMver (A)
ShowOnHB2 (A)
InvBG (A)
YouWinMsjStd (A)
ShowOnHB2 (A)
Ubz2 (A)
StdGLoader ToDMemList (A)
GLPackLoader aSLStd1 (A)
aSLStd2 (A)
aSLStd3 (A)
ListSplitter (A)
ToDMemList (A)
ShowOnHB2 (A)
ExpandB
ZxLoader ToDMemList (A)
PlayAxPack AxPackIni AxLoader
ToDMemList (A)
bgIni
cgLoader (A)
GMapCBBuilder ShowOnHB2 (A)
BorderGenerator ShowOnHB2 (A)
SBIni (A)
TeleportLoader (A)
M0 CEIni
WormLoader (A)
ToDMemList (A)
fgIni
cgLoader (A)
InitT&M (A)
GBuffIni (A)
CopyBox0 (A)
EliIni
eNRunner (A)
M1Rx
M1ZxSx
CloseENGN ShowOnHB2 (A)
ShowEliPower (A)
Al iniciar una aventura se pone en TRUE la variable AxMode del directorio oculto.
Esto le dice a Save que debe agregar el archivo salvado a la aventura cuyo nombre está en la variable
AxName del directorio oculto
Al ganar un Zx se deja un TRUE en la pila que es usado por el módulo de control de aventuras el cual pone
el indicador (flag) de permiso del mundo siguiente en TRUE
22
BMA - PARTE II. LOS SISTEMAS DE BME
InvBG (A)
YouWinMsjStd (A)
ShowOnHB2 (A)
Ubz2 (A)
StdGLoader ToDMemList (A)
GLPackLoader aSLStd1 (A)
aSLStd2 (A)
aSLStd3 (A)
ListSplitter (A)
Estos sistemas son muy importante, ya que permite que el usuario de BM pueda introducir texto para su
posterior utilización. Existen dos: TxInp y CodeInp
2.18.1 TxInp
TxBGList (A)
Ubz2 (A)
TxInp ShowOnHB2 (A)
TxUpd (A)
TxBSpc (A)
23
BMA - PARTE II. LOS SISTEMAS DE BME
InpY # Usada por TxInp para guardar coordenada Y relativa del texto.
InpK # Usada por TxInp para guardar el número de la tecla actual presionada
durante la entrada de texto.
InpText $ Usado por TxInp para guardar texto introducido.
Inpc # Usado por TxInp como contador de caracteres.
Inpg0 grob Usado por TxInp para guardar gráfico de fondo.
Inppl # Usado por TxInp para guardar el plano de la tecla presionada.
InpFinish? flag Usada por TxInp para indicarle a su bucle interno terminar entrada de
caracteres.
InpXpix # Usada por TxInp para guardar coordenada X absoluta del texto.
InpYpix # Usada por TxInp para guardar coordenada Y absoluta del texto.
TxBGH # Usado por TxInp para guardar altura de barra de texto.
TxBGW # Usado por TxInp para guardar anchura de barra de texto.
TxFlag flag Usada por TxInp para indicarle al próximo programa si se presiono
ENTER o CANCEL.
TxBBGx # Usada por TxInp para guardar coord relativa x de fondo negro ABUFF.
TxBBGy # Usada por TxInp para guardar coord relativa y de fondo negro ABUFF.
TxBBGh # Usada por TxInp para guardar altura de fondo negro.
TxBBGw # Usada por TxInp para guardar anchura de fondo negro.
TxBBGxpix # Usada por TxInp para guardar coord relativa x de fondo negro GBUFF.
TxBBGypix # Usada por TxInp para guardar coord relativa y de fondo negro GBUFF.
TxInfL lista Usada por TxInp para guardar el texto de ayuda.
Si se presiona ENTER sin haber introducido algún texto se colocará como texto introducido la cadena de
caracteres "--------".
2.18.2 CodeInp
Este sistema es en realidad una variante de txInp. Utiliza incluso las mismas variables. La diferencia
fundamental es que el texto introducido se presenta en el área de menú.
Si se presiona ENTER sin haber introducido algún texto se colocará como texto introducido la cadena de
caracteres "00000000".
25
PARTE III
Sistemas de BMB
BMA - PARTE III. LOS SISTEMAS DE BMB
ShowEliCoords (A)
Shtx (A)
CBBuilder (A)
CopyBox0 (A)
MBBuilder
msg16
PBBuilder
OBBuilder
CEBuilder
ABBuilder
YWBuilder
CBMode
CGMenu
SBMenu
GData
GetSBInfo
ZxCONFG
BEngine ConfInv
FxMenu
GroupsBuilder
CoordsMenu
Map1
Map2
Map3
TongleEliCoords
ExitBLDR
MenuHBLDR
GetAbuffDA3
ZxCFA (A)
ZxCFP
PutAbuffDA3 (A)
ExitENGN
BMrev (A)
Ubz2 (A)
Inst
3.1.1 CBBuilder
Es el encargado de la construcción y gestión de los CB.
Módulos relacionados:
CBBuilder
CBMode
TurnCBBuilderOn
TurnCBBuilderOff
TurnCBOffCopyBG
GetCBListToInv
27
BMA - PARTE III. LOS SISTEMAS DE BMB
3.1.2 MBBuilder
Es el encargado de la construcción y gestión de los MB
Módulos relacionados:
MBBuilder
IntroRutaMB
getMBSpeed
getMBGunStatus
getMBGunRange
MoveMBtoRuta
AtackCodeMB
getMBRadarRange
GetMBDistanceEli
MoveMBtoEli
MBIntModeSelect
MBStop
MBStart
Variables relacionadas:
3.1.3 PBBuilder
Es el encargado de la construcción y gestión de los PB.
Módulos relacionados:
PBBuilder
PBMov
PBoff
PBOn
CodeInp
IfPBClashMBTurnMBOff
Variables relacionadas:
3.1.4 OBBuilder
Es el encargado de la construcción y gestión de los OB.
Módulos relacionados:
OBBuilder
WorldKeysInc
OBClr
NBombsInc
NPinchInc
EliPowerInc
WorldMapInc
GoalcInc
msg18
Variables relacionadas:
3.1.5 ABBuilder
Es el encargado de la construcción y gestión de los OB.
Módulos relacionados:
ABBuilder
ABOff
ABOn
Variables relacionadas:
ABActualA # Usada por algunos módulos para guardar una copia de ABActual.
ABGrobList lista Lista de gráficos para los AB.
ListListABtoRun lista Grupos de ABs. Lista que contiene 16 sublistas para los 16
grupos de AB
3.1.6 CEBuilder
Es el encargado de la construcción y gestión de los CE.
Módulos relacionados:
CEBuilder
CE01
CE02A
CE02B
CE03
CE04A
CE04B
CE05
CE06
CE07
CEg0Restore
CEIni
CEStart
CEStop
Variables relacionadas:
3.1.7 GrbBuilder
Encargado de la creación y gestión de gráficos complementarios.
Módulos relacionados:
Grb
GrbBuilder
Variables relacionadas:
GRBx1 (global)
GRBy1 (global)
GRBGLPack (global)
GRBw (global)
GRBh (global)
30
BMA - PARTE III. LOS SISTEMAS DE BMB
NombreGrb (global)
BMGrbList (en directorio oculto)
fgGrobList (lambda)
FBstatus (global)
3.1.8 LabelBuilder
Encargado de la creación y gestión de etiquetas.
Módulos relacionados:
InpText
LabelBuilder
Variables relacionadas:
fgGrobList
3.1.9 AnmBuilder
Encargado de la creación y gestión de animaciones.
Módulos relacionados:
Anm
AnmBuilder
AnmT1Executer
AnmBGroundUpdater
AnmT2Executer
AnmBuilderDatSECSUST
AnmT3Executer
Variables relacionadas:
BMAnmList (en directorio oculto)
ANMx1 (global)
ANMy1 (global)
ANMGLPack (global)
ANMw (global)
ANMh (global)
ANMn (global)
NombreAnm (en directorio oculto)
3.1.10 MsgBBuilder
Encargado de crear y gestionar el mensaje de bienvenida.
Módulos relacionados:
MsgBBuilder
TxInp
Variables relacionadas:
TxList?
TxList
3.1.11 MsgOBuilder
Encargado de crear y gestionar el mensaje de objetivos.
31
BMA - PARTE III. LOS SISTEMAS DE BMB
Módulos relacionados:
MsgOBuilder
TxInp
Variables relacionadas:
TxObj?
TxObj
3.1.12 MsgHBuilder
Encargado de crear y gestionar el mensaje de ayuda.
Módulos relacionados:
MsgHBuilder
TxInp
Variables relacionadas:
TxHelp?
TxHelp
3.1.10 GroupsBuilder
Encargado de la creación y gestión de grupos.
Módulos relacionados:
ListaGroupsBuilder
ListaIndices
ListaGrupos
TongleGroups
Variables relacionadas:
GList (global)
SBindice (global)
Gindice (global)
GrupodeTrabajo (global)
GrupodeTrabajoLEN (global)
SBindicePOS (global)
SBindicePOS (global)
Gindice2 (global)
GrupodeTrabajo2 (global)
BMBuilderc1 (global)
BMBuilderf1 (global)
3.1.11 YWBuilder
Encargada de crear y gestionar los mecanismos que evalúan cuándo se ha ganado la partida.
Módulos relacionados:
YWBuilder
YW01
YW02B
YW02D
YW03
32
BMA - PARTE III. LOS SISTEMAS DE BMB
YW04
YouWinMsjStd
Variables relacionadas:
Goal?
Goaln
Goalc
YouWinStd?
Módulos relacionados:
EdZxName
TxInp
Variables relacionadas:
ZxName
3.2.2 EdZxMaster
Encargado de la actualización del nombre de la zona.
Módulos relacionados:
EdZxMaster
TxInp
Variables relacionadas:
ZxMaster
3.2.3 GetMP
Encargado de asignar clave de acceso para poder editar un ZxPack. Por razones obvias no voy a dar mucha
información sobre esta parte. Pero diré que el password se guarda encriptado en el archivo ZxPack.
Módulos relacionados:
GetMP
TxInp
Variables relacionadas:
MasterPassword
MasterPassword?
3.2.4 ConfInv
Encargado de configurar el inventario inicial de Eli.
Módulos relacionados:
ConfInv
Variables relacionadas:
WorldMap?
33
BMA - PARTE III. LOS SISTEMAS DE BMB
EliPowerIni
EliPower
EliPowDown?
WorldKeys
NBombs
Shield?
NPinch
PinchOn?
ScannerOn?
Goalc
3.2.5 ConfSB
Ayuda a modificar el estado de componentes ya creados.
Módulos relacionados:
ConfSB
MBOn PBOn OBOn ABOn CEStart
MBOff PBOff OBOff ABOff CEStop
MBi PBi OBi ABi CEi
Variables relacionadas:
CONFGtipo (global)
CONFGindice (global)
CONFGaccion (global)
CONFGBIGLIST (global)
3.2.6 ConfKb
Permite configurar el teclado.
Módulos relacionados:
ConfKb
RestoreKBStd
Variables relacionadas:
KUp,KDown,KLeft,KRight
KMap1,KMap2,KMap3
KGun1,KGun2,KGun3
KInventory
KTakeOb
KHelp
KSpeedUp,KSpeedDw
KExit
KeyboardStd?
3.2.7 FxConf
Permite modificar el estado de los interruptores Fx de BM.
Módulos relacionados:
FxMenu
FxGetState
34
BMA - PARTE III. LOS SISTEMAS DE BMB
FxOn
FxOff
Variables relacionadas:
Nombre Tipo Descripción
F1 flag Estado del interruptor F1.
F2 flag Estado del interruptor F2.
F3 flag Estado del interruptor F3.
F4 flag Estado del interruptor F4.
F5 flag Estado del interruptor F5.
F6 flag Estado del interruptor F6.
F7 flag Estado del interruptor F7.
F8 flag Estado del interruptor F8.
F9 flag Estado del interruptor F9.
FA flag Estado del interruptor FA.
FB flag Estado del interruptor FB.
FC flag Estado del interruptor FC.
FD flag Estado del interruptor FD.
FE flag Estado del interruptor FE.
FF flag Estado del interruptor FF.
3.2.8 BoxGrobSelection
Permite cambiar el gráficos de los CB.
Módulos relacionados:
BoxGrobSelection
GMapCBBuilder
Variables relacionadas:
CBGrobList
BoxGrobindex
BoxGrob
3.2.9 ConfM1
Permite configurar varias características del módulo principal de BME, M1.
Módulos relacionados:
ConfM1
Variables relacionadas:
Accion?
AnimateEli?
DelayFM
ShowCiclos?
Nciclos
3.3.1 Coords
Algunos componentes requieres que se les indique varias coordenadas del mapa que serán tomadas en
cuenta durante su funcionamiento. Es aqui donde interviene este sistema.
Módulos relacionados:
35
BMA - PARTE III. LOS SISTEMAS DE BMB
CoordsMenu
CoordsSaver
CoordsViewer
TongleEliCoords
Variables relacionadas:
CoordsList (global)
3.3.2 GetSBInfo
Permite obtener información sobre cualquier MB, PB, OB o AB creado.
Módulos relacionados:
GetSBInfo
SearchMBGetIndex
SearchPBGetIndex
SearchOBGetIndex
SearchABGetIndex
ShowResumen
Variables relacionadas:
XSearch
YSearch
MB?
PB?
OB?
AB?
3.3.3 GData
Ofrece diversas informaciones sobre el juego en construcción, como cantidad de componentes de cada tipo,
memoria utilizada, valores de algunas variables importantes, etc.
Módulos relacionados:
GData
RndRApndRToStr
Shtx
Variables relacionadas:
ZxName MBNum MEMi MBi
ZxMaster PBNum DMemList PBi
Xpix OBNum OBi
Xeli ABNum ABi
Ypix CENum CEi
Yeli Nvars
LEFTCOL
TOPROW
MapW
MapH
La variable DMemList
Contiene datos sobre consumo de memoria
36
BMA - PARTE III. LOS SISTEMAS DE BMB
{
% (contenido: tamaño del GLPack, cargado por: GLPackLoader)
% (contenido: tamaño del aSLStd, cargado por: GLPackLoader)
% (contenido: tamaño del Gbuff, cargado por: ExpandB)
% (contenido: tamaño del Abuff, cargado por: ExpandB)
% (contenido: tamaño de bgGrobList, cargado por: bgIni)
% (contenido: tamaño de fgGrobList, cargado por: fgIni)
% (contenido: consumo máximo para cargar juego, cargado por:M0)
% (contenido: tamaño del archivo de juego savxx, cargado por:Load)
}
37
PARTE IV
Código Fuente
BMA - PARTE IV. EL CODIGO FUENTE
En la carpeta del código fuente encontrarán 287 archivos. Algunos son archivos de texto y otros son
archivos específicamente de la hp.
Nota Importante: el programa operará sobre todos los archivos que encuentre en la pila, por tanto solo
debe haber en ella archivos validos de BM.
Para agregar un archivo al código fuente que no esté en formato adecuado debe convertirlo:
> Use la opción del menú OOpc para convertirlo a formato tipo M2.
> Use el editor "Bloc de Notas" de Windows para convertirlo a formato M1.
4.4 Reinstalando BM
Si tienes la librería BM instalada y quieres actualizarla, coloca la versión nueva en la pila y ejecuta UpdB de la
librería Link. Lo que hace esta opción es desinstalar BM del puerto 2 e instalar la librería que encuentre en la
pila.
39
BMA - PARTE IV. EL CODIGO FUENTE
BML, que es la librería utilizada para compilar tanto BMB como BME, crea en el puerto 1, cuatro archivos
especiales, llamados: $[Link], $[Link], $[Link] y $[Link]
Para BME:
$VISIBLE = $[Link]
$HIDDEN = $[Link] + $[Link]
Para BMB:
$VISIBLE = $[Link] + $[Link]
$HIDDEN = $[Link] + $[Link]
El hecho de que para BME hagamos $HIDDEN = $[Link] + $[Link] es fundamental para garantizar
que los archivos creados en BMB sean compatibles con BME, al asegurar que los archivos mantendrán la
misma posición en ambas librerías.
* Al modificar un módulo es indispensable saber cuales módulos y variables resultan afectados por esa
modificación.
* No es conveniente hacer muchos cambios a la vez, ya que si se produce un error será más difícil
localizarlo.
* Cualquier reducción de tiempo para un bucle es significativa, ya que se multiplica por las veces que dicho
bucle se repite.
* Es importante no cambiar la configuración del teclado con demasiada frecuencia, ya que esto afecta la
curva de aprendizaje a los usuarios.
* Para hacer que BM genere más variables lambda solo hay que modificar el módulo MBi.
* Todo evento (CE, UE, MB, Bomb, T&M,...) debe dejar la pila limpia luego de ejecutarse.
* Al crear un arma nueva se debe agregar código a los módulos Inventory y a ConfInv.
* Es importante que al diseñar un nuevo componente, este no transmita información en base a los variables
XBActual, ya que esto generaría errores. La causa de dichos errores es que en el proceso de creación de un
ZxPack (en el Builder) estas variables tienen un valor distinto al que tendrán en el juego ya terminado. Esto
40
BMA - PARTE IV. EL CODIGO FUENTE
es resultado de la expansión de variables que se efectual en el Builder para poder crear 16 componentes de
cada tipo y que luego se ajusta a los valores reales en el juego terminado. Use siempre los índices de los
componentes en lugar de las XBActual.
* La mejor manera de encontrar fallos en BM es usándolo. Con esto no solo se localizaran fallos, sino que
surgirán nuevas ideas.
* Téngase presente siempre las variables con restricción posicional, es decir, aquellas que no se pueden
cambiar de lugar en la tabla de definiciones ya que algún modulo las localiza por su posición y no por su
nombre.
* Ningún módulo de BML debe nombrarse igual que alguno de BMB o BME, ya que esto afectaría los ID
de las listas $[Link], $[Link], $[Link] o $[Link], que forman parte de BML. Concretamente se
sustituiría durante la compilación de la librería BML el ID de las listas por el PTR del archivo de BML
haciendo imposible luego la utilización de las listas.
41
PARTE V
Notas Varias
BMA - PARTE V. NOTAS VARIAS
BM y el Directorio Oculto
BMAnmList: Contiene los nombres de las secuencias graficas para animaciones que no
están en aniSecList.
BMGLPackList: Contiene los nombres de los GLPack que no son estándar, es decir que no
vienen en el ENGINE.
AxMode
BMAxID
Neutralizando un MB:
43
BMA - PARTE V. NOTAS VARIAS
El Modo de Prueba
Esto también se puede hacer durante el juego asignado el código anterior a una tecla
Puntos diversos:
- La copia del mapa grande sirve para utilizarlo como plantilla al diseñar gráficos de fondo, ya que te
proporciona las dimensiones exactas.
- Si hay un gráfico en la pila al iniciar el Builder te preguntara si quieres usarlo como mapa.
- Puedes crear tus propios gráficos para componentes usando GLPack (paquete de GrobsList) en el menú
CREAR.
- Puedes agregar etiquetas, es decir, textos que aparecen en Gbuff como gráficos de fondo. Para esto usa la
opción etiqueta del Menu A.
- Si tienes un mapa ya creado y quieres usarlo para un nuevo juego solo debes colocarlo en la pila antes de
iniciar el Builder.
- Puedes guardar copias de los mapas. La del pequeño para reutilizarlo en otras zonas, siguiendo los pasos
anteriores.
44
ANEXOS
Anexo 1. Módulos y Submódulo
En este anexo presentamos una lista de los módulos y submódulo de BM, organizados en orden alfabético.
En las tablas siguientes cada módulo es representado por su nombre. A la derecha de cada módulo están los
módulos que utiliza. Cuando un módulo no utiliza a otros se coloca el símbolo (A) a su derecha.
Los módulos que son utilizados exclusivamente por el Builder se indican con un fondo amarillo.
Los que son usados por el Engine se marcan con un fondo verde claro
Shtx (A)
GetAbuffDA3 (A)
SIoNO (A)
TurnCBOffCopyBG (A)
AssignToGroup
ABBuilder AssignStateSB (A)
PutAbuffDA3 (A)
TurnCBBuilderOff
ShowOnHB2 (A)
ShowResumen
ShowCancelMsg
ABOff (A)
ABOn (A)
ACC (A)
aEli (A)
AIGMov (A)
InstCompresor (A)
Ajustes
BzAxPack
BVCreator
ZxIni1
Anm
NumListCreator (A)
TxInp
AnmBGroundUpdater (A)
GetAbuffDA3 (A)
Shtx (A)
GetCBListToInv
ListaVelocidades (A)
NumListCreator (A)
AnmT1Executer
AnmBGroundUpdater (A)
AnmT2Executer
AnmBuilder AnmBuilderDatSECSUST
AnmT3Executer
AssignToGroup
AssignStateSB (A)
TurnCBBuilderOff
ShowOnHB2 (A)
ShowResumen
PutAbuffDA3 (A)
ShowCancelMsg
AnmCEc1Fixer (A)
AnmGrobARunner (A)
AnmRunner
AnmT1Executer AnmCEc1Fixer (A)
AnmGrobARunner (A)
AnmRunner
AnmT2Executer
AnmGrobARunner (A)
AnmT3Executer AnmRunner
aSLStd1 (A)
aSLStd2 (A)
aSLStd3 (A)
AssignStateSB (A)
AssignToGroup ListaGrupos
GetAIGDistanceEli (A)
AtackCodeAIG M3 (A)
ShowEliPower (A)
GetMBDistanceEli (A)
AtackCodeMB
ShowEliPower (A)
ZxLoader
AxLoader
ShowEliPower (A)
BVCreator
ZxIni1
TxInp
AxPackBuilder
NumListCreator
TryCompressFile
BMver (A)
AxLoader ZxLoader
ToDMemList (A)
bgIni
cgLoader (A)
BMver (A)
ZxPackBuilder
AxPackBuilder
Crear Anm [1]
Grb [1]
GLPack [1]
EdZxPack
Modificar
GLPack [5]
Inst
Anm [2]
BLDR Instalar
Grb [2]
GLPack [2]
Rcl
Anm [3]
Recuperar
Grb [3]
GLPack [3]
Del
Anm [4]
Eliminar
Grb [4]
GLPack [4]
BMrev (A)
BMver (A)
Bomb EliPowerDec
GetAbuffDA3 (A)
NumListCreator (A)
BoxGrobSelection
GMapCBBuilder
PutAbuffDA3 (A)
ShowOnHB2 (A)
BVCreator
MBi (A)
BMver (A)
BZAxPack
Ubz2 (A)
CBBuilder (A)
TurnCBBuilderOff
CBMode Shtx (A)
TurnCBBuilderOn (A)
GetGroupTTCE
CEg0Restore
CE01
TongleGroups
IndTest
GetGroupTTCE
CE02A
TongleGroups
GetCEZoneCorners
GetGroupTTCE
CE02B Shtx (A)
TestEliInZone (A)
TongleGroups
NumListCreator (A)
Shtx (A)
CE03 ListaTiposdeGrupo (A)
ListaGrupos
TongleGroups
NumListCreator (A)
CE04A TxInp
Shtx (A)
Shtx (A)
TeleportLoader (A)
CopyBox0 (A)
CE05 M3 (A)
CEStop
CEStart (A)
ListaIndices
Shtx (A)
WormLoader (A)
CE06 GetAIGDistanceEli (A)
AIGMov (A)
AtackCodeAIG
GetCEZoneCorners
ListaVelocidades (A)
CE07
TestEliInZone (A)
EliPowerDecFast (A)
GetAbuffDA3 (A)
CE01
CE02A
CE02B
CE03
CE04A
CE04B
CE05
CEBuilder CE06
CE07
AssignToGroup
AssignStateSB (A)
TurnCBBuilderOff
ShowOnHB2 (A)
ShowResumen
PutAbuffDA3 (A)
ShowCancelMsg
SearchMBGetIndex (A)
CEg0Restore SearchPBGetIndex (A)
SearchABGetIndex (A)
TeleportLoader (A)
CEIni
WormLoader (A)
CEStart (A)
cgLoader (A)
ChangeEliAnimation (A)
CkDescomp (A)
RcStop
CkGoalc
Rc
CkIsGLPack (A)
ClearMenuLabel (A)
ClearMenuLabel (A)
CodeInp
CodeInpCompKeys
GetAbuffDA3 (A)
ConfInv NumListCreator (A)
PutAbuffDA3 (A)
GetAbuffDA3 (A)
Shtx (A)
ConfKb
RestoreKBStd (A)
PutAbuffDA3 (A)
GetAbuffDA3 (A)
ConfM1 ListaDelayFM
PutAbuffDA3 (A)
GetAbuffDA3 (A)
NumListCreator (A)
Shtx (A)
MBOn (A)
MBOff (A)
PBOn (A)
PBOff (A)
ConfSB
OBOn (A)
OBOff (A)
ABOn (A)
ABOff (A)
CEStart (A)
CEStop
PutAbuffDA3 (A)
GetAbuffDA3 (A)
NumListCreator (A)
CoodsSaver
Shtx (A)
PutAbuffDA3 (A)
GetAbuffDA3 (A)
NumListCreator (A)
CoodsViewer
Shtx (A)
PutAbuffDA3 (A)
CopyBox0 (A)
ZxPackBuilder
AxPackBuilder
Crear Anm [1]
Grb [1]
GLPack [1]
DelZxPack (A)
Del
DelAxPack (A)
DelAxPack (A)
DelayFMDwENGN (A)
DelayFMUpENGN (A)
DelZxPack (A)
EdZxMaster TxInp
EdZxName TxInp
GetZxPack (A)
CkDescomp (A)
GetBMver (A)
BMver (A)
ShowOnHB2 (A)
BVCreator
ZxLoadV1
EdZxPack
StdGLoader
SBnFixer
ZxLoadV2 (A)
ExpandB
bgIni
TestMP
M0
CopyBox0 (A)
EliIni
eNRunner (A)
EliPowerDec (A)
EliPowerDecFast (A)
EliPowerInc (A)
BMver (A)
PlayZxPack
Play
PlayAxPack
Inst BMver (A)
RclZxPack (A)
Rcl
RclAxPack (A)
ENGN DelZxPack (A)
Del
DelAxPack (A)
InstCompresor (A)
Ajustes
BzAxPack
BMver (A)
InfE BMrev (A)
Ubz2 (A)
eNRunner (A)
GetAbuffDA3 (A)
Save
Esc
SxErase (A)
PutAbuffDA3 (A)
GetAbuffDA3 (A)
ExitBLDR
PutAbuffDA3 (A)
GetAbuffDA3 (A)
PutAbuffDA3 (A)
ExitENGN ZxToZxPack
RcStop
Esc
ShowOnHB2 (A)
ExpandB
ToDMemList (A)
ToDMemList (A)
fgIni
cgLoader (A)
FxGetState (A)
GetAbuffDA3 (A)
NumListCreator (A)
FxGetState (A)
FxMenu Shtx (A)
FxOn (A)
FxOff (A)
PutAbuffDA3 (A)
FxOff (A)
GBuffIni (A)
Shtx (A)
GData
RndRApndRToStr (A)
GetAbuffDA3 (A)
GetAIGDistanceEli (A)
GetBMver (A)
NumListCreator (A)
GetCBListToInv
Shtx (A)
NumListCreator (A)
GetCEZoneCorners
Shtx (A)
ListaTiposdeGrupo (A)
GetGroupTTCE
ListaGrupos
ListaTiposdeGrupo (A)
GetGroupTTOB
ListaGrupos
ListaTiposdeGrupo (A)
GetGroupTTPB
ListaGrupos
GetMBDistanceEli (A)
getMBGunStatus (A)
TxInp
GetMP
Shtx (A)
GetSBInfo ShowResumen
GetZxPack (A)
BVCreator
ZxIni1
GLPackIni (A)
GLPack GLPackInpName
GLPackExtractor (A)
Ubz2 (A)
CkIsGLPack (A)
GLPackCleaner (A)
GLPackExtractor (A)
GLPackInpName TxInp
ShowOnHB2 (A)
Ubz2 (A)
ToDMemList (A)
GLPackLoader aSLStd1 (A)
aSLStd2 (A)
aSLStd3 (A)
ListSplitter (A)
GLPStd3 (A)
GLPStd2 (A)
GLPackSelection GLPStd1 (A)
GLPackStdOn (A)
GLPackStdOff (A)
GLPackLoader
GLPackStdOff (A)
GLPackStdOn (A)
GLPStd1 (A)
GLPStd2 (A)
GLPStd3 (A)
GoalcInc (A)
BVCreator
ZxIni1
Grb
NumListCreator (A)
TxInp
GetAbuffDA3 (A)
CopyBox0 (A)
GrbBuilder
ShowResumen
PutAbuffDA3 (A)
GetAbuffDA3 (A)
ListaGroupsBuilder (A)
ListaIndices
GroupsBuilder
Shtx (A)
ListaGrupos
PutAbuffDA3 (A)
SearchMBGetIndex (A)
IfPBClashMBTurnMBOff MBOff (A)
M3 (A)
InitT&M (A)
Inst
Anm [2]
Instalar
Grb [2]
GLPack [2]
InstCompresor (A)
InvBG (A)
InvCEL2CBList (A)
Inventory (A)
L4bz (A)
L5bz (A)
L7bz (A)
TxInp
LabelBuilder
CopyBox0 (A)
ListaAlcancesArma (A)
ListaCSM (A)
L7bz (A)
ListaDelayFM
Ubz2 (A)
ListaGroupsBuilder (A)
L5bz (A)
ListaGrupos
Ubz2 (A)
L4bz (A)
ListaIndices
Ubz2 (A)
ListaPotenciasRadar (A)
ListaTiposdeGrupo (A)
ListaVelocidades (A)
ListSplitter (A)
ListSplitterE (A)
ShowEliCoords (A)
M2
aEli (A)
SCMB (A)
SCCE (A)
M1Rx SCUE (A)
Bomb
T&M (A)
ACC (A)
CkGoalc
Shtx (A)
M5
CopyBox0 (A)
Shtx (A)
MenuHENGN
M6
TxHelpENGN
TxObjENGN
GData
SetBomb
Pinch
Scanner
Inventory
RcENGN
M2 SetT&M (A)
BEngine
TongleShowCiclos
TongleAnimateEli
TongleEliCoords
DelayFMUpENGN (A)
DelayFMDwENGN (A)
SpeedUpENGN
SpeedDwENGN
Map1
Map2
Map3
ChangeEliAnimation (A)
ExitENGN
M3 (A)
M5 SearchPBGetIndex (A)
SearchOBGetIndex
M6
Shtx (A)
MapIni (A)
Shtx (A)
GetAbuffDA3 (A)
IntroRutaMB
getMBSpeed
getMBGunStatus (A)
getMBGunRange
MoveMBtoRuta
AtackCodeMB
getMBRadarRange
MBBuilder GetMBDistanceEli (A)
MoveMBtoEli
TurnCBOffCopyBG (A)
AssignToGroup
AssignStateSB (A)
PutAbuffDA3 (A)
TurnCBBuilderOff
ShowOnHB2 (A)
ShowResumen
ShowCancelMsg
GetAbuffDA3
CGMenu
SBMenu
ConfInv
GroupsBuilder
FxMenu
CoordsMenu
MenuHBLDR GData
GetSBInfo
ZxCONFG
BMrev
Ubz2
Shtx
ExitBLDR
PutAbuffDA3
GetAbuffDA3
Inventory
SetBomb
Pinch
Scanner
M6
RcENGN
Shtx
TxHelpENGN
MenuHENGN
TxObjENGN
SetT&M
BEngine
TongleShowCiclos
TongleAnimateEli
TongleEliCoords
GData
ExitENGN
PutAbuffDA3
MBi (A)
MBMov (A)
MBOn (A)
MBStart (A)
EdZxPack
Modificar
GLPack [5]
Shtx (A)
MsgBBuilder NumListCreator (A)
TxInp
Shtx (A)
MsgHBuilder NumListCreator (A)
TxInp
GetAbuffDA3 (A)
MsgBBuilder
MsgMenu MsgHBuilder
MsgOBuilder
PutAbuffDA3 (A)
Shtx (A)
MsgOBuilder NumListCreator (A)
TxInp
NBombsInc (A)
NPinchInc (A)
NumListCreator (A)
OBClr (A)
OBOff (A)
OBOn (A)
PBMov (A)
PBOff (A)
PBOn (A)
M3 (A)
SearchMBGetIndex (A)
Pinch
MBOff
Shtx (A)
PlayZxPack
Play
PlayAxPack
PutAbuffDA3 (A)
Rc (A)
RclZxPack (A)
Rcl
RclAxPack (A)
RclAxPack (A)
RclZxPack (A)
RcStart BMBackup
Rcl
Anm [3]
Recuperar
Grb [3]
GLPack [3]
RestoreKBStd (A)
RndRApndRToStr (A)
RxErase (A)
BMBackup
Save
TryCompressFile (A)
SBIni (A)
GetAbuffDA3 (A)
CBMode
MBBuilder
msg16
PBBuilder
SBMenu OBBuilder
ABBuilder
CEBuilder
YWBuilder
ConfSB
PutAbuffDA3 (A)
M3 (A)
SearchOBGetIndex (A)
Scanner
MBOff
Shtx (A)
SCCE (A)
SCMB (A)
SCUE (A)
.
Anexo 1. Módulos y Submódulo 18
SearchABGetIndex (A)
SearchMBGetIndex (A)
SearchOBGetIndex (A)
SearchPBGetIndex (A)
SetT&M (A)
ShowEliCoords (A)
ShowEliPower (A)
ShowOffMsg (A)
ShowOnHB2 (A)
ShowOnMsg (A)
Shtx (A)
SIoNO (A)
SpeedDwENGN (A)
SpeedUpENGN (A)
InvBG (A)
YouWinMsjStd (A)
ShowOnHB2 (A)
Ubz2 (A)
StdGLoader ToDMemList (A)
GLPackLoader aSLStd1 (A)
aSLStd2 (A)
aSLStd3 (A)
ListSplitter (A)
SxErase (A)
T&M (A)
TeleportLoader (A)
TestEliInZone (A)
TxInp
TestMP
Shtx (A)
ShowOffMsg (A)
TongleAnimateEli
ShowOnMsg (A)
ClearMenuLabel (A)
TongleEliCoords
ShowEliCoords (A)
MBOff (A)
PBOff (A)
OBOff (A)
ABOff (A)
CEStop
FxOff (A)
TongleGroups
MBOn (A)
PBOn (A)
OBOn (A)
ABOn (A)
CEStart (A)
FxOn (A)
TryCompressFile (A)
TxBGList (A)
TurnCBBuilderOn (A)
TurnCBOffCopyBG (A)
TxBSpc (A)
TxBGList (A)
Ubz2 (A)
TxInp ShowOnHB2 (A)
TxUpd (A)
TxBSpc (A)
TxUpd (A)
Ubz2 (A)
WorldKeysInc (A)
WorldMapInc (A)
WormLoader (A)
NumListCreator (A)
YW02B Shtx (A)
M3 (A)
NumListCreator (A)
YW02D Shtx (A)
M3 (A)
GetAbuffDA3 (A)
YW01
YW02B
YW02D
YW03
YW04
YWBuilder AssignToGroup
AssignStateSB (A)
ShowOnHB2 (A)
ShowResumen
PutAbuffDA3 (A)
TurnCBBuilderOff
Shtx (A)
ZxCFA (A)
GetAbuffDA3 (A)
SIoNO (A)
ZxCFP
NumListCreator (A)
PutAbuffDA3 (A)
GetAbuffDA3 (A)
EdZxName
EdZxMaster
GetMP
ConfInv
ZxCONFG ConfM1
ConfSB
ConfKb
FxMenu
BoxGrobSelection
PutAbuffDA3 (A)
ShowOnHB2 (A)
BMver (A)
ZxIni1 InvBG (A)
YouWinMsjStd
RestoreKBStd (A)
MBi (A)
ZxLoadV2 (A)
BVCreator
ZxIni1
SBnFixer
MapIni (A)
GLPackSelection
ZxPackBuilder ZxIni2
ExpandB
EdZxName
EdZxMaster
bgIni
M0
CkDescomp (A)
GetBMver (A)
BMver (A)
ShowOnHB2 (A)
ZxPackIni ZxLoader StdGLoader
ToDMemList (A)
ExpandB
bgIni
M0
BMver (A)
ZxToZxPack
BMBackup
El módulo BLDR se conserva en el Engine para no alterar las referencias a los módulos de la librería en los
archivos de juego, pero está oculto.
Módulos comprimidos:
msg7
msg16
msg18
La restricción posicional se refiere a que la variable no puede ser cambiada de posición en la tabla ya que algún
módulo la localiza en base a su posición y no a su nombre. Esto es importante cuando se quiere hacer cambios en la
tabla.
AxPackBuilder AxName
AxNroMundos
AxZxNamesList
AxFlagsList
AxZxList
AxSxList
AxRxList
AxOK?
AxPackIni BMAxID
BMAxZxToPlay
BEngine BEngineOff?
CBBuilder?
CB+?
BVCreator Nvars
mem
CE05 Actual2
Actual1
CEBuilder CEMenuOpt
ConfInv SubMenuOpt
ConfKb SubMenuOpt
ConfM1 SubMenuOpt
ConfSB CONFGtipo
CONFGindice
CONFGaccion
CONFGBIGLIST
EdZxPack BMFileLoaded
ExitBLDR BEngineOff?
ExitBLDROpt
FxMenu SubMenuOpt
GLPackIni Tipo
NumerodeFilas
NumerodeColumnas
EspacioEtiquetasX
EspacioEtiquetasY
GLPackInpName NombredePaquete
GLPackLoader GLPackX
MB PB OB AB CE
MBtype PBtype OBtype ABtype CEtype
MBstatus PBstatus OBstatus ABstatus CEstatus
MBxpix PBxpix OBxpix ABxpix CEtest
MBypix PBypix OBypix ABypix CEprogT
MBtest PBtest OBtest ABg0 CEprogF
MBprogT PBprogT OBprogT CEx5pix
MBprogF PBprogF OBprogF CEy5pix
MBL1 PBL1 OBL1 CEx4pix
MBL0 PBL0 OBL0 CEy4pix
MBc1 PBc1 OBc1 CEx3pix
MBc0 PBc0 OBc0 CEy3pix
MBf1 PBf1 OBf1 CEx2pix
MBf0 PBf0 OBf0 CEy2pix
MBg1 PBg1 OBg1 CEx1pix
MBg0 PBg0 OBg0 CEy1pix
MBk PBk OBk CEx0pix
CEy0pix
CEL2
CEL1
CEL0
CEc2
CEc1
CEc0
CEf2
CEf1
CEf0
CEg2
CEg1
CEg0
CEk2
CEk1
CEk0
Leyenda:
Negro: Variable que se usa
Verde: Variable no utilizada. Se marcan con (*)
Negrita: Variable especial de este tipo de MB
Cada {SBGrobList} esta compuesta por 15 gráficos. Uno para cada tipo de SB.
donde:
gn: es el gráfico
xn: coordenada x en abuff
yn: coordenada y en abuff
fn: flag para activar y desactivar carga del gráfico
(SBi --------------------------------)
DEFINE MBi 11GETLAM
DEFINE PBi 12GETLAM
DEFINE OBi 13GETLAM
DEFINE ABi 14GETLAM
DEFINE CEi 15GETLAM
(CE ---------------------------------)
DEFINE CEf #44 GETLAM
DEFINE CENum #45 GETLAM
DEFINE ListCEtoRun #46 GETLAM
DEFINE SizeListCEtoRun #47 GETLAM
DEFINE ListListCEtoRun #48 GETLAM
DEFINE RunListCEtoRun? #49 GETLAM
(UE ---------------------------------)
DEFINE ListUEtoRun #4A GETLAM
DEFINE RunListUEtoRun? #4B GETLAM
DEFINE SizeListUEtoRun #4C GETLAM
(CB ---------------------------------)
DEFINE CBGrobList #4D GETLAM
DEFINE BoxGrobindex #4E GETLAM
DEFINE BoxGrob #4F GETLAM
DEFINE BoxGrobH #50 GETLAM
DEFINE BoxGrobW #51 GETLAM
(Reloj ------------------------------)
DEFINE Nciclos #52 GETLAM
DEFINE cNciclos #53 GETLAM
DEFINE Nciclosinc #54 GETLAM
(bg ---------------------------------)
DEFINE bgGrobList #55 GETLAM
DEFINE bgGrobList? #56 GETLAM
(fg ---------------------------------)
DEFINE fgGrobList #57 GETLAM
DEFINE fgGrobList? #58 GETLAM
(ventana Inventario -----------------)
DEFINE InvBGrobStd? #59 GETLAM
DEFINE InvBGrob #5A GETLAM
DEFINE InvBGh #5B GETLAM
DEFINE InvBGw #5C GETLAM
DEFINE InvdX #5D GETLAM
DEFINE InvdY #5E GETLAM
DEFINE InvX #5F GETLAM
DEFINE InvY #60 GETLAM
DEFINE InvGrob0 #61 GETLAM
(Telepuerto -------------------------)
DEFINE TeleT? #62 GETLAM
DEFINE TeleportFree? #63 GETLAM
DEFINE TelepDestino #64 GETLAM
(Metas ------------------------------)
DEFINE Goaln #65 GETLAM
Anexo 6. Definiciones de Variables 2
DEFINE Goalc #66 GETLAM
DEFINE Goal? #67 GETLAM
DEFINE YouWin #68 GETLAM
DEFINE YouWinStd? #69 GETLAM
(Animaciones ------------------------)
DEFINE aniH #6A GETLAM
DEFINE aniW #6B GETLAM
DEFINE aniX #6C GETLAM
DEFINE aniY #6D GETLAM
DEFINE anig0 #6E GETLAM
DEFINE aniDelay #6F GETLAM
DEFINE aniLEN #70 GETLAM
DEFINE aniFlag #71 GETLAM
DEFINE aniMode #72 GETLAM
(Bombas -----------------------------)
DEFINE Xbomb #73 GETLAM
DEFINE Ybomb #74 GETLAM
DEFINE Bomb? #75 GETLAM
DEFINE Tbomb #76 GETLAM
DEFINE CTbomb #77 GETLAM
DEFINE BombType #78 GETLAM
DEFINE Xbombpix #79 GETLAM
DEFINE Ybombpix #7A GETLAM
DEFINE BombGrob #7B GETLAM
DEFINE AfterBombGrob #7C GETLAM
(Shtx -------------------------------)
DEFINE txList #7D GETLAM
DEFINE txN #7E GETLAM
DEFINE txW #7F GETLAM
DEFINE txH #80 GETLAM
DEFINE txG0 #81 GETLAM
DEFINE txX1 #82 GETLAM
DEFINE txY1 #83 GETLAM
DEFINE ShtxDelay #84 GETLAM
DEFINE ShtxDelay0 #85 GETLAM
DEFINE ShtxKEY #86 GETLAM
(Armas ------------------------------)
DEFINE EliPower #87 GETLAM
DEFINE EliPowerIni #88 GETLAM
DEFINE NBombs #89 GETLAM
DEFINE NPinch #8A GETLAM
DEFINE PinchOn? #8B GETLAM
DEFINE WorldKeys #8C GETLAM
DEFINE WorldMap? #8D GETLAM
DEFINE Shield? #8E GETLAM
DEFINE ScannerOn? #8F GETLAM
DEFINE S+? #90 GETLAM
(Fx ---------------------------------)
DEFINE F1 #91 GETLAM
DEFINE F2 #92 GETLAM
DEFINE F3 #93 GETLAM
DEFINE F4 #94 GETLAM
DEFINE F5 #95 GETLAM
DEFINE F6 #96 GETLAM
DEFINE F7 #97 GETLAM
DEFINE F8 #98 GETLAM
DEFINE F9 #99 GETLAM
DEFINE FA #9A GETLAM
DEFINE FB #9B GETLAM
DEFINE FC #9C GETLAM
DEFINE FD #9D GETLAM
DEFINE FE #9E GETLAM
DEFINE FF #9F GETLAM
DEFINE ListListFxtoRun #A0 GETLAM
(TxInp ------------------------------)
DEFINE TxMode #A1 GETLAM
Anexo 6. Definiciones de Variables 3
DEFINE TxBG #A2 GETLAM
DEFINE TxNChars #A3 GETLAM
DEFINE InpX #A4 GETLAM
DEFINE InpY #A5 GETLAM
DEFINE InpK #A6 GETLAM
DEFINE InpText #A7 GETLAM
DEFINE Inpc #A8 GETLAM
DEFINE Inpg0 #A9 GETLAM
DEFINE Inppl #AA GETLAM
DEFINE InpFinish? #AB GETLAM
DEFINE InpXpix #AC GETLAM
DEFINE InpYpix #AD GETLAM
DEFINE TxBGH #AE GETLAM
DEFINE TxBGW #AF GETLAM
DEFINE TxFlag #B0 GETLAM
DEFINE TxBBGx #B1 GETLAM
DEFINE TxBBGy #B2 GETLAM
DEFINE TxBBGh #B3 GETLAM
DEFINE TxBBGw #B4 GETLAM
DEFINE TxBBGxpix #B5 GETLAM
DEFINE TxBBGypix #B6 GETLAM
DEFINE TxInfL #B7 GETLAM
(Pantalla ---------------------------)
DEFINE MenuOn? #BE GETLAM
DEFINE ShowCiclos? #BF GETLAM
DEFINE ShowEliCoords? #C0 GETLAM
(T&M --------------------------------)
DEFINE T&M? #C1 GETLAM
DEFINE T&Mx #C2 GETLAM
DEFINE T&My #C3 GETLAM
DEFINE ticks0 #C4 GETLAM
DEFINE dticks #C5 GETLAM
DEFINE T&Mg0 #C6 GETLAM
(Memoria ----------------------------)
DEFINE MEMi #C7 GETLAM
DEFINE DMemList #C8 GETLAM
DEFINE Nvars #C9 GETLAM
(Replays ----------------------------)
DEFINE VKEY #CA GETLAM
DEFINE VKEYc #CB GETLAM
DEFINE VKEYList #CC GETLAM
DEFINE VKEYrec? #CD GETLAM
DEFINE VKEYplay? #CE GETLAM
(Choques ----------------------------)
DEFINE MBClash? #CF GETLAM
DEFINE MBClashX #D0 GETLAM
DEFINE MBClashY #D1 GETLAM
DEFINE MBClash1? #D2 GETLAM
DEFINE MBClash2? #D3 GETLAM
DEFINE MBClash3? #D4 GETLAM
DEFINE PBClash? #D5 GETLAM
DEFINE PBClashX #D6 GETLAM
DEFINE PBClashY #D7 GETLAM
DEFINE PBClash1? #D8 GETLAM
DEFINE PBClash2? #D9 GETLAM
DEFINE PBClash3? #DA GETLAM
DEFINE HitEli? #DB GETLAM
DEFINE AIClash? #DC GETLAM
DEFINE AIClashX #DD GETLAM
Anexo 6. Definiciones de Variables 4
DEFINE AIClashY #DE GETLAM
DEFINE AIClash1? #DF GETLAM
DEFINE AIClash2? #E0 GETLAM
DEFINE AIClash3? #E1 GETLAM
(Sistema Search ---------------------)
DEFINE XSearch #E2 GETLAM
DEFINE YSearch #E3 GETLAM
DEFINE MB? #E4 GETLAM
DEFINE MBindex #E5 GETLAM
DEFINE PB? #E6 GETLAM
DEFINE PBindex #E7 GETLAM
DEFINE OB? #E8 GETLAM
DEFINE OBindex #E9 GETLAM
DEFINE AB? #EA GETLAM
DEFINE ABindex #EB GETLAM
DEFINE CE? #EC GETLAM
DEFINE CEindex #ED GETLAM
(GLPack -----------------------------)
DEFINE GLPackIncluded? #EE GETLAM
DEFINE GLPackBZ #EF GETLAM
DEFINE GLPStd? #F0 GETLAM
DEFINE GLPStdX #F1 GETLAM
DEFINE aSLStd? #F2 GETLAM
DEFINE aSLStdX #F3 GETLAM
DEFINE aniSecList #F4 GETLAM
DEFINE IndGrob #F5 GETLAM
(Builder ----------------------------)
DEFINE BuilderMode? #F6 GETLAM
DEFINE BMDataType #F7 GETLAM
(Coordenadas inic Ventana -----------)
DEFINE IniLeftCol #F8 GETLAM
DEFINE IniTopRow #F9 GETLAM
(Modulo M1 --------------------------)
DEFINE M1Off? #FA GETLAM
DEFINE Accion? #FB GETLAM
DEFINE GC? #FC GETLAM
(Teclado ----------------------------)
DEFINE KEY #FD GETLAM
DEFINE RepK? #FE GETLAM
DEFINE KeyboardStd? #FF GETLAM
DEFINE KUp #100 GETLAM
DEFINE KDown #101 GETLAM
DEFINE KLeft #102 GETLAM
DEFINE KRight #103 GETLAM
DEFINE KHelp #104 GETLAM
DEFINE KTakeOb #105 GETLAM
DEFINE KMap1 #106 GETLAM
DEFINE KMap2 #107 GETLAM
DEFINE KMap3 #108 GETLAM
DEFINE KGun1 #109 GETLAM
DEFINE KGun2 #10A GETLAM
DEFINE KGun3 #10B GETLAM
DEFINE KSpeedUp #10C GETLAM
DEFINE KSpeedDw #10D GETLAM
DEFINE KExit #10E GETLAM
DEFINE KInventory #10F GETLAM
(ZxName y ZxMaster ------------------)
DEFINE ZxName #110 GETLAM
DEFINE ZxMaster #111 GETLAM
(Eli parte 2 ------------------------)
DEFINE eH #112 GETLAM
DEFINE eW #113 GETLAM
(Ventana ----------------------------)
Anexo 6. Definiciones de Variables 5
DEFINE dHpix #114 GETLAM
DEFINE dWpix #115 GETLAM
DEFINE XeliB #116 GETLAM
DEFINE YeliB #117 GETLAM
(Password ---------------------------)
DEFINE MasterPassword #118 GETLAM
DEFINE MasterPassword? #119 GETLAM
( PBDATA --------------------------------------------------)
DEFINE PBtype :: 7GETLAM GETLAM ;
DEFINE PBstatus :: 7GETLAM #1+ GETLAM ;
DEFINE PBxpix :: 7GETLAM #2+ GETLAM ;
DEFINE PBypix :: 7GETLAM #3+ GETLAM ;
DEFINE PBtest :: 7GETLAM #4+ GETLAM ;
DEFINE PBprogT :: 7GETLAM #5+ GETLAM ;
DEFINE PBprogF :: 7GETLAM #6+ GETLAM ;
DEFINE PBL1 :: 7GETLAM #7 #+ GETLAM ;
DEFINE PBL0 :: 7GETLAM #8 #+ GETLAM ;
DEFINE PBc1 :: 7GETLAM #9 #+ GETLAM ;
DEFINE PBc0 :: 7GETLAM #A #+ GETLAM ;
DEFINE PBf1 :: 7GETLAM #B #+ GETLAM ;
DEFINE PBf0 :: 7GETLAM #C #+ GETLAM ;
DEFINE PBg1 :: 7GETLAM #D #+ GETLAM ;
DEFINE PBg0 :: 7GETLAM #E #+ GETLAM ;
DEFINE PBk :: 7GETLAM #F #+ GETLAM ;
( OBDATA --------------------------------------------------)
DEFINE OBtype :: 8GETLAM GETLAM ;
DEFINE OBstatus :: 8GETLAM #1+ GETLAM ;
DEFINE OBxpix :: 8GETLAM #2+ GETLAM ;
DEFINE OBypix :: 8GETLAM #3+ GETLAM ;
DEFINE OBtest :: 8GETLAM #4+ GETLAM ;
DEFINE OBprogT :: 8GETLAM #5+ GETLAM ;
DEFINE OBprogF :: 8GETLAM #6+ GETLAM ;
DEFINE OBL1 :: 8GETLAM #7 #+ GETLAM ;
DEFINE OBL0 :: 8GETLAM #8 #+ GETLAM ;
DEFINE OBc1 :: 8GETLAM #9 #+ GETLAM ;
DEFINE OBc0 :: 8GETLAM #A #+ GETLAM ;
DEFINE OBf1 :: 8GETLAM #B #+ GETLAM ;
DEFINE OBf0 :: 8GETLAM #C #+ GETLAM ;
DEFINE OBg1 :: 8GETLAM #D #+ GETLAM ;
DEFINE OBg0 :: 8GETLAM #E #+ GETLAM ;
DEFINE OBk :: 8GETLAM #F #+ GETLAM ;
( ABDATA --------------------------------------------------)
DEFINE ABtype :: 9GETLAM GETLAM ;
DEFINE ABstatus :: 9GETLAM #1+ GETLAM ;
DEFINE ABxpix :: 9GETLAM #2+ GETLAM ;
DEFINE ABypix :: 9GETLAM #3+ GETLAM ;
DEFINE ABg0 :: 9GETLAM #4+ GETLAM ;
Anexo 6. Definiciones de Variables 6
( CEDATA --------------------------------------------------)
DEFINE CEtype :: 10GETLAM GETLAM ;
DEFINE CEstatus :: 10GETLAM #1+ GETLAM ;
DEFINE CEtest :: 10GETLAM #2+ GETLAM ;
DEFINE CEprogT :: 10GETLAM #3+ GETLAM ;
DEFINE CEprogF :: 10GETLAM #4+ GETLAM ;
DEFINE CEx5pix :: 10GETLAM #5+ GETLAM ;
DEFINE CEy5pix :: 10GETLAM #6+ GETLAM ;
DEFINE CEx4pix :: 10GETLAM #7+ GETLAM ;
DEFINE CEy4pix :: 10GETLAM #8+ GETLAM ;
DEFINE CEx3pix :: 10GETLAM #9+ GETLAM ;
DEFINE CEy3pix :: 10GETLAM BINT10 #+ GETLAM ;
DEFINE CEx2pix :: 10GETLAM BINT11 #+ GETLAM ;
DEFINE CEy2pix :: 10GETLAM BINT12 #+ GETLAM ;
DEFINE CEx1pix :: 10GETLAM BINT13 #+ GETLAM ;
DEFINE CEy1pix :: 10GETLAM BINT14 #+ GETLAM ;
DEFINE CEx0pix :: 10GETLAM BINT15 #+ GETLAM ;
DEFINE CEy0pix :: 10GETLAM BINT16 #+ GETLAM ;
DEFINE CEL2 :: 10GETLAM BINT17 #+ GETLAM ;
DEFINE CEL1 :: 10GETLAM BINT18 #+ GETLAM ;
DEFINE CEL0 :: 10GETLAM BINT19 #+ GETLAM ;
DEFINE CEc2 :: 10GETLAM BINT20 #+ GETLAM ;
DEFINE CEc1 :: 10GETLAM BINT21 #+ GETLAM ;
DEFINE CEc0 :: 10GETLAM BINT22 #+ GETLAM ;
DEFINE CEf2 :: 10GETLAM BINT23 #+ GETLAM ;
DEFINE CEf1 :: 10GETLAM BINT24 #+ GETLAM ;
DEFINE CEf0 :: 10GETLAM BINT25 #+ GETLAM ;
DEFINE CEg2 :: 10GETLAM BINT26 #+ GETLAM ;
DEFINE CEg1 :: 10GETLAM BINT27 #+ GETLAM ;
DEFINE CEg0 :: 10GETLAM BINT28 #+ GETLAM ;
DEFINE CEk2 :: 10GETLAM BINT29 #+ GETLAM ;
DEFINE CEk1 :: 10GETLAM BINT30 #+ GETLAM ;
DEFINE CEk0 :: 10GETLAM BINT31 #+ GETLAM ;
(Aceleracion ------------------------)
DEFINE >dH 2PUTLAM
DEFINE >dW 3PUTLAM
DEFINE >eH+dH 4PUTLAM
DEFINE >eW+dW 5PUTLAM
(Actuales ---------------------------)
DEFINE >MBActual 6PUTLAM
DEFINE >PBActual 7PUTLAM
DEFINE >OBActual 8PUTLAM
DEFINE >ABActual 9PUTLAM
DEFINE >CEActual 10PUTLAM
(SBi --------------------------------)
DEFINE >MBi 11PUTLAM
DEFINE >PBi 12PUTLAM
DEFINE >OBi 13PUTLAM
DEFINE >ABi 14PUTLAM
DEFINE >CEi 15PUTLAM
(Eli parte 1 ------------------------)
DEFINE >Box0 16PUTLAM
DEFINE >Xeli 17PUTLAM
DEFINE >Yeli 18PUTLAM
DEFINE >Xpix 19PUTLAM
DEFINE >Ypix 20PUTLAM
DEFINE >XJump 21PUTLAM
DEFINE >YJump 22PUTLAM
DEFINE >eLEN #17 PUTLAM
Anexo 6. Definiciones de Variables 7
DEFINE >CeLEN #18 PUTLAM
DEFINE >Seceli #19 PUTLAM
DEFINE >AnimateEli? #1A PUTLAM
DEFINE >EliGrob #1B PUTLAM
DEFINE >eNList #1C PUTLAM
DEFINE >eNSecini #1D PUTLAM
DEFINE >EliBoost #1E PUTLAM
DEFINE >EliPowDown? #1F PUTLAM
DEFINE >FMDelayOn? #20 PUTLAM
DEFINE >FMDelay? #21 PUTLAM
DEFINE >DelayFM #22 PUTLAM
DEFINE >DelayAniEli #23 PUTLAM
(Mapa -------------------------------)
DEFINE >Map? #24 PUTLAM
DEFINE >Map #25 PUTLAM
DEFINE >MapH #26 PUTLAM
DEFINE >MapW #27 PUTLAM
DEFINE >2MapH #28 PUTLAM
DEFINE >Hgbuffinpix #29 PUTLAM
DEFINE >Wgbuffinpix #2A PUTLAM
DEFINE >InterBox #2B PUTLAM
(MB ---------------------------------)
DEFINE >MBf #2C PUTLAM
DEFINE >MBActualA #2D PUTLAM
DEFINE >MBNum #2E PUTLAM
DEFINE >MBGrobList #2F PUTLAM
DEFINE >ListMBtoRun #30 PUTLAM
DEFINE >SizeListMBtoRun #31 PUTLAM
DEFINE >RunListMBtoRun? #32 PUTLAM
DEFINE >ListListMBtoRun #33 PUTLAM
DEFINE >MBStep #34 PUTLAM
(PB ---------------------------------)
DEFINE >PBf #35 PUTLAM
DEFINE >PBActualA #36 PUTLAM
DEFINE >PBNum #37 PUTLAM
DEFINE >PBGrobList #38 PUTLAM
DEFINE >ListListPBtoRun #39 PUTLAM
(OB ---------------------------------)
DEFINE >OBf #3A PUTLAM
DEFINE >OBActualA #3B PUTLAM
DEFINE >OBNum #3C PUTLAM
DEFINE >OBGrobList #3D PUTLAM
DEFINE >ListListOBtoRun #3E PUTLAM
(AB ---------------------------------)
DEFINE >ABf #3F PUTLAM
DEFINE >ABNum #40 PUTLAM
DEFINE >ABActualA #41 PUTLAM
DEFINE >ABGrobList #42 PUTLAM
DEFINE >ListListABtoRun #43 PUTLAM
(CE ---------------------------------)
DEFINE >CEf #44 PUTLAM
DEFINE >CENum #45 PUTLAM
DEFINE >ListCEtoRun #46 PUTLAM
DEFINE >SizeListCEtoRun #47 PUTLAM
DEFINE >ListListCEtoRun #48 PUTLAM
DEFINE >RunListCEtoRun? #49 PUTLAM
(UE ---------------------------------)
DEFINE >ListUEtoRun #4A PUTLAM
DEFINE >RunListUEtoRun? #4B PUTLAM
DEFINE >SizeListUEtoRun #4C PUTLAM
(CB ---------------------------------)
DEFINE >CBGrobList #4D PUTLAM
DEFINE >BoxGrobindex #4E PUTLAM
DEFINE >BoxGrob #4F PUTLAM
Anexo 6. Definiciones de Variables 8
DEFINE >BoxGrobH #50 PUTLAM
DEFINE >BoxGrobW #51 PUTLAM
(Reloj ------------------------------)
DEFINE >Nciclos #52 PUTLAM
DEFINE >cNciclos #53 PUTLAM
DEFINE >Nciclosinc #54 PUTLAM
(bg ---------------------------------)
DEFINE >bgGrobList #55 PUTLAM
DEFINE >bgGrobList? #56 PUTLAM
(fg ---------------------------------)
DEFINE >fgGrobList #57 PUTLAM
DEFINE >fgGrobList? #58 PUTLAM
(ventana Inventario -----------------)
DEFINE >InvBGrobStd? #59 PUTLAM
DEFINE >InvBGrob #5A PUTLAM
DEFINE >InvBGh #5B PUTLAM
DEFINE >InvBGw #5C PUTLAM
DEFINE >InvdX #5D PUTLAM
DEFINE >InvdY #5E PUTLAM
DEFINE >InvX #5F PUTLAM
DEFINE >InvY #60 PUTLAM
DEFINE >InvGrob0 #61 PUTLAM
(Telepuerto -------------------------)
DEFINE >TeleT? #62 PUTLAM
DEFINE >TeleportFree? #63 PUTLAM
DEFINE >TelepDestino #64 PUTLAM
(Metas ------------------------------)
DEFINE >Goaln #65 PUTLAM
DEFINE >Goalc #66 PUTLAM
DEFINE >Goal? #67 PUTLAM
DEFINE >YouWin #68 PUTLAM
DEFINE >YouWinStd? #69 PUTLAM
(Animaciones ------------------------)
DEFINE >aniH #6A PUTLAM
DEFINE >aniW #6B PUTLAM
DEFINE >aniX #6C PUTLAM
DEFINE >aniY #6D PUTLAM
DEFINE >anig0 #6E PUTLAM
DEFINE >aniDelay #6F PUTLAM
DEFINE >aniLEN #70 PUTLAM
DEFINE >aniFlag #71 PUTLAM
DEFINE >aniMode #72 PUTLAM
(Bombas -----------------------------)
DEFINE >Xbomb #73 PUTLAM
DEFINE >Ybomb #74 PUTLAM
DEFINE >Bomb? #75 PUTLAM
DEFINE >Tbomb #76 PUTLAM
DEFINE >CTbomb #77 PUTLAM
DEFINE >BombType #78 PUTLAM
DEFINE >Xbombpix #79 PUTLAM
DEFINE >Ybombpix #7A PUTLAM
DEFINE >BombGrob #7B PUTLAM
DEFINE >AfterBombGrob #7C PUTLAM
(Shtx -------------------------------)
DEFINE >txList #7D PUTLAM
DEFINE >txN #7E PUTLAM
DEFINE >txW #7F PUTLAM
DEFINE >txH #80 PUTLAM
DEFINE >txG0 #81 PUTLAM
DEFINE >txX1 #82 PUTLAM
DEFINE >txY1 #83 PUTLAM
DEFINE >ShtxDelay #84 PUTLAM
DEFINE >ShtxDelay0 #85 PUTLAM
Anexo 6. Definiciones de Variables 9
DEFINE >ShtxKEY #86 PUTLAM
(Armas ------------------------------)
DEFINE >EliPower #87 PUTLAM
DEFINE >EliPowerIni #88 PUTLAM
DEFINE >NBombs #89 PUTLAM
DEFINE >NPinch #8A PUTLAM
DEFINE >PinchOn? #8B PUTLAM
DEFINE >WorldKeys #8C PUTLAM
DEFINE >WorldMap? #8D PUTLAM
DEFINE >Shield? #8E PUTLAM
DEFINE >ScannerOn? #8F PUTLAM
DEFINE >S+? #90 PUTLAM
(Fx ---------------------------------)
DEFINE >F1 #91 PUTLAM
DEFINE >F2 #92 PUTLAM
DEFINE >F3 #93 PUTLAM
DEFINE >F4 #94 PUTLAM
DEFINE >F5 #95 PUTLAM
DEFINE >F6 #96 PUTLAM
DEFINE >F7 #97 PUTLAM
DEFINE >F8 #98 PUTLAM
DEFINE >F9 #99 PUTLAM
DEFINE >FA #9A PUTLAM
DEFINE >FB #9B PUTLAM
DEFINE >FC #9C PUTLAM
DEFINE >FD #9D PUTLAM
DEFINE >FE #9E PUTLAM
DEFINE >FF #9F PUTLAM
DEFINE >ListListFxtoRun #A0 PUTLAM
(TxInp ------------------------------)
DEFINE >TxMode #A1 PUTLAM
DEFINE >TxBG #A2 PUTLAM
DEFINE >TxNChars #A3 PUTLAM
DEFINE >InpX #A4 PUTLAM
DEFINE >InpY #A5 PUTLAM
DEFINE >InpK #A6 PUTLAM
DEFINE >InpText #A7 PUTLAM
DEFINE >Inpc #A8 PUTLAM
DEFINE >Inpg0 #A9 PUTLAM
DEFINE >Inppl #AA PUTLAM
DEFINE >InpFinish? #AB PUTLAM
DEFINE >InpXpix #AC PUTLAM
DEFINE >InpYpix #AD PUTLAM
DEFINE >TxBGH #AE PUTLAM
DEFINE >TxBGW #AF PUTLAM
DEFINE >TxFlag #B0 PUTLAM
DEFINE >TxBBGx #B1 PUTLAM
DEFINE >TxBBGy #B2 PUTLAM
DEFINE >TxBBGh #B3 PUTLAM
DEFINE >TxBBGw #B4 PUTLAM
DEFINE >TxBBGxpix #B5 PUTLAM
DEFINE >TxBBGypix #B6 PUTLAM
DEFINE >TxInfL #B7 PUTLAM
(Mensajes de texto ------------------)
DEFINE >TxList? #B8 PUTLAM
DEFINE >TxHelp? #B9 PUTLAM
DEFINE >TxObj? #BA PUTLAM
DEFINE >TxList #BB PUTLAM
DEFINE >TxHelp #BC PUTLAM
DEFINE >TxObj #BD PUTLAM
(Pantalla ---------------------------)
DEFINE >MenuOn? #BE PUTLAM
DEFINE >ShowCiclos? #BF PUTLAM
DEFINE >ShowEliCoords? #C0 PUTLAM
(T&M --------------------------------)
DEFINE >T&M? #C1 PUTLAM
Anexo 6. Definiciones de Variables 10
DEFINE >T&Mx #C2 PUTLAM
DEFINE >T&My #C3 PUTLAM
DEFINE >ticks0 #C4 PUTLAM
DEFINE >dticks #C5 PUTLAM
DEFINE >T&Mg0 #C6 PUTLAM
(Memoria ----------------------------)
DEFINE >MEMi #C7 PUTLAM
DEFINE >DMemList #C8 PUTLAM
DEFINE >Nvars #C9 PUTLAM
(Replays ----------------------------)
DEFINE >VKEY #CA PUTLAM
DEFINE >VKEYc #CB PUTLAM
DEFINE >VKEYList #CC PUTLAM
DEFINE >VKEYrec? #CD PUTLAM
DEFINE >VKEYplay? #CE PUTLAM
(Choques ----------------------------)
DEFINE >MBClash? #CF PUTLAM
DEFINE >MBClashX #D0 PUTLAM
DEFINE >MBClashY #D1 PUTLAM
DEFINE >MBClash1? #D2 PUTLAM
DEFINE >MBClash2? #D3 PUTLAM
DEFINE >MBClash3? #D4 PUTLAM
DEFINE >PBClash? #D5 PUTLAM
DEFINE >PBClashX #D6 PUTLAM
DEFINE >PBClashY #D7 PUTLAM
DEFINE >PBClash1? #D8 PUTLAM
DEFINE >PBClash2? #D9 PUTLAM
DEFINE >PBClash3? #DA PUTLAM
DEFINE >HitEli? #DB PUTLAM
DEFINE >AIClash? #DC PUTLAM
DEFINE >AIClashX #DD PUTLAM
DEFINE >AIClashY #DE PUTLAM
DEFINE >AIClash1? #DF PUTLAM
DEFINE >AIClash2? #E0 PUTLAM
DEFINE >AIClash3? #E1 PUTLAM
(Teclado ----------------------------)
DEFINE >KEY #FD PUTLAM
DEFINE >RepK? #FE PUTLAM
DEFINE >KeyboardStd? #FF PUTLAM
DEFINE >KUp #100 PUTLAM
DEFINE >KDown #101 PUTLAM
DEFINE >KLeft #102 PUTLAM
DEFINE >KRight #103 PUTLAM
DEFINE >KHelp #104 PUTLAM
DEFINE >KTakeOb #105 PUTLAM
DEFINE >KMap1 #106 PUTLAM
DEFINE >KMap2 #107 PUTLAM
DEFINE >KMap3 #108 PUTLAM
DEFINE >KGun1 #109 PUTLAM
DEFINE >KGun2 #10A PUTLAM
DEFINE >KGun3 #10B PUTLAM
DEFINE >KSpeedUp #10C PUTLAM
DEFINE >KSpeedDw #10D PUTLAM
DEFINE >KExit #10E PUTLAM
DEFINE >KInventory #10F PUTLAM
(ZxName y ZxMaster ------------------)
DEFINE >ZxName #110 PUTLAM
DEFINE >ZxMaster #111 PUTLAM
(Password ---------------------------)
DEFINE >MasterPassword #118 PUTLAM
DEFINE >MasterPassword? #119 PUTLAM
( MBDATA --------------------------------------------------)
DEFINE >MBtype :: 6GETLAM PUTLAM ;
DEFINE >MBstatus :: 6GETLAM #1+ PUTLAM ;
DEFINE >MBxpix :: 6GETLAM #2+ PUTLAM ;
DEFINE >MBypix :: 6GETLAM #3+ PUTLAM ;
DEFINE >MBtest :: 6GETLAM #4+ PUTLAM ;
DEFINE >MBprogT :: 6GETLAM #5+ PUTLAM ;
DEFINE >MBprogF :: 6GETLAM #6+ PUTLAM ;
DEFINE >MBL1 :: 6GETLAM #7 #+ PUTLAM ;
DEFINE >MBL0 :: 6GETLAM #8 #+ PUTLAM ;
DEFINE >MBc1 :: 6GETLAM #9 #+ PUTLAM ;
DEFINE >MBc0 :: 6GETLAM #A #+ PUTLAM ;
DEFINE >MBf1 :: 6GETLAM #B #+ PUTLAM ;
DEFINE >MBf0 :: 6GETLAM #C #+ PUTLAM ;
DEFINE >MBg1 :: 6GETLAM #D #+ PUTLAM ;
DEFINE >MBg0 :: 6GETLAM #E #+ PUTLAM ;
DEFINE >MBk :: 6GETLAM #F #+ PUTLAM ;
( PBDATA --------------------------------------------------)
DEFINE >PBtype :: 7GETLAM PUTLAM ;
DEFINE >PBstatus :: 7GETLAM #1+ PUTLAM ;
DEFINE >PBxpix :: 7GETLAM #2+ PUTLAM ;
DEFINE >PBypix :: 7GETLAM #3+ PUTLAM ;
DEFINE >PBtest :: 7GETLAM #4+ PUTLAM ;
DEFINE >PBprogT :: 7GETLAM #5+ PUTLAM ;
DEFINE >PBprogF :: 7GETLAM #6+ PUTLAM ;
Anexo 6. Definiciones de Variables 12
DEFINE >PBL1 :: 7GETLAM #7 #+ PUTLAM ;
DEFINE >PBL0 :: 7GETLAM #8 #+ PUTLAM ;
DEFINE >PBc1 :: 7GETLAM #9 #+ PUTLAM ;
DEFINE >PBc0 :: 7GETLAM #A #+ PUTLAM ;
DEFINE >PBf1 :: 7GETLAM #B #+ PUTLAM ;
DEFINE >PBf0 :: 7GETLAM #C #+ PUTLAM ;
DEFINE >PBg1 :: 7GETLAM #D #+ PUTLAM ;
DEFINE >PBg0 :: 7GETLAM #E #+ PUTLAM ;
DEFINE >PBk :: 7GETLAM #F #+ PUTLAM ;
( OBDATA --------------------------------------------------)
DEFINE >OBtype :: 8GETLAM PUTLAM ;
DEFINE >OBstatus :: 8GETLAM #1+ PUTLAM ;
DEFINE >OBxpix :: 8GETLAM #2+ PUTLAM ;
DEFINE >OBypix :: 8GETLAM #3+ PUTLAM ;
DEFINE >OBtest :: 8GETLAM #4+ PUTLAM ;
DEFINE >OBprogT :: 8GETLAM #5+ PUTLAM ;
DEFINE >OBprogF :: 8GETLAM #6+ PUTLAM ;
DEFINE >OBL1 :: 8GETLAM #7 #+ PUTLAM ;
DEFINE >OBL0 :: 8GETLAM #8 #+ PUTLAM ;
DEFINE >OBc1 :: 8GETLAM #9 #+ PUTLAM ;
DEFINE >OBc0 :: 8GETLAM #A #+ PUTLAM ;
DEFINE >OBf1 :: 8GETLAM #B #+ PUTLAM ;
DEFINE >OBf0 :: 8GETLAM #C #+ PUTLAM ;
DEFINE >OBg1 :: 8GETLAM #D #+ PUTLAM ;
DEFINE >OBg0 :: 8GETLAM #E #+ PUTLAM ;
DEFINE >OBk :: 8GETLAM #F #+ PUTLAM ;
( ABDATA --------------------------------------------------)
DEFINE >ABtype :: 9GETLAM PUTLAM ;
DEFINE >ABstatus :: 9GETLAM #1+ PUTLAM ;
DEFINE >ABxpix :: 9GETLAM #2+ PUTLAM ;
DEFINE >ABypix :: 9GETLAM #3+ PUTLAM ;
DEFINE >ABg0 :: 9GETLAM #4+ PUTLAM ;
( CEDATA --------------------------------------------------)
DEFINE >CEtype :: 10GETLAM PUTLAM ;
DEFINE >CEstatus :: 10GETLAM #1+ PUTLAM ;
DEFINE >CEtest :: 10GETLAM #2+ PUTLAM ;
DEFINE >CEprogT :: 10GETLAM #3+ PUTLAM ;
DEFINE >CEprogF :: 10GETLAM #4+ PUTLAM ;
DEFINE >CEx5pix :: 10GETLAM #5+ PUTLAM ;
DEFINE >CEy5pix :: 10GETLAM #6+ PUTLAM ;
DEFINE >CEx4pix :: 10GETLAM #7+ PUTLAM ;
DEFINE >CEy4pix :: 10GETLAM #8+ PUTLAM ;
DEFINE >CEx3pix :: 10GETLAM #9+ PUTLAM ;
DEFINE >CEy3pix :: 10GETLAM BINT10 #+ PUTLAM ;
DEFINE >CEx2pix :: 10GETLAM BINT11 #+ PUTLAM ;
DEFINE >CEy2pix :: 10GETLAM BINT12 #+ PUTLAM ;
DEFINE >CEx1pix :: 10GETLAM BINT13 #+ PUTLAM ;
DEFINE >CEy1pix :: 10GETLAM BINT14 #+ PUTLAM ;
DEFINE >CEx0pix :: 10GETLAM BINT15 #+ PUTLAM ;
DEFINE >CEy0pix :: 10GETLAM BINT16 #+ PUTLAM ;
DEFINE >CEL2 :: 10GETLAM BINT17 #+ PUTLAM ;
DEFINE >CEL1 :: 10GETLAM BINT18 #+ PUTLAM ;
DEFINE >CEL0 :: 10GETLAM BINT19 #+ PUTLAM ;
DEFINE >CEc2 :: 10GETLAM BINT20 #+ PUTLAM ;
DEFINE >CEc1 :: 10GETLAM BINT21 #+ PUTLAM ;
DEFINE >CEc0 :: 10GETLAM BINT22 #+ PUTLAM ;
DEFINE >CEf2 :: 10GETLAM BINT23 #+ PUTLAM ;
DEFINE >CEf1 :: 10GETLAM BINT24 #+ PUTLAM ;
DEFINE >CEf0 :: 10GETLAM BINT25 #+ PUTLAM ;
DEFINE >CEg2 :: 10GETLAM BINT26 #+ PUTLAM ;
DEFINE >CEg1 :: 10GETLAM BINT27 #+ PUTLAM ;
DEFINE >CEg0 :: 10GETLAM BINT28 #+ PUTLAM ;
DEFINE >CEk2 :: 10GETLAM BINT29 #+ PUTLAM ;
DEFINE >CEk1 :: 10GETLAM BINT30 #+ PUTLAM ;
DEFINE >CEk0 :: 10GETLAM BINT31 #+ PUTLAM ;
(-------------------------------------------------------------------)