Dump dos dados
Acessando as tabelas diretamente

Alguns elementos e estruturas do jogo estão organizadas em uma tabela (bytes) especialmente formatada, para conter os códigos de definição das palavras, os códigos dos objetos, os parâmetros das posições, dados de configuração para arquivos AVIs (filmes), os códigos dos comandos, funções e animações. Além disso, esse arquivo ainda contém a quantidade total de sons, páginas de imagens e links AVIs do jogo. Trata-se portanto de um arquivo binário dinâmico, que pode conter até 65 mil bytes.

Quando o jogo inicia, ou seja, quando o jogador executa o arquivo exe correspondente ao jogo, o arquivo nome_do_jogo.tbl é carregado para a memória e os apontadores das tabelas são transferidos para as suas respectivas variáveis.

Porém, podem existir algumas situações fora do normal, onde seja interessante que o programador altere ou verifique determinado valor, dentro das tabelas. Para isso existe o controle Dump, dentro da edição das tabelas.

Mas muita atenção: antes de alterar algum valor e mesmo dispondo de um sistema de undo, é recomendável que se faça um backup de todo o jogo. Determinadas alterações podem comprometer todo o sistema de endereçamento das informações.

Ao acionar o recurso Dump, o programador terá acesso a uma lista de apontadores e seus respectivos conteúdos, bem como a visão (dump) dos bytes que compõem as tabelas, apresentados em formato hexadecimal e ascii, para facilitar a visualização do conteúdo.

Sempre que esse recurso for acionado, ele irá gravar uma cópia do conteúdo original, que pode ser recuperada pelo acionamento da tecla Oooops!.

Para entender como as tabelas são compostas, é preciso conhecer bem o modo de endereçamento de 16 bits (usando dois bytes). O primeiro byte é chamado de byte menos significativo e o segundo é chamado de byte mais significativo. Assim, um endereço ou condeúdo cujo valor seja de 16 bits, deve ser obtido pela multiplicação do byte mais significativo por 256 e somando ao byte menos significativo. Os primeiros 36 bytes da tabela contém os apontadores para o início dos respectivos dados e a quantidade de elementos da tabela.

Por exemplo: os endereços $0002 e $0003 contém o endereço do início da tabela dos códigos que definem as palavras ($0024). Os endereços $0004 e $0005 contém a quantiade de palavras criadas no jogo ($0003). Se olhar o endereço $0024, a partir dele verá os seguintes 4 valores $81, $01, $02, $FF. Recorrendo ao manual, na página que explica a definição de palavras, temos:

        0  = palavra indefinida
  1 a 119  = objetos manipuláveis ( 119)
120 a 127  = personagens (8)
128 a 191  = substantivos (64)
192 a 223  = adjetivos (32)
224 a 239  = advérbios (16)
240 a 250  = verbos (10)

O valor $81, em decimal, representa o valor 129, ou seja, o primeiro substantivo criado no jogo, a palavra LOCAL (na verdade é o segundo substantivo, pois esse é um erro presente desde as primeiras versões do editor para Windows). Os valors $01 e $02 indicam respectivamente que as palavras 2 e 3 representam os objetos 1 e 2. O valor $FF nada mais é que o delimitador de tabela, ou seja, indica que ela termina alí. Ao criar uma nova palavra, todo o conteúdo a partir do $FF é deslocado para a frente e o seu código é então inserido no final da tabela de palavras. Os apontadores são então realinhados.

Note que na coluna à esquerda existem dois grupos de valores. Os valores em azul indicam o que a matriz na memória contém (que é a base de gravação do arquivo .tbl).Os valors em cinza representam o que as variáveis usadas no jogo estão usando como endereços e para onde estão apontado. É portanto imprescindível que esses dois conjuntos sejam rigorosamente iguais, senão o sistema pode perder totalmente o controle do que acontece no jogo.

Os elementos palavras, objetos, posições, mensagens e verbos possuem mais um valor cinca, indicador de quantidade. Esses elementos possuem tabelas próprias, formadas por textos ascii em arquivos txt separados. Esses valores são obtidos diretamente dos contadores dos componentes que contém esses arquivos e devem igualmente ser idênticos à quantidade de elementos criados. Se houver discrepância, pode ser necessário corrigir o arquivos txt correspondente.

Ao clicar num byte das tabelas, o seu endereço é destacado e um cursor retangular o marcará. O programador pode então alterar o seu valor, digitando na sequência: byte menos significativo, mais significativo. A tecla End posiciona esse cursor no final das tabelas. As tabelas sublinhadas, se clicadas, delocam o cursor para o início da tabela correspondente.

Se houver alguma discrepância entre os apontadores, será preciso realinhar as tabelas, clicando no botão correspondente.

 
online