CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 13 Dic 2017 08:28

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 39 mensajes ]  Ir a página 1, 2, 3  Siguiente
Autor Mensaje
NotaPublicado: 09 Ene 2017 00:21 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1608
Ubicación: Argentina
¡Hola!

En versiones antiguas de Superglús, había un bug que provocaba que se intentaran escribir datos en la dirección de memoria 0, por ser de sólo lectura.
En la última versión de Windows Glulxe, uno de los cambios dice esto:
Citar:
Glulxe 0.5.3 also includes a new compile-time option, which has been turned on for Windows Glulxe, to tolerate a bug in old versions of the Superglus system that produced game files that would try to write to memory address zero. As a result, the "Glulxe (no memory checks).exe" executable is no longer needed and has been removed.


Habida cuenta de que ya no existe el ejecutable que omitía las comprobaciones de memoria, mi pregunta es cómo habría que hacer para compilar con tolerancia a este bug.

¡Un saludo y buen comienzo de semana!


Arriba
 Perfil  
 
NotaPublicado: 09 Ene 2017 15:34 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
Fernando Gregoire escribió:
¡Hola!

En versiones antiguas de Superglús, había un bug que provocaba que se intentaran escribir datos en la dirección de memoria 0, por ser de sólo lectura.
En la última versión de Windows Glulxe, uno de los cambios dice esto:
Citar:
Glulxe 0.5.3 also includes a new compile-time option, which has been turned on for Windows Glulxe, to tolerate a bug in old versions of the Superglus system that produced game files that would try to write to memory address zero. As a result, the "Glulxe (no memory checks).exe" executable is no longer needed and has been removed.


Habida cuenta de que ya no existe el ejecutable que omitía las comprobaciones de memoria, mi pregunta es cómo habría que hacer para compilar con tolerancia a este bug.

¡Un saludo y buen comienzo de semana!


Si lo he entendido bien, la opción en cuestión está activada en Windows Glulxe, por lo que esos juegos deberían funcionar bien. Creo que Pitufos Crisis es una de ellas.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 10 Ene 2017 04:24 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1608
Ubicación: Argentina
Por lo que se entiende, con el «has been turned on» a mí también me da la idea de que en la última versión ya estaría activada esta opción de compilación, pero en la práctica no es así.
Al final he recurrido a una versión de Windows Glulxe que tenía en una PC en que no lo actualizaba desde hace mucho tiempo, pero para novatos creo que no es un tema menor. Y es que este problema afecta a varias aventuras anteriores a 2009, por ejemplo Los alegres hombres de Sherwood, El espíritu de la sidra, 007 alto secreto o la primera y única del Dr. Van Halen que se portó a Glulx, Misterio en la catedral.

¿Qué necesitaban escribir los archivos compilados con los Superglús antiguos en la dirección de memoria 0? Porque me llama la atención que ejecutar las aventuras se ejecutan y hasta muestran todas las presentaciones que correspondan, saltando el mensaje tras escribir el primer comando.


Arriba
 Perfil  
 
NotaPublicado: 10 Ene 2017 12:06 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1855
Fernando Gregoire escribió:
¿Qué necesitaban escribir los archivos compilados con los Superglús antiguos en la dirección de memoria 0? Porque me llama la atención que ejecutar las aventuras se ejecutan y hasta muestran todas las presentaciones que correspondan, saltando el mensaje tras escribir el primer comando.


Unas variables temporales que inesperadamente se situaban en esa dirección:
Uto escribió:
En cualquier caso no es que Yokiyoki o yo quisieramos escribir en la ROM obviamente, es que Glulxa cuando encuentra una etiqueta desconocida, en lugar de quejarse, la traduce por "0", y había en todo el código de Superglús, tres etiquetas mal escritas, que [...] eran variables usadas de modo temporal [...]

viewtopic.php?p=37796#p37796


Arriba
 Perfil  
 
NotaPublicado: 10 Ene 2017 12:54 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1855
Puedo confirmar que Windows Glulxe 0.5.3.146 recién descargado (el zip, no el instalador) de ifarchive y ejecutado con wine... sigue siendo incapaz de aceptar comandos en "007".

Código:
Glulxe fatal error: Memory write to read-only address (0)


"Pitufos crisis" parece funcionar durante unos cuantos comandos sin que falle, pero no sé si se recompiló (hay TXP en la descarga) o si dará el error más adelante.

Ambas aventuras recién descargadas de sus respectivas fichas en el portal.

El anuncio de publicación de esta versión de Windows Glulxe no menciona el cambio. La cita inicial de este hilo (en la que también entiendo que las aventuras deberían funcionar) está en la sección Revision History del fichero de ayuda (chm) contenido en el zip.

http://www.intfiction.org/forum/viewtop ... 68#p116768 (incluye enlace a ifarchive)


Arriba
 Perfil  
 
NotaPublicado: 10 Ene 2017 20:48 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
Hmmm... he ido al hilo en cuestión, lo que me ha llevado a esta página:

http://ifarchive.org/indexes/if-archive ... lulxe.html

En ella he bajado el WinGlulxe (WinGlulxe.zip [02-Dec-2016]), y he abierto con ella El Espíritu de la Sidra, bajado de su ficha en la web del CAAD: El espíritu de la sidra (versión multiplataforma en ZIP)

Esta versión de Glulxe parece ejecutar sin problemas ese juego.

Sin embargo con 007 falla efectivamente, así que algo debe andar mal. Lo comento yo en el hilo del foro.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 11 Ene 2017 07:34 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1608
Ubicación: Argentina
Pues tendría que probar entonces a bajar El espíritu de la sidra de la ficha actual en el portal, porque quizá la versión del 17/9/8 —que es la que tengo y en la wiki se menciona como última— no sea la más reciente y Radin haya llegado a recompilar esta aventura en 2009 o después.
Yo prefiero con los intérpretes que puedo —entre ellos Windows Glulxe— descargar instaladores —fundamentalmente por las asociaciones de archivos—, pero acabo de descargar esta última versión de Windows Glulxe portable en ZIP para probar. Aparte de ver que el comportamiento se repite, pasé los binarios extraídos del ZIP y los que tenía instalados por WinMerge y me salta que son idénticos; de modo que, lejos de ser un problema en cuanto a lo que se empaquetó en el instalador, algo no está bien en el programa en sí.

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.


Arriba
 Perfil  
 
NotaPublicado: 11 Ene 2017 12:52 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
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.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 12 Ene 2017 14:17 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1855
David Kinder ha publicado una versión --no oficial-- de Windows Glulxe que añade un ligero parche para que 007 no falle ante cualquier comando al inicio.

No parece que haya aumentado todavía el número de versión (sigue siendo 0.5.3.176), así que para diferenciarlo de otras diré que el MD5 del zip es fc042520fd189a1985663ea848c0f919.

http://www.davidkinder.co.uk/tmp/WinGlulxe.zip

Hice alguna prueba rápida y parece que funciona, aunque la gran duda es... ¿el bug puede afectar a cualquier opcode?

Vuelve a tener relevancia la pregunta inicial de Fernando, quizá replanteándola. ¿En que partes del código estaba presente el bug "etiqueta con errata"? ¿Se puede derivar de su posición a qué opcodes afecta o, en cambio, es código que puede ejecutarse en diversas circunstancias/opcodes?

Antes de estas revelaciones, ya estuve rebuscando el código fuente de viejas versiones de Superglús... para intentar encontrar mediante diff los arreglos. Parecía claro que el cambio de zarf en glulxe --no Windows Glulxe-- era demasiado concreto: un opcode (aunque soluciona parte del problema... sin él, 007 falla incluso antes de llegar al prompt).

No encontré que se publicara código fuente de las betas de Superglús, así que no he podido comparar con la 1.0 (si es que ahí ya estaba resuelto) e intentar resolver la duda sobre la posición y ámbito de los bugs.


Arriba
 Perfil  
 
NotaPublicado: 12 Ene 2017 20:01 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 23 Abr 2004 08:49
Mensajes: 2890
Ubicación: España (Galicia)
Hola,

La actitud de David Kinder frente a este bug me parece genial.
Por otra parte, Zarf está en el lado "purista" delespectro, y se niega a que estas aventuras puedan ser jugadas en Quixe, es decir, se niega a hacer lo mismo que hace David Kinder.

-- Baltasar

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 12 Ene 2017 21:15 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1855
Entiendo que el workaround inicial es incompleto por falta de información, pero DavidK utiliza el código de zarf (glulxe) que evita ciertas ocurrencias del bug.


Arriba
 Perfil  
 
NotaPublicado: 12 Ene 2017 22:35 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
Lamentablemente, mi torpeza impide saber hoy exactamente que opcodes eran, porque no tengo fuentes de Superglús anteriores al parche :-(

Si no fuera por eso ya habría reportado este caso antes.

Por otro lado, parece que Zarf ha añadido el parche de David al main, aunque aún no ha hecho push a GitHub:

https://github.com/erkyrath/glulxe/issues/13

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 12 Ene 2017 23:21 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1855
Está en otra rama, no sé si por error o porque va a dejar que madure ahí. Intentaré enterarme.


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2017 02:14 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1608
Ubicación: Argentina
Efectivamente, aunque comparto la preocupación de que los «workaroundeanods» puedan no ser los únicos códigos que tenían el problema, esta versión parcheada no oficial de David Kinder parece, por lo que alcancé a probar, solucionar el problema.
Ahora bien, ¿genera o podría generar la tolerancia a este bug otros problemas colaterales? Si es así, y para al mismo tiempo no complicar a usuarios, se me ocurre que Windows Glulxe podría incluir, sea como opción en la pestaña General o como tipo de archivo, en el diálogo «Selecciona un fichero Glulx», alguna opción de compatibilidad que por defecto no se utilice.


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2017 02:42 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1855
Ya está el commit en la rama master. Resultó que lo puso en la otra sin querer.


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 39 mensajes ]  Ir a página 1, 2, 3  Siguiente

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM