Fernando Gregoire escribió:
Uto y dddddd, gracias a ambos por molestarse en indagar. Por cierto, dddddd, el tema de antaño al que me enlazaste sobre la necesidad de recompilar aventuras en Superglús me pareció interesante; me recordó al incluso antes mayor conflicto entre los estándares web y la manera de interpretarlos de cada navegador, casi siempre con el denostado IE a la cabeza.
Bueno, en realidad los problemas de Superglús con intérpretes son en parte por cosas parecidas al tema de los estándares web, y en parte por un efecto doble bug.
- Por un lado Superglús utilizaba una especificación Glk antigua, de la cual parte quedó "deprecated", lo cual hace que Git por ejemplo no pueda ejecutar algunos juegos antiguos que usan esas funciones que han sido retiradas. Esto se parece más a los cambios no compatibles hacia atrás de algunas especificaciones web.
- Por otro lado, Superglús usa Glulxa, un programa ensamblador que tenía un bug: sustituir cualquier etiqueta desconocida por un 0, en lugar de avisar que estábamos usando una etiqueta desconocida. El resultado es que un dato que quería guardarse en una variable que estaba en una dirección en RAM, se guardaba en una dirección en ROM. En cualquier máquina real, esto hubiera cantado desde el primer día, porque el valor no se habría grabado (porque la ROM es read only) y la funcion que la usa habría fallado. Lamentablemente, además del bug de Glulxa, nos encontramos que ningún intérprete de los de la época (Git, Glulxe, Zag) detectaban esa escritura en ROM como mala, y permitían escribir en ROM. Así que todo funcionaba correctamente. Pero un día a Glulxe se le metió una opción de no dejar escribir en ROM, y ese mismo día se hizo incompatible con todos esos juegos, aunque existe esa opción de compilación que permite compilarlo tolerando la opción, pero parece ser que no contempla todos los casos, porque aún falla.
Esta inestabilidad y estar en manos de terceros es -entre otras cosas- lo que me llevó a crear ngPAWS, que también usa intérpretes de terceros (los navegadores) pero con un nivel de compatibilidad hacia atrás mucho más alto.