El error del disco maestro de Space Quest II
(lanceewing.github.io)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
.OVLse 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
DisplayStatusLiney la otraStatusLineOn. - La función
DisplayStatusLineparece 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.Cincluye 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.
JASes Jeff Stephenson, el principal programador que trabajó en el código del intérprete AGI, yDCIes 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
Opinión de Hacker News
Resumen de comentarios de Hacker News
Double Dragon II: The Revenge for DOS (1989)
DIR, pero era fácil de recuperar.Ingeniería inversa de ROM de sintetizadores
Recuerdos de infancia con videojuegos
Los secretos del motor AGI
Mapas de memoria y código fuente
HxD Hex Editor
La ROM de Air Fortress
Artefactos de lanzamientos manuales
Descubrimiento de código fuente
Comentarios del historial de cambios