Desde hace mucho tiempo he estado dandole vueltas a la posibilidad de crear un nuevo PAW (si, luego cuento lo de DAAD) partiendo de Superglús. Para los que no lo sepáis, Superglús es un sistema de programacion estilo PAW que genera ejecutables para la máquina virtual Glulx, que tiene intérpretes en varias plataformas, pero que yo sepa ninguna de ellas es retro, entre otras cosas porque la máquina Glulx es una máquina de 32 bits.
Lo que hace Superglús es partir de un fichero en formato SCE (el que aceptaba el PAW de PC o CPC) y generar código ensamblador glulx, y luego une dicho código (que es específico para cada aventura) con una serie de ficheros también en ensamblador que tienen las cosas comunes, como el parser en sí, las rutinas de escribir texto, gráficos, etc.
La cuestión es que Superglús es más avanzado que PAW, incluso más avanzado que DAAD, y eso lo hace más potente, aunque no todo lo que se puede sacar hacer con Superglús sería "portable" a un Spectrum, por ejemplo, pero muchas cosas sí.
Cuando me he planteado qué debería hacer para hacer un fork de Superglús que generara código para Spectrum, había dos pasos:
1) Hacer que el compilador genere ensamblador de Z80 u otro lenguaje que luego pueda compilarse fácilmente a Z80 (por ejemplo en C para z88dk
2) Reconstruir las librerías del runtime básico en ese mismo lenguaje, ya sea ensamblador o C o lo que sea, de modo que al igual que en Superglús, una vez generado un fichero con las dos partes en asm/c se pueda pasar por un ensamblador o compilador para generar los juegos.
Pues bien, me temo que no estoy cualificado para lo segundo, aunque sí para lo primero. Por eso me pregunto... ¿alguien cualificado para lo primero querría colaborar en algo así?
Lo que propongo hacer ya lo he hecho para otra plataforma, es decir, ya he hecho otro runtime como el original de Superglús y he hecho un fork del compilador para que genere otro código, en este caso javascript, el resultado es ngPAWS (www.ngPAWS.com), que basicamente parte del código PAWs para generar un .js que puede ser jugado en un navegador. Quiero decir que tengo experiencia en hacerlo, pero no con un Spectrum.
Y ahora voy al tema del nuevo DAAD: si alguien se animara podríamos ir a por "un nuevo PAW" o podríamos ir a por "un nuevo DAAD", o al menos un mini DAAD para máquinas basadas en Z80. Al final sería cuestión de hacer el interprete/runtime con sus variaciones según la plataforma, y que el compilador genere la parte de base de datos necesaria. Afortunadamente Superglús ya incluye un preprocesador que pemite #ifdefs así que sería sencillo poner textos, gráficos, etc. diferentes según plataforma:
Código: Seleccionar todo
#ifdef Spectrum48
WRITE "Examinas la puerta y ves un pequeño orificio."
#elseifdef Spectrum128
WRITE "Examinas la puerta, y en la esquina superior ves un pequeño orificio."
#elseifdef CPC128
WRITE "Examinas la puerta, y en la esquina superior ves un pequeño orificio."
#endif
Bueno, ahí lo dejo, si alguien tiene dudas aquí estoy, y si queréis hablarlo más tranquilamente por IRC o por teléfono o similar, pues hablamos.
¡Ah! Ya se que existe inPAWS que permite trabajar con PAWS de una manera más cómoda, pero no deja de estar limitado a PAWs puro, y limitado al interprete original. Para el nuevo se me ocurre que se puede usar compresión para meter más juego o gráficos, aparte de dar soporte a cosas que Superglús o ngPAWS tienen como la indirección o simplemente no tener que andar definiendo mensajes en una tabla sino poder poner directamente WRITE 'loquesea'.