1 pontos por GN⁺ 2024-05-24 | 1 comentários | Compartilhar no WhatsApp

Erro no disco mestre de Space Quest II

  • 22 de maio de 2024
  • A aparência deste disco não tem nada de especial, mas os dados gravados nele incluem algo especial que a Sierra On-Line certamente não sabia que estava ali e não gostaria de ter incluído.
  • Se você tem um disquete de 720 KB da coleção de jogos de aventura da Sierra, você não está sozinho.
  • As versões 2.0D e 2.0F de Space Quest II não eram raras.

Uma simples listagem de diretório

  • Ao olhar a lista de arquivos do disco, não há nada de especial.
  • Observando a listagem da versão 2.0D, ela não difere de outros discos de jogos da Sierra.
  • Os carimbos de data e hora mostram que os principais arquivos de dados do jogo (PICDIR, LOGDIR, VIEWDIR, SNDDIR, VOL.0, VOL.1) foram criados em 14 de março de 1988.
  • Os arquivos .OVL foram criados em 15 de março de 1988, e o código do interpretador AGI em 18 de março de 1988.
  • O ponto incomum na listagem do diretório é que o espaço "não utilizado" do disco é maior que o espaço utilizado. São mostrados 302.918 bytes usados e 402.432 bytes como não utilizados.

Usando um editor hexadecimal

  • Para ver com mais detalhes o que há no disco, é preciso uma ferramenta chamada editor hexadecimal.
  • Nos anos 1980, o Norton Utilities era muito usado, e hoje o HxD Hex Editor, escrito por Maël Hörz, é uma excelente alternativa.
  • Em um disquete DOS recém-formatado, os setores não utilizados deveriam estar preenchidos com o valor de byte 0xF6.
  • O disco 2 da versão 2.0D de Space Quest II se encaixa nesse caso, mas o disco 1 não tem setores preenchidos com bytes 0xF6.
  • Os setores não utilizados do disco 1 estão preenchidos com algo que parece código-fonte em C.
  • Isso sugere fortemente que o disco mestre foi usado para outro propósito e, depois que os arquivos foram apagados, não foi formatado corretamente.

Código-fonte do interpretador AGI

  • Ao ver os dados em um editor hexadecimal, eles parecem texto.
  • Ao copiar o texto ASCII para um editor de texto, ele se parece com código-fonte em C.
  • Há duas funções definidas, uma chamada DisplayStatusLine e a outra StatusLineOn.
  • A função DisplayStatusLine aparentemente exibe uma linha de texto mostrando a pontuação atual e o estado do som.
  • Esse código-fonte faz parte do interpretador AGI.
  • Ao continuar rolando mais setores não utilizados no editor hexadecimal, há uma grande quantidade de código-fonte.
  • Esse código-fonte está armazenado em setores contíguos, então é fácil extraí-lo.
  • No total, ele está dividido em 93 arquivos: 75 arquivos de código-fonte em C, 16 arquivos de código-fonte em Assembly e 2 arquivos BAT do DOS.
  • Há mais de 15.000 linhas de código ao todo, e a maioria dos arquivos está completa.
  • Este disco do jogo Space Quest 2 contém cerca de 70% do código-fonte do interpretador AGI da Sierra On-Line.

Histórico de alterações nos arquivos-fonte

  • Alguns arquivos-fonte incluem histórico de alterações nos comentários de cabeçalho.
  • Por exemplo, o comentário de cabeçalho do arquivo-fonte ANIMATE.C inclui o nome do arquivo, uma descrição da função, o nome do compilador (MWC) e o histórico de alterações.
  • Os programadores se identificavam usando suas iniciais.
  • JAS é Jeff Stephenson, o principal programador que trabalhou no código do interpretador AGI, e DCI é Chris Iden.
  • Robert Heitman também é mencionado, mas seu foco era principalmente em ferramentas gráficas.

Mapa de memória do AGI.EXE

  • O disco 1 de 720 KB do SQ2 2.0D também inclui um mapa de memória do executável AGI.EXE.
  • O mapa de memória fornece uma lista dos módulos e arquivos-fonte que compõem o interpretador AGI.
  • Ao todo, 98 arquivos-fonte são mencionados, dos quais 71 estão incluídos integralmente no disco do SQ2.
  • Isso significa que cerca de 70% do código-fonte do interpretador AGI está incluído no disco do SQ2.

Propriedade intelectual da Sierra

  • Em 1984, a Sierra On-Line lutava para manter o negócio funcionando.
  • O sucesso de King’s Quest teve um papel importante em mudar seu destino.
  • O sistema de jogos de aventura AGI e os jogos criados com ele eram a principal fonte de receita da Sierra On-Line.
  • O código-fonte do interpretador AGI era a principal propriedade intelectual da Sierra.
  • O fato de 70% do código-fonte ter sido copiado em massa e enviado aos clientes foi um grande erro.

Como isso aconteceu?

  • Quando uma nova versão do jogo ficava pronta, era criado um disco mestre de "cópia de produção" para uso em uma máquina de duplicação de discos FormMaster.
  • Essa máquina copiava todos os bytes do disco.
  • O disco 1 das versões 2.0D e 2.0F de Space Quest II foi usado sem ter sido formatado.
  • Como resultado, centenas de milhares de discos de SQ2 passaram a conter 70% do código-fonte do interpretador AGI.

Um desastre evitado por pouco

  • Quase certamente foi um erro não intencional.
  • Nem a Sierra, nem os concorrentes, nem os clientes perceberam esse fato.
  • Ele foi descoberto pela primeira vez em outubro de 2016 pelo usuário online NewRisingSun.
  • Como isso aconteceu no fim da era AGI, não se tornou um grande problema.
  • É uma história interessante de arqueologia digital e permite ver como a Sierra On-Line escreveu o interpretador AGI.

Para quem se interessar, o código-fonte extraído do interpretador AGI foi enviado para um repositório no GitHub: https://github.com/lanceewing/agi

Dê uma olhada no AGILE, um interpretador AGI baseado na web. Essa implementação foi guiada pelo código-fonte original do AGI.


Opinião do GN⁺

  • O valor da arqueologia digital: este artigo mostra a importância da arqueologia digital. Softwares e dados antigos têm valor histórico e técnico.
  • Lições de um erro de segurança: este caso destaca a importância da segurança e da gestão de dados. Ao lidar com dados sensíveis, sempre são necessárias verificação rigorosa e formatação adequada.
  • Evidência do avanço tecnológico: o código-fonte do interpretador AGI mostra o progresso técnico do desenvolvimento de jogos nos anos 1980. Isso pode inspirar desenvolvedores modernos.
  • O poder do open source: com o código-fonte original tornado público, desenvolvedores modernos têm a oportunidade de estudá-lo e aproveitá-lo em novos projetos.
  • O risco para concorrentes: se esse código-fonte tivesse sido descoberto por concorrentes na época, a vantagem competitiva da Sierra On-Line poderia ter sido seriamente prejudicada. Isso relembra a importância de proteger a propriedade intelectual das empresas.

1 comentários

 
GN⁺ 2024-05-24
Comentários do Hacker News

Resumo da coletânea de comentários do Hacker News

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

    • Este jogo foi distribuído em dois disquetes, e um deles continha o código-fonte completo dentro de um arquivo compactado apagado. Não aparecia com o comando DIR, mas podia ser recuperado facilmente.
  • Engenharia reversa de ROM de sintetizador

    • Ao fazer recentemente a engenharia reversa de ROMs de sintetizador, foi encontrada no ROM do Yamaha DX9 parte da tabela de símbolos do firmware e um bloco de código do sistema de desenvolvimento. Descobertas assim oferecem uma compreensão profunda das ferramentas de desenvolvimento do passado.
  • Memórias de infância com jogos

    • Este jogo foi uma parte importante da infância, e hoje é difícil sentir o mesmo tipo de "conexão" na vida atual. Space Quest 2, 3 e 4 parecem fazer parte do DNA.
  • Os segredos do motor AGI

    • Acredita-se que o motor AGI não tinha nenhum segredo especial do qual concorrentes pudessem se beneficiar em caso de vazamento. Os jogos da Sierra fizeram sucesso porque colocavam muito esforço nos gráficos e na escrita das histórias.
  • Mapa de memória e código-fonte

    • Com um mapa de memória, parte do código-fonte e ferramentas de engenharia reversa, seria possível reconstruir tudo.
  • HxD Hex Editor

    • Uma excelente ferramenta moderna é o HxD Hex Editor, criado por Maël Hörz. Usuários de macOS podem dar uma olhada no Hex Fiend.
  • ROM de Air Fortress

    • A versão de Famicom de Air Fortress incluía acidentalmente muitos dados. O cartucho japonês era de 128+128KB, enquanto a versão americana de NES foi reduzida para 128+32KB.
  • Artefatos de release feitos manualmente

    • No passado, artefatos gerados manualmente para release frequentemente acabavam contendo dados remanescentes. Hoje isso diminuiu graças a CICD e aos sistemas de build automatizados.
  • Descoberta de código-fonte

    • Ninguém havia percebido que o disco continha o código-fonte. Isso lembra descobertas recentes envolvendo Tetris e Super Mario Bros. Graças à internet e aos emuladores, jogos antigos ganham uma nova vida.
  • Comentários no histórico de mudanças

    • Os comentários no histórico de mudanças mostram atenção aos detalhes e capricho artesanal. Isso remete ao ensaio 'No Silver Bullet' e sugere que o software ainda continua sendo escrito linha por linha por programadores.