1 puntos por GN⁺ 2024-05-24 | 1 comentarios | Compartir por WhatsApp

El error del disco maestro de Space Quest II

  • 22 de mayo de 2024
  • La apariencia de este disco no tiene nada especial, pero los datos almacenados sí incluyen algo especial que Sierra On-Line seguramente desconocía por completo y no habría querido incluir.
  • Si tienes un disquete de 720 KB de la colección de juegos de aventura de Sierra, no eres el único.
  • Las versiones 2.0D y 2.0F de Space Quest II no eran raras.

Un simple listado de directorio

  • Al ver la lista de archivos del disco, no hay nada especial.
  • Si miras el listado de la versión 2.0D, no se diferencia de otros discos de juegos de Sierra.
  • Las marcas de tiempo muestran que los principales archivos de datos del juego (PICDIR, LOGDIR, VIEWDIR, SNDDIR, VOL.0, VOL.1) fueron creados el 14 de marzo de 1988.
  • Los archivos .OVL se crearon el 15 de marzo de 1988, y el código del intérprete AGI el 18 de marzo de 1988.
  • Lo inusual en el listado del directorio es que el espacio "no utilizado" del disco es mayor que el espacio utilizado. Se muestran 302,918 bytes usados y 402,432 bytes sin usar.

Uso de un editor hex

  • Para ver con más detalle qué hay en el disco, se necesita una herramienta llamada editor hex.
  • En la década de 1980 se usaba con frecuencia Norton Utilities, y hoy HxD Hex Editor, escrito por Maël Hörz, es una excelente alternativa.
  • En un disquete DOS recién formateado, los sectores no utilizados deberían estar llenos con el valor de byte 0xF6.
  • El disco 2 de Space Quest II versión 2.0D sí entra en ese caso, pero el disco 1 no tiene sectores llenos con bytes 0xF6.
  • Los sectores no utilizados del disco 1 están llenos de algo que parece código fuente en C.
  • Esto sugiere con fuerza que el disco maestro se había usado para otro propósito y que, tras borrar los archivos, no se formateó correctamente.

Código fuente del intérprete AGI

  • Al observar los datos en el editor hex, parecen texto.
  • Si se copia el texto ASCII a un editor de texto, parece código fuente en C.
  • Hay dos funciones definidas: una es DisplayStatusLine y la otra StatusLineOn.
  • La función DisplayStatusLine parece mostrar una línea de texto con la puntuación actual y el estado del sonido.
  • Este código fuente forma parte del intérprete AGI.
  • Si sigues desplazándote por más sectores no utilizados en el editor hex, aparece una gran cantidad de código fuente.
  • Este código fuente está almacenado en sectores contiguos, por lo que es fácil de extraer.
  • En total está dividido en 93 archivos: 75 archivos de código fuente en C, 16 archivos de código fuente en ensamblador y 2 archivos BAT de DOS.
  • Hay más de 15,000 líneas de código en total y la mayoría de los archivos están completos.
  • Este disco del juego Space Quest 2 contiene cerca del 70% del código fuente del intérprete AGI de Sierra On-Line.

Historial de cambios de los archivos fuente

  • Algunos archivos fuente incluyen un historial de cambios en los comentarios del encabezado.
  • Por ejemplo, el comentario del encabezado del archivo fuente ANIMATE.C incluye el nombre del archivo, una descripción de su función, el nombre del compilador (MWC) y el historial de cambios.
  • Los programadores se identificaban usando sus iniciales.
  • JAS es Jeff Stephenson, el principal programador que trabajó en el código del intérprete AGI, y DCI es Chris Iden.
  • También se menciona a Robert Heitman, aunque su enfoque estaba principalmente en las herramientas gráficas.

Mapa de memoria de AGI.EXE

  • El disco 1 de 720 KB de SQ2 2.0D también incluye un mapa de memoria del ejecutable AGI.EXE.
  • El mapa de memoria proporciona una lista de los módulos y archivos fuente que componen el intérprete AGI.
  • Se mencionan 98 archivos fuente en total, de los cuales 71 están incluidos de forma completa en el disco de SQ2.
  • Esto significa que cerca del 70% del código fuente del intérprete AGI está incluido en el disco de SQ2.

La propiedad intelectual de Sierra

  • En 1984, Sierra On-Line luchaba por mantener el negocio.
  • El éxito de King’s Quest jugó un papel importante en cambiar su destino.
  • El sistema de juegos de aventura AGI y los juegos creados con él eran la principal fuente de ingresos de Sierra On-Line.
  • El código fuente del intérprete AGI era la propiedad intelectual central de Sierra.
  • Que el 70% del código fuente se copiara masivamente y se enviara a los clientes fue un gran error.

¿Cómo ocurrió esto?

  • Cuando estaba lista una nueva versión del juego, se creaba un disco maestro de "copia de producción" para usarlo en la máquina duplicadora de discos FormMaster.
  • Esta máquina copiaba cada byte del disco.
  • El disco 1 de las versiones 2.0D y 2.0F de Space Quest II se usó sin haber sido formateado.
  • Como resultado, cientos de miles de discos de SQ2 terminaron incluyendo el 70% del código fuente del intérprete AGI.

Una crisis que pasó desapercibida

  • Casi con total seguridad, fue un error no intencional.
  • Ni Sierra, ni sus competidores, ni sus clientes se dieron cuenta.
  • Fue descubierto por primera vez en octubre de 2016 por el usuario en línea NewRisingSun.
  • Como ocurrió al final de la era AGI, no se convirtió en un gran problema.
  • Es una interesante historia de arqueología digital y permite ver cómo Sierra On-Line escribió el intérprete AGI.

Para quienes estén interesados, el código fuente extraído del intérprete AGI fue subido a un repositorio de GitHub: https://github.com/lanceewing/agi

Revisa AGILE, el intérprete AGI basado en la web. Esta implementación fue guiada por el código fuente AGI original.


La opinión de GN⁺

  • El valor de la arqueología digital: Este artículo muestra la importancia de la arqueología digital. El software y los datos antiguos tienen valor histórico y técnico.
  • La lección de un error de seguridad: Este caso resalta la importancia de la seguridad y la gestión de datos. Al manejar datos sensibles, siempre se necesita una verificación rigurosa y un formateo adecuado.
  • Evidencia del avance tecnológico: El código fuente del intérprete AGI muestra el progreso técnico del desarrollo de videojuegos en la década de 1980. Esto puede inspirar a desarrolladores modernos.
  • El poder del código abierto: Al hacerse público el código fuente original, se brinda a los desarrolladores actuales la oportunidad de estudiarlo y usarlo en nuevos proyectos.
  • El riesgo frente a la competencia: Si este código fuente hubiera sido descubierto por competidores en ese momento, la ventaja competitiva de Sierra On-Line habría sufrido un daño importante. Esto recuerda la importancia de proteger la propiedad intelectual de las empresas.

1 comentarios

 
GN⁺ 2024-05-24
Opinión de Hacker News

Resumen de comentarios de Hacker News

  • Double Dragon II: The Revenge for DOS (1989)

    • Este juego se distribuyó en dos disquetes, y uno de ellos incluía en un archivo comprimido eliminado todo el código fuente. No aparecía con el comando DIR, pero era fácil de recuperar.
  • Ingeniería inversa de ROM de sintetizadores

    • Al hacer recientemente ingeniería inversa de ROM de sintetizadores, se descubrió en la ROM del Yamaha DX9 parte de la tabla de símbolos del firmware y bloques de código del sistema de desarrollo. Hallazgos así ofrecen una comprensión profunda de las herramientas de desarrollo del pasado.
  • Recuerdos de infancia con videojuegos

    • Este juego fue una parte importante de la infancia, y en la vida actual es difícil sentir el mismo tipo de "conexión". Space Quest 2, 3 y 4 se sienten como parte del ADN.
  • Los secretos del motor AGI

    • Se considera que el motor AGI no tenía secretos especiales de los que la competencia pudiera beneficiarse en caso de filtración. Los juegos de Sierra tuvieron éxito porque dedicaban mucho esfuerzo a los gráficos y a la escritura de historias.
  • Mapas de memoria y código fuente

    • Con mapas de memoria, parte del código fuente y herramientas de ingeniería inversa, sería posible reconstruirlo completo.
  • HxD Hex Editor

    • Entre las grandes herramientas modernas está HxD Hex Editor, creado por Maël Hörz. Los usuarios de macOS quizá quieran revisar Hex Fiend.
  • La ROM de Air Fortress

    • La versión de Famicom de Air Fortress incluía por accidente una gran cantidad de datos. El cartucho japonés era de 128+128KB, y la versión estadounidense de NES se redujo a 128+32KB.
  • Artefactos de lanzamientos manuales

    • Antes, los artefactos publicados manualmente solían incluir datos residuales. Gracias a los sistemas modernos de CI/CD y a los builds automatizados, esto ocurre menos.
  • Descubrimiento de código fuente

    • Nadie había notado que el disco incluía código fuente. Esto recuerda descubrimientos recientes relacionados con Tetris y Super Mario Bros. Gracias a internet y a los emuladores, los juegos antiguos reciben una nueva vida.
  • Comentarios del historial de cambios

    • Los comentarios del historial de cambios muestran nivel de detalle y oficio. Esto hace pensar en el ensayo 'No Silver Bullet' y sugiere que el software sigue siendo escrito línea por línea por programadores.