PAWSEZ 0.5

(c) Noviembre 2000 |Zak|
Ampliado y corregido por JSJ (c) 2001
-------------------------------------

Esta version se publica por el inters que pueda tener para algunos, pero
est muy indocumentada. Si quieres usarlo, modificarlo, adaptarlo, o
borrarlo, eres libre, pero ests t solo frente al peligro.


OBJETIVO
--------

Convertir viejos juegos de Spectrum programados en PAWS a cdigo fuente
Inform (que no InformATE), de modo que puedan ser compilados para generar
codigo Z o Glulx, y asi hacer ms accesibles estos juegos a las modernas 
plataformas.

El cdigo fuente Inform resultante es legible y hasta cierto punto
mantenible, aunque su estructura y filosofia es la de un programa PAWS y no
la de InformATE, por lo que no posee gramtica ni orientacin a objetos ni
otras maravillas de los lenguajes de alto nivel.


USO
---

Necesitas el juego de spectrum en version .sna. El .z80 no vale, asi que
convirtelo primero.

1) Extraer el programa PAWS del .sna

    UNPAWS caverna.sna > caverna.p


2) Filtrar los caracteres de control (requiere el programa sed)

    SED -f colores.sed < caverna.p > caverna.paw

(Se incluye en el paquete el caverna.paw que se obtiene de este modo).

Tambin se podia haber filtrado con:

    SED -f sincolor.sed < caverna.p > caverna.paw


3) Edita el fichero caverna.paw para echar un vistazo a los mensajes. Vers
que en lugar de vocales acentuadas salen otros caracteres raros. Esto es
porque el Spectrum no tena acentos y los juegos redefinan otros caracteres
poco usados para dar cabida a las nuevas letras. En cada juego puede ser
diferente el carcter usado. Apunta las equivalencias entre caracteres
raros y letras acentuadas.

De paso "edita a mano" algunos mensajes complicados, que usaran caracteres
graficos para lograr algn efecto en pantalla (como el prompt, o la
linea separadora) y cmbialo por algo ms simple, como ">>", o "-------".


4) Escribe un fichero llamado caverna.ac que liste las equivalencias entre
caracteres raros y acentos/ees. Se adjunta un caverna.ac de ejemplo.


5) Conversion a Inform (requiere gawk)

    GAWK -f Pawsez.awk caverna.paw
    [Mensajes de progreso.........]

Resultado: 

 caverna.voc -> Vocabulario
 caverna.mes -> Tablas de mensajes (usuario y sistema)
 caverna.loc -> localidades del juego
 caverna.obj -> Objetos
 caverna.pro -> procesos
 caverna.buc -> Cuerpo de los bucles DOALL
 caverna.pic -> Funcion para mostrar los dibujos, est vaca y no se
                usa, de momento.
 caverna.inf -> Programa principal


7) Inclusin de grficos:

NOTA: Slo podrn incluirse grficos si compilamos para Glulx.

Evidentemente debemos disponer de los grficos, bien en formato PNG o en formato JPEG.
Hay que generar un fichero .blc, que tendr la siguiente estructura:

    Exec 0 GLUL caverna.ulx
    Pict 1 PNG grf/01.png
    Pict 2 JPEG grf/02.jpg

Cada grfico corresponde a una localidad. El nmero del grfico (el que va tras Pict)
ser el mismo que el de su localidad. Si alguna localidad no tiene grfico no se incluye
y PAWSEZ no lo dibujar.

PAWSEZ mostrar los grficos centrados en la parte superior de la pantalla. Para ello
abrir una ventana en la parte superior de igual altura que el grfico a mostrar.

Adems si inclumos un grfico con nmero 1000 lo mostrar como fondo, por ejemplo:

    Pict 1000 PNG grf/fondo.png

Este grfico, normalmente, debera ser una textura cclica ya que se repetir a lo ancho
y a lo alto hasta rellenar la zona del grfico.


8) Compilacin a mquina-Z:

    INFORM $MAX_LABELS=2000 -~S caverna.inf caverna.z5

(Se recomienda usar Inform 6.15)

o a Glulx:

    INFORM $MAX_LABELS=2000 $MAX_STATIC_DATA=20000 -~S -G caverna.inf caverna.ulx
    BLC caverna.blc caverna.blb


PROBLEMAS
---------

- El condacto DOALL probablemente est mal emulado. Otros condactos
relacionados con pantalla, grficos, o tiempo real pueden dar problemas en
la mquina Z.


- El condacto CHANCE tiene una generacin de nmeros aleatorios ligeramente
diferente que el equivalente del PAWS. Esto provoca que ciertos acontecimientos
de la aventura que dependan de este condacto se ejecuten con frecuencias
diferentes a la que lo hacan. En general se ha detectado que porcentajes
muy bajos, como por ejemplo CHANCE 1, son poco frecuentes. Esto se soluciona
aumentando el porcentaje a 5 o 10.


- Algunos juegos no pueden ser convertidos porque PAWSEZ se queja de que hay
DOALL anidados. Esto quiere decir que aparecen dos condactos DOALL seguidos
sin que haya aparecido entre ellos un DONE. El problema puede solucionarse
editando a mano el .paw y eliminando alguno de los DOALL. El juego no ser
el mismo, pero probablemente esto tampoco sea muy crucial.


- A veces Inform se queja al compilar de que encuentra caracteres no vlidos.
Esto puede ocurrir si durante la conversin se han generado identificadores
que contienen la letra . Hay que editar a mano el .paw para eliminar estos
casos (tipicamente nombres de objeto con )

Otras veces se debe a que en la tabla de mensajes aparecen caracteres raros
que no han sido especificados en el .ac (el que indica cmo convertir las
letras). Esto de nuevo requiere editar a mano el .paw.


- Finalmente, si usas PAWSEZ bajo Linux, debes eliminar los ^M que 
tendrs al final de cada linea dentro del fichero .paw. La forma mas rapida
es:

    tr -d ^M < caverna.paw > aux
    mv aux caverna.paw

(El ^M de la linea anterior se obtiene pulsando Ctrl-V seguido de Ctrl-M).


- Y por ltimo, aunque PAWSEZ hace un buen trabajo la mayor parte de las veces
no se garantiza que sea capaz de tratar el 100% de las aventuras PAWS existentes.
Condactos EXTERN, puzzles dependientes de TIMEOUT, y cosas "raras" en general
debern ser modificadas "a mano" o reimplementadas de otra forma, bien en el
cdigo original de PAW, bien en el cdigo generado por PAWSEZ.
