Planeta AsturLiNUX

December 07, 2014

Miry

Hackergotchi

Falling Trees, by Robert Fulghum

07 Dec 2014 - 20:35   (http://www.miriamruiz.es/weblog/?p=767#comments comentario/s)

In the Solomon Islands in the south Pacific some villagers practice a unique form of logging. If a tree is too large to be felled with an ax, the natives cut it down by yelling at it. (Can’t lay my hands on the article, but I swear I read it.) Woodsmen with special powers creep up on a tree just at dawn and suddenly scream at it at the top of their lungs. They continue this for thirty days. The tree dies and falls over. The theory is that the hollering kills the spirit of the tree. According to the villagers, it always works.

Ah, those poor nave innocents. Such quaintly charming habits of the jungle. Screaming at trees, indeed. How primitive. Too bad thay don’t have the advantages of modern technology and the scientific mind.

Me? I yell at my wife. And yell at the telephone and the lawn mower. And yell at the TV and the newspaper and my children. I’ve been known to shake my fist and yell at the sky at times.

Man next door yells at his car a lot. And this summer I heard him yell at a stepladder for most of an afternoon. We modern, urban, educated folks yell at traffic and umpires and bills and banks and machines–especially machines. Machines and relatives get most of the yelling.

Don’t know what good it does. Machines and things just sit there. Even kicking doesn’t always help. As for people, well, the Solomon Islanders may have a point. Yelling at living things does tend to kill the spirit in them. Sticks and stones may break our bones, but words will break our hearts….

by Robert Fulghum (All I Really Need To Know I Learned In Kindergarten)

Alea

Hackergotchi

TUTORIAL DE DAAD - Parte 2

07 Dec 2014 - 18:23   

Antes de empezar con la segunda parte comentar que en la primera se a mejorado la explicación de como generar la versión de spectrum y se han modificado los textos de las localidades para que incluyan acentos, en la parte de mensajes doy mas detalles sobre eso.

Ademas he incluido un archivo tal como quedaria al final del primer tutorial.


Diagnostico (DEBUG)

Realmente no hay mucha información sobre cómo realizar un depurado de la aventura con el CAAD, veremos las opciones que aparecen en el manual y las que se usan de ejemplo en el codigo fuente de ejemplo de Los templos sagrados.


Por un lado el compilador admite el modificador “-d”, entre otras cosas define el simbolo DEBUG, si esto lo juntamos con las opciones de preprocesador, podemos añadir temporalmente partes del archivo SCE, por ejemplo para tener una palabra “mágica” que nos cambie de localidad, para poder salir fácilmente de un laberinto, que nos de objetos o ajuste banderas, por si queremos depurar una parte del final de la aventura, y no queremos jugarla entera hasta llegar a ese punto, etc, etc…

Por otro lado, existen unos interpretes con la opción de debug, en el caso del español serian INTSD.EXE e INTSDM.EXE, que en caso de aparecer errores en el programa, aparecerá en la parte de arriba de la pantalla información sobre el error.

Procesos y Respuestas

Las tablas de procesos son el núcleo principal de la programación del juego, y es donde definiremos los PSI, las trampas, y cualquier otra función del juego que no sea el simple movimiento y/o coger/dejar objetos.

Estas están formadas por entradas, cada entrada comienza con una linea que indica un verbo y un nombre (o el símbolo comodín "_") y un condact (una orden en el lenguaje de DAAD), seguida de mas lineas con condacts hasta la siguiente linea con verbo y nombre.

Si el verbo y nombre coinciden con los que se están evaluando sacados de la linea de ordenes, se ejecutara dicha entrada.

En paws el ciclo de juego es controlado internamente, una vez se acaba la frase, se vuelve a pedir otra, se ejecutan ciertas tablas de procesos en determinadas ocasiones, etc...

Toda esta preprogramacion en el DAAD no existe, de echo al arrancar el juego se ejecuta la tabla de procesos 0, y si se sale de dicha tabla, se finalizaría el juego.

La principal y mas importante diferencia entre DAAD y PAWS es que en paws la pareja VERBO-NOMBRE solo se comprobaba en la tabla de respuestas, mientras que las tablas de procesos se ejecutaban siempre, usando el verbo-nombre a modo de comentario.
En DAAD siempre se evalua el verbo-nombre, por lo que aquellos procesos que siempre se tienen que evaluar, deben utilizar siempre "_    _". Si necesitas utilizar comentarios utiliza en simbolo ";".

Mensajes

Vamos ahora a permitir que el jugador examine cosas, dos partes, por un lado tenemos que definir el texto que aparecerá cuando tecleemos “examinar bolsa”, esto se realiza en la tabla de mensajes, con un formato similar al de las descripciones de localidades.

/MTX    ;Mensajes
/0
Una saludable, gorda y verde manzana golden.
/1
Es un emparedado delicioso de jamón y queso.
/2
El billete tiene un número y el nombre de la compañía de transportes para aventureros,
impreso.
/3
El banco está anclado firmemente a una base de concreto.


Hay una serie de caracteres especiales que se pueden imprimir utilizando una "secuencia de escape", que consiste en el simbolo "\" y un caracter (distinto en mayusculas y minusculas), entre ellos destacaremos:

\s  es un espacio, se utiliza para forzarlo al final de un mensaje.

\\ es el simbolo "\"

Y los mas importantes \F \G \H \I \J  son las vocales acentuadas á é í ó ú, \K \L son la ñ minuscula y Ñ mayusculas, \O y \P son ü y Ü, otro simbolos son \A = ª, \B = ¡, \C =¿, \D y \E son <<  y >> , \M y \N son ç y Ç.

Existe también la tabla /STX, que contiene los mensajes del sistema, y son utilizados internamente en varias situaciones, no deberiamos modificar el sentido de esas frases o usarlas para otra cosa distinta, pues podria dar lugar a errores o sinsentidos.

Y por otro lado vamos ahora a indicar al parser, cuando debe indicar estos mensajes.

En este ejemplo el proceso 5 es el encargado de la evaluación de las frases del jugador, asi que insertaremos antes de la linea MIRAR   _       RESTART las siguientes líneas:

EX MANZAN PRESENT 3
                MESSAGE 0
                DONE

EX EMPADE PRESENT 2
                MESSAGE 1
                DONE

EX BILLETE PRESENT 4
                MESSAGE 2
                DONE

EX BANCO AT 4
                MESSAGE 3
                DONE

Mirar y EX son sinonimos, debemos colocar estas lineas antes, pues si el parser al ejecuta el condact restart saldra de la tabla de procesos.

En los tres primeros grupos comprobamos si el objeto está presente, imprimimos el mensaje y damos por finalizada la orden.

En el cuarto caso lo que comprobamos es que estemos en la localidad 4, que es donde esta el banco, que no es un objeto, pero vamos a permitir examinarlo.

Tablas de procesos

En el PAWS, los procesos 1 y 2 son llamados antes y despues de cada turno, en DAAD el sistema es mas flexible, si se observa el archivo de ejemplo y se recuerda lo que comentamos de que al iniciar el juego se ejecuta la tabla de procesos 0 y al finalizarla se acababa el juego, vemos:

Si estamos en la localidad 0 (la inicial) se llama al proceso 6, este es el que utilizaremos para la pantalla inicial de presentacion y otras cosas ha realizar al comienzo del juego.

Luego se muestra la pantalla grafica de la localidad y se describe la localidad, tras eso se llama al proceso 3, (este es el antiguo proceso 1 del PAWS), aqui es donde se describen los objetos de la localidad.

Finalmente se salta al proceso 1, este es el bucle principal del juego, si este proceso finalizase, volveriamos al 0, y al acabar el 0 se terminaria el programa.

En el proceso 1 lo primero que se hace es llamar al proceso 4 (el antiguo proceso 2 del PAWS), en nuestro ejemplo esta vacio.

En el resto del proceso 1 se observa que en caso de una frase que no entienda o de un timeout, se llama al proceso 2, luego se llama al proceso 5 para ver si hay algo que hacer, y en caso de que no se haya echo nada, se comprueba si la orden era un movimiento,  y se vuelve a pedir otra orden.

Esta complejidad que no existia en el paws (en realidad que no era visible al programador) nos permitira en el futuro mas complejidad en los juegos.

 Vamos ahora a añadir un final para el juego y ver como podemos utilizar nosotros nuevos procesos.
Añadimos un nuevo mensaje a la tabla /MTX:

/4
El autobús llega. Le doy el billete al conductor, quien sonríe y dice: "siento haber llegado
tarde, supongo que no ha tenido que esperar mucho".


Añadimos un nuevo nombre al vocabulario:

AUTOBU  64 noun

Y añadimos una nueva entrada al proceso 5:

_ AUTOBUS AT 2
                CARRIED 4
                MESSAGE 4
                PROCESS TURNOS
                END

De esta manera cuando volvamos a la parada, llevando el billete, bastara que escribamos cualquier cosa con la palabra autobus, para que este llegue y termine el juego, por ejemplo “ESPERAR AUTOBUS”.

Pero si lo compilamos ahora va a dar error, en el paw existen dos contact TURNS y SCORE, que imprimen unos mensajes y el valor de una banderas, pero como ya hemos comentado en CAAD esto se deja al programador del juego.

Aprobecharemos para ver un ejemplo del uso de los defines.

Asi, debemos ir al principio del documento, y tras la inclusion del archivo symbols.sce escribimos:

#define TURNOS 7


Esto nos permite crear una nueva tabla de procesos con la orden
/PRO TURNOS
Que es equivalente a
/PRO 7
Podemos considerar las tablas de procesos como subrutinas de programacion, asi que escribiremos:

/PRO TURNOS
_       _       sysmess 17
                dprint Turns
                sysmess 18
             
_       _       GT Turns 1
                sysmess 19
             
_       _       sysmess 20
                sysmess 21
                print   Score
                sysmess 22


Cuando en las tablas de procesos se utiliza como verbo y nombre el simbolo "_" se va a ejecutar siempre, asi que estos condactos se ejecutaran siempre imprimiento in mensaje tipo "Ha jugado durante 17 turnos. Y a realizado un 50%."

Notese que "Score" y "Turns" son dos simbolos definidos en el archivo SYMBOLS.SCE que viene incluido al principio, y corresponde a las banderas 30 y 31.

Gracias al define, ahora la linea PROCESS TURNOS si tendra sentido, y cuando se llegue a ella se ejecutara el proceso 7.

A lo largo del tutorial hemos visto los condactos que finalizan entradas, vamos a describirlos uno a uno:
  • REDO - vuelve a iniciar la tabla de procesos, en el proceso 1 es responsable del bucle tras una orden valida.
  • RESTART - sale de todos los procesos y vuelve a ejecutar el proceso 0
  • DONE - hace que la tabla de procesos actual finalize, e indica a DAAD que fue satisfactoriamente. esto puede ser comprobado desde la tabla de procesos padre con los condact ISDONE e ISNDONE
  • END - aparece el mensaje "¿Quieres volver a jugar otra vez?" en caso de que la respuesta no empieze por el mensaje del sistema 31 ("s") se saldra al sistema operativo o reiniciara el ordenador.
En el manual de DAAD encontraras mas condacts para el control de la ejecucion.

Contenedores

Los objetos que pueden tener otros objetos sigue la misma filosofía que en el PAWS, utilizamos una habitación como interior del objeto, caad incluye una serie de condacts para facilitar el trabajo,
Técnicamente no es necesario que la localidad tenga el mismo numero que el objeto, pero facilita las cosas, p.e. si utilizas un #DEFINE, en nuestro ejemplo dejamos a posta la localidad 1 vacía, que es el mismo numero que el objeto bolsa.
Añadimos un mensaje para cuando miremos dentro:

/5
En la bolsa hay:


Sacar no esta en la lista de verbo:

SACAR   32      verb

Y por ultimo el codigo en el proceso 5, hay que incluir unas lineas entra las existentes, asi que voy a poner un bloque de codigo, incluyendo lineas que ya existen del archivo BLANK.SCE original:

PONER   TODO    DOALL   CARRIED


PONER   _       NOUN2 BOLSA

                PREP EN
                PRESENT 1
                AUTOP 1
                DONE


PONER   _       AUTOW

                DONE


SACAR   TODO NOUN2 BOLSA

                PREP DE
                PRESENT 1
                DOALL 1


SACAR   _ NOUN2 BOLSA

                PREP DE
                PRESENT 1
                AUTOT 1
                DONE 


Junto a poner introducimos las lineas, es necesario añadir nuestro PONER _  delante del existente, pues en caso contrario intentaria vestir el objeto, asi que comprobamos si ademas de PONER nombre la frase incluye "EN BOLSA".

Sacar es un verbo nuevo, incluimos una linea que repita para todos los objetos de la localidad 1 (la bolsa) y luego la orden en si que comprueba que la frase sea del tipo "SACAR nombre DE BOLSA" y lo saca automaticamente.

Notese que en SACAR TODO hemos comprobado tanto la preposicion como el segundo nombre, en teoria solo haria falta el nombre, pero si escribiesemos "SACAR TODO DEL BOLSA" el parser no haria nada, ya que una vez a ejecuta el SACAR TODO completa, considera la frase como buena y vuelve a pedir otra, de esta manera la misma frase no aplicaria y al no poder terminarse SACAR TODO, al final imprimiria un "No puedo hacer eso".

AUTOP y AUTOT  (asi como sus homologos PUTIN y TAKEOUT) realizan una serie de comprobaciones, como evitar que cojas mas objetos de los que puedes llevar (flag 37) el peso (flag 52) o incluso que intentes meter en el contenedor un objeto que llevas puesto (antes tienes que quitartelo).

Vamos ahora a ver un contact nuevo de DAAD, SYNONYM.

A la hora de dar flexibilidad, podemos definir varios nombres o verbos con el mismo numero, asi SACAR y EXTRAER podria ser sinonimos, en el caso de PONER y METER, esto solo es cierto en el caso de un contenedor, pero no en el de ropa ¿METER ANORAK?, asi que antes de la linea de PONER TODO, vamos a incluir esto:

METER     _    
PREP EN
SYNONYM PONER _

De esta manera cuando el parse se encuentre con frases tipo "METER nombre EN nombre2", sustituira el verbo METER por PONER, y a partir de ese momento la frase sera "PONER nombre EN nombre2".

Hemos comentado que PUTIN y TAKEOUT tienen en cuenta el peso y el numero de objetos que puede llevar el personaje, pero la bolsa al fin y al cabo es una localidad y como tal tiene espacio infinito para los objetos. empecemos por añadir un limite al nº de objetos:

En DAAD las banderas 0 a 63 se utilizan internamente, la primera libre es la 64, es la que utilizaremos para llevar la cuenta de objetos en la bolsa, es conveniente documentar su uso en alguna parte del documento, una buena idea es utilizar #DEFINE para darle un nombre, asi que en la parte inicial del archivo escribiremos:

; Banderas utilizadas en el juego
#DEFINE FsizeBolsa 64


debemos descontar uno cada vez que saquemos un objeto, y aumentar en uno cada vez que lo metamos, vamos a hacer que la bolsa sea pequeña y solo entren 3 objetos, así que debemos comprobar que FsizeBolsa vale menos de 3 antes de meter algo en la bolsa.

Quedarían así :

PONER   _       PREP EN

                NOUN2 BOLSA
                PRESENT 1
                LT FsizeBolsa 3
                AUTOP 1
                PLUS FsizeBolsa 1
                DONE

PONER   _       PREP EN

                NOUN2 BOLSA
                PRESENT 1
                GT FsizeBolsa 2
                MESSAGE 6
                DONE

SACAR   _ NOUN2 BOLSA
                PREP DE
                PRESENT 1
                AUTOT 1
                MINUS FsizeBolsa 1
                DONE

Hemos duplicado PONER _ , hay una comprobación LT FsizeBolsa 3, en caso de que el valor no sea menor de 3, saltaría el resto de condacts y seguiría la tabla de procesos, así que comprobamos si el problema es que había demasiados he imprime el mensaje:

/6
No puedo meter _, la bolsa esta llena.


Cabe destacar el símbolo _ que en el mensaje es sustituido por el texto del objeto actual (y le quita el punto del final, si lo lleva), así si intentamos meter la antorcha, y hay 3 objetos el mensaje seria algo así a "No puedo meter la antorcha apagada, la bolsa esta llena.

Como en el resto de condact la serie solo continua si el anterior fue correcto, asi que la orden PLUS y MINUS colocadas detrás de AUTOP y AUTOT solo se ejecutan si estas son correctas.

 Para el peso se haria algo similar, lo voy a dejar como ejercicio, y en próximas entregas daré la solución, pero unas pistas:

WEIGHT objno. flagno.  calcula el peso de un objeto (o un contenedor) y lo pone en flagno.
WHATO evalua el nombre y adjetivo 1 y actualiza una serie de flags con la info del objeto, entre ellos el flag 55 definido como COWei con el peso del objeto nombrado.

El archivo SCE tal como quedaria tras esta parte se puede descargar de este link: https://dl.dropboxusercontent.com/u/15390320/pajarito_2.SCE

Al otro lado del Pajares

Hackergotchi

Tormentas

07 Dec 2014 - 09:48   

En ocasiones Sydney encadena varios días consecutivos de tormentas. En esta ocasión llevamos 10 días de calor y fuertes tormentas por la tarde. Estas tormentas veraniegas suelen llegar del interior (el oeste) donde se forman espectaculares nubes. Gracias al radar meteorológico es fácil ver el avance de estas nubes y puedes planificar cuándo conviene salir de casa y cuándo hay que correr para evitar el chaparrón.

Además de los estragos causados por las trombas de agua y las ráfagas de viento, las tormentas de estos días llaman la atención por la violencia de los rayos y truenos. La ciudad ha sido sacudida por muchos rayos, que han causado varios heridos y el incendio en una subestación eléctrica a dos manzanas de mi casa.

Normalmente solo publico mis propias fotos en este blog, pero hoy voy a hacer una excepción. Un joven fotógrafo llamado Roland Taylor realizó esta llamativa composición combinando 20 exposiciones en un periodo de 30 minutos durante la tormenta del pasado miércoles. Él mismo explica el proceso que siguió para elaborar esta imagen.


Este tiempo no es nada extraordinario en Sydney. Desde que llegué ya he asistido a varios episodios similares. Los que llevan aquí más tiempo se acuerdan de la apocalíptica "tormenta roja" de 2009, o la costosa granizada de 1999.

December 02, 2014

mones

Hackergotchi

An useful new feature of git

02 Dec 2014 - 23:46   (http://mones.livejournal.com/110432.html comentario/s)

Just read in LWN that git 2.2.0 is coming with the support for signed pushes. What's that? Well, name says it all: you can sign with your public PGP key the 'git push' operation, which of course can be checked on the corresponding server side hook.

This opens a new way of contributing to public repositories without the need to have an actual account on the machine, which is always good for sysadmins :-) and security, of course. In the case of Claws Mails, translators could be pushing their translations, for example, which cold be also good for our release manager too ;-).

December 01, 2014

Alea

Hackergotchi

TUTORIAL DE DAAD - Parte 1

01 Dec 2014 - 22:16   

INTRODUCCION

Una de las mejores cosas del manual de PAWS era que en lugar de limitarse a mostrar una referencia de todo el sistema, incluia una aventura, "El billete" a modo de tutorial, que nos guiaba paso a paso en la tarea de crear una aventura.
Vamos a seguir el mismo concepto y crear la misma aventura, pero con DAAD, en este tutorial me limitare a indicar las diferencias con el PAWS, por lo que es necesario tener a mano dicho manual  y leerlo en paralelo, asi como el propio de DAAD para referencia, pues solo haremos incapie en las partes que son diferentes.

EMPEZANDO

El archivo disponible para bajar contiene una version de DOSBOX portable, asi como un "disco duro virtual" con el DAAD ya instalado, incluyendo algunas utilidades adicionales, el editor para windows superglus y emuladores de varios sistemas.
la carpeta HDD es una suerte de "disco duro virtual", todo lo que se incluya en esta carpeta, aparecera en el disco duro C: de dosbox.
Creamos una carpeta de trabajo dentro del directorio hdd\DAAD, p.e. "pajarito" (vamos a usar ms-dos, no uses mas de 8 letras).
copiamos el archivo blank.sce dentro de esa carpeta y lo renombramos.
Ahora abrimos el programa superglus y lo editamos.



LOCALIDADES Y CONEXIONES

Vamos a crear las localidades del tutorial, en este caso estan dentro de la seccion /LTX
Cada localidad empieza por una "/" seguida del numero de localidad.
Las localidades deben ser corelativas, para que no nos de problemas de compilacion, hay que incluir todas las localidades, aunque no se usen o no tengan ninguna salida ( y lo mismo se aplica a la seccion siguiente de conexiones).
podemos copiar lo siguiente en la parte correspondiente de la pestaña TOK (estan corregidos algunso "bug" del tutorial del PAWS referente a las direcciones):

/LTX    ;Location Texts
/0
El billete

Mientras esperaba el autob\Js una r\Ffaga de viento se llev\I mi billete. \CPuede Vd.
ayudarme a encontrarlo?

/1

/2
Estoy en la parada del autob\Js en una calle de direcci\In Norte - Sur. Al Oeste queda un parque cuya verja de hierro est\F abierta

/3
La hierba sobre la cual camino est\F muy bien cuidada. Hacia el Norte
hay un c\Imodo banco y hacia el Oeste queda un estanque

/4
Estoy en un camino de grava que va de Este a Oeste, muy cercano a un c\Imodo banco.
Hacia el Sur hay un cuidado c\Gsped y hacia el Norte hay un pabell\In de musica

/5
Estoy en el pabell\In de musica. Al Sur hay un camino de grava

/6
El sol crea bellos efectos de luz en la superficie del estanque, mecida por una suave brisa. Hay un camino al Norte que termina en un lloroso sauce. Al Este queda un cuidado c\Gsped

/7
Estoy al lado de un sauce llor\In. Al Sur queda el estanque

/8
Estoy sentado en una rama del sauce, con una vision panor\Fmica del parque; lejos, al
Este, mas alla de la verja del parque, puedo ver la parada del autobus

Recordar que una linea en blanco al final, significa que añadira un retorno de carro a la descripcion.
Ahora tenemos que editar las conexiones de cada localidad, en la seccion "/LOC", ponemos una linea "/"numero_de_localidad y luego lineas con pares verbo localidad,
siguiendo el ejemplo del PAWS, seria:

/CON    ;Conexiones
/0
/1
/2
O 4
/3
N 4
O 6
NO 7
/4
N 5
E 2
S 3
SO 6
O 7
/5
S 4
SO 7
/6
N 7
NE 4
E 3
/7
ARRIBA 8
NE 5
E 4
SE 3
S 6
/8
BAJAR 7

Solo queda un detalle, vete al final del archivo y cambia el GOTO 1 por GOTO 2 (explicacion: en la tabla de respuestas se indica que en caso de estar en la localidad 0 se ejecute el proceso 6, y al final del proceso 6 se salta a la verdadera localizacion inicial, lo explicaremos con mas detalle en otro capitulo).
Tambien tenemos que modificar la linea:
        SKIP    -1      ; para indicer que hemos inicializado
por:
        SKIP    -2      ; para indicer que hemos inicializado
ya que si no el bucle que limpia las banderas no se ejecuta correctamente. (gracias a Alan_Smithee por reportarlo).

Es el momento de guardar el archivo SCE y probar todo lo que hemos hecho.
Abrimos dosbox, entramos en la carpeta del DAAD (recordad "CD DAAD") y compilamos el archivo:

DC pajarito\pajarito.sce

Si todo va bien, deberia compilar, con warnings, por culpa de los caracteres con acentos, ñ y demas, pero sin errores, si aparece algun error vigila los espacios en blanco y los saltos de linea, que dan problemas, pues solo estan permitidos en las descripciones de texto para indicar un salto de linea.
Ahora copiamos el archivo INTSD.EXE del la carpeta D5 en la carpeta de trabajo, y lanzamos la aventura:

INTSD pajarito

¡Y voila!, podemos probar la aventura y comprobar que nos podemos mover por todas las localizaciones.

OBJETOS

Los objetos se definen en dos partes, por un lado las palabras del vocabulario con las que nos vamos a referir a ellos, en la seccion /VOC sustituimos la linea

LINTER  100     noun

Por las siguientes:

ANTORC  50      noun
BOLSA   51      noun
EMPARE  52      noun
MANZAN  53      noun
BILLET  54      noun
PIEDRA  55      noun
ANORAK  56      noun

Ademas añadimos dos adjetivos a la lista:

ENCEND  100     adjective
APAGAD  101     adjective

Ahora definimos la descripcion de los objetos:

/OTX    ;Object Texts
/0
Una antorcha encendida.
/1
Una bolsa.
/2
Un emparedado.
/3
Una manzana.
/4
Un billete de autobus.
/5
Una piedra.
/6
Un anorak.
/7
Una antorcha apagada.

Ahora vamos a definir las propiedades del objeto, en la pestaña TOK al final esta la seccion /OBJ:
/OBJ    ;Objetos
;obj  starts  weight  c w  5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0    noun   adjective
;num    at
/0      _       1     _ _  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _    ANTORC ENCEND
/1      2       3     Y _  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _    BOLSA  _
/2      CARRIED 1     _ _  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _    EMPARE _
/3      CARRIED 1     _ _  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _    MANZAN _
/4      8       1     _ _  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _    BILLET _
/5      3       1     _ _  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _    PIEDRA _
/6      WORN    1     _ Y  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _    ANORAK _
/7      CARRIED 1     _ _  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _    ANTORC APAGAD

A diferencia de PAWS, se utiliza _, WORN o CARRIED para indicar objetos que aun no existen o son portados, sigue funcionando el concepto de PAW de las localidades  252,253,254, pero existen unos alias por defecto para facilitar la lectura, en el archivo symbols.sce hay definidos una serie de alias adicionales.
Los alias se pueden utilizar en varios sitios, asi por ejemplo si definiesemos al principio del archivo:

#DEFINE PARADA 3

Luego podriamos utilizarlos en las deficiones de localidad y utilizar /PARADA en lugar de /3, que hace la lectura del codigo fuente mas sencilla, en la capeta templos1 hay un ejemplo complejo de aventura que hace uso de este concepto.

El monton de "_" que hay detras de las indicaciones de contenedor y "vestible", son unos flags genericos que luego podemos utilizar para lo que queramos .
 Vamos tambien ahora a difinir una serie de palabras, pare evitar el mensaje "Aqui no hay nada de eso." cuando intentamos coger algo que aparece en la descripcion y no es un objeto.
Añadimos mas nombres en la seccion /VOC

PUERTA  57    noun
REJA    58    noun
HIERBA  59    noun
CAMINO  60    noun
BANCO   61    noun
ESTANQ  62    noun
ARBOL   63    noun
RAMA    63    noun
HOJA    63    noun 

Y volvemos a compilar y probar que todo funciona como describimos.

COMPILANDO PARA SPECTRUM

Ahora que tenemos algo medianamente jugable, vamos a ver que pasos hay que seguir para compilar la aventura en otros sistemas, empezaremos con el spectrum:
Se ha simplificado un poco el proceso, aprobechando las nuevas herramientas y los emuladores, asi que ahora el proceso consta de dos partes:

  1. Compilamos la aventura, con una diferencia, añadimos el parametro -m1
  2. llamamos al programa TOSPEC1.BAT indicando la ruta del archivo .DDB creado y se generara un archivo CINTA.TAP listo para cargar en el emulador o en el ordenador real.
Por ejemplo si mi archivo .SCE esta en C:\DAAD\pajarito\ y el proceso de compilacion ha generado un archivo llamado pajarito.ddb tengo que ejecutar la orden:

c:\DAAD> TOSPEC1.BAT pajarito\pajarito.ddb

Vamos a examinar esta "cinta" con mas calma.

  • Un cargador "basic" se encarga de cargar todo lo demas, es una pequeña modificacion del "DRS" que aparece en el disco del +3
  • Un bloque de bytes, el interprete, sacado del disco de +3 tambien.
  • Un bloque de bytes, al aventura segun sale del compilador DC.EXE
  • Un bloque de bytes, la parte grafica y los tipos de letra, se obtiene del programa DG del disco del +3, y por ahora es un bloque "vacio" necesario por culpa de los tipos de letra.

Podemos cargar la cinta en el spectrum (real o emulador) y comprobar que todo funciona.
Y hasta aqui la primera parte de este tutorial sobre el DAAD, no dudes en dejar los comentarios o sugerencias que considere oportunos.

El archivo SCE tal como quedaria tras esta parte se puede descargar de este link: https://dl.dropboxusercontent.com/u/15390320/pajarito_1.SCE

TUTORIAL DE DAAD - Parte 0

01 Dec 2014 - 22:15   

Y comenzamos con otro de tantos proyectos que voy a dejar inconclusos (Aviso ahora para que luego no haya decepciones).

Aprovechando que por fin se ha podido recuperar el sistema de creación multiaventura de Aventuras AD S.A. y que lo han puesto en dominio publico y que siempre tuve mucha curiosidad por saber como funcionaba, voy a crear un pequeño tutorial sobre como manejarlo, a ver si llega a buen puerto.

Para facilitar el desarrollo, he creado un archivo .ZIP que contiene dicho software, asi como el programa Dosbox para emular al msdos, varios emuladores de microordenadores y el editor superglus que es compatible con el DAAD.
También he añadido alguna pequeña chapuza de cosecha propia, por ejemplo para crear archivos .TAP desde el ms-dos, con la aventura en versión spectrum, lista para cargar y jugar.
A medida que avance en el tutorial iré publicando aquí las revisiones de este archivo.

La version actual es de fecha 1 de Diciembre de 2014 y se puede bajar de este enlace:
https://www.dropbox.com/s/l688butzewr3yd7/DAAD_RTR_151202.rar?dl=0

En el archivo se encuentra:
- Los primeros discos del DAAD descomprimidos.
- El programa DOSBOX 0.76 en version portable.
- El editor SUPERGLUS 1,2 en version portable.
- El emulador ZX Spin 0.666
- El programa tapmaker.exe compilado con djgpp y sacado de las fuentes de z88dk.
- Los manuales del PAWS en español y el del DAAD en ingles.

Changelog
2 Dic 15 - > Actualizado el archivo, faltaba la carpeta DJGPP dentro de HDD.