Só
pelo título, dá pra desconfiar que os próximos parágrafos serão bem
técnicos, não? Se jargão de tecnologia não é sua praia, talvez você prefira ler um pouco de ficção.
A história é a seguinte: como já contei, estou realizando um trabalho na UFF de arqueologia digital, extraindo o conteúdo de um cd-rom criado nos anos 90 para transformá-lo em um site, porque ele não roda mais nos sistemas atuais. Por ser um programa de 16 bits, ele só roda até o Windows XP, porque a partir do Windows Vista esse suporte começou a ser removido. A versão 64 bits do Windows 10 já não tem mais esse suporte, nem como opcional. Então, pra realizar essa extração, precisei usar vários programas que me permitiram acessar o conteúdo desse cd. Daí que achei que valia a pena compartilhar esse conhecimento, pois tenho certeza de que não sou o único que passa por esse problema.
A
extração dividiu-se em quatro partes: a emulação de um Windows 98 (pra
poder rodar o programa), a extração dos textos, a extração das imagens e
a extração dos vídeos e músicas. Vou detalhar cada uma delas a
seguir. Ao longo do texto, há vários links pros programas, e lá no
final tem uma lista de todos eles.
Parte 1. Emulando o Windows 98
Pra
conseguir rodar o programa, tive que criar uma máquina virtual e
instalar nela um Windows 98. Quem me ajudou nessa tarefa foi o
jDosBox. E já fica a dica: pra usar esse cara é preciso saber usar
comandos do DOS. Como já tem alguns anos que fiz isso, não lembro de
todos os detalhes, mas lembro o suficiente pra indicar o caminho a
seguir. A primeira coisa que fiz foi configurar uma imagem de HD que eu
iniciava com o jDosBox, com uma configuração que me permitia ter uma
pasta do meu HD real compartilhada como uma unidade dessa máquina
virtual. Nessa pasta eu coloquei o instalador do Windows 98 e então por
dentro da máquina virtual fui copiando os arquivos dessa pasta pra
minha imagem.
Aqui
destaco um detalhe importante, algo que demorei para entender como
funcionava, e que pode economizar muito tempo no processo. É muito mais
rápido copiar os arquivos em pequenos grupos, ao invés de copiar muitos
de uma vez só. Não se atreva a fazer um copy *.*. É que a cada
arquivo copiado, o tempo de cópia vai ficando maior, não importa o
tamanho do arquivo. Os números não são estes, mas o exemplo serve: o
primeiro arquivo leva um segundo, o quinto arquivo já leva três, o
décimo arquivo já leva quinze segundos. Nesse esquema, copiar cem
arquivos é impossível. Então é mais fácil ir copiando no máximo de dez
em dez arquivos.
Tendo
feito a cópia do instalador pra minha imagem, ajustei os parâmetros da
máquina virtual pra deixar de ter a minha pasta compartilhada com ela e
pra que ela desse boot a partir desse instalador. Com isso, consegui
instalar o Windows 98 na máquina virtual. Em seguida, voltei as
configurações para ter a pasta compartilhada e então fiz a cópia do
conteúdo do cd-rom pra máquina virtual. Assim pude, finalmente,
executar o programa em um Windows 98, sem problemas de compatibilidade.
Uma
outra dica pra economizar tempo: nessa de ter que configurar a máquina
virtual de duas maneiras diferentes, ao invés de ficar modificando o
arquivo de configuração quando fosse necessário, eu tinha duas cópias
dele, cada uma com uma configuração específica. Daí ia renomeando os
arquivos conforme a necessidade.
Parte 2. Extração dos textos
Emular
o programa a partir do jDosBox traz um contratempo importante: não é
possível dar um ctrl c no Windows emulado e depois colar no Windows 10.
Se fosse assim, seria fácil extrair os textos do programa. Quer dizer,
seria fácil, se eu pudesse selecionar os textos no programa para dar um
ctrl c, o que ele não permitia.
Na
impossibilidade de usar ctrl c ctrl v, o primeiro caminho que pensei
foi em tirar prints das telas do programa, a partir do próprio Windows
10, recortar os textos e usar algum programa de OCR neles. Mas consegui
seguir por outro caminho, bem menos trabalhoso.
Pra isso, usei o Visual Studio Code, e com ele abri os arquivos executáveis como se fossem arquivos de texto. Sim, tem um monte de lixo ali misturado, por conta da codificação do executável, mas dei a sorte de que os textos do programa estavam todos fáceis de encontrar, sem qualquer codificação. Foi só questão de procurar por eles, selecionar e copiar.
Claro,
a cópia não estava 100% limpa. Em alguns casos, o texto vinha com
alguns caracteres de controle no meio, então eu tive que fazer uma série
de substituições para limpá-los. Além disso, como o programa é
trilíngue, ele tem três executáveis, um pra cada idioma. Na hora de
revisar os textos em francês, tive que ter uma atenção especial com o
caractere œ (as letras "ó" e "é" unidas em uma só, como em Cœur de Pirate), que o Visual Studio Code não interpretou corretamente e
omitiu. A mesma coisa aconteceu com os textos em inglês, onde ele
omitiu alguns apóstrofos.
Parte 3. Extração das Imagens
Pra extração das imagens e fotos usei duas técnicas diferentes. A primeira delas foi extrair as imagens que foram empacotadas diretamente nos executáveis. Minha primeira tentativa nesse sentido foi tentar abrir o executável usando o 7Zip. Alguns executáveis modernos podem ser abertos assim, mas não foi o caso. O 7Zip não reconheceu a estrutura dos executáveis do meu cd.
Parti
então para buscar programas que fossem capazes de fazer esse trabalho.
Encontrei vários, mas apenas o MultiExtractor foi capaz de interpretar
os executáveis e listar as imagens disponíveis para extração. E aqui
tive dois revezes.
O
primeiro deles é que o MultiExtractor era uma versão gratuita que
permite apenas a extração de cinco imagens. De nada adiantava
desinstalar e instalar novamente, porque ele mantinha em algum canto da
máquina o registro de que eu já tinha extraído as cinco imagens a que
tinha direito. Pra enganá-lo, apelei para mais um subterfúgio: a
Sandbox do Windows 10.
Eu
executava a Sandbox, copiava pra ela o executável do cd-rom, instalava
nela a versão gratuita do MultiExtractor, extraía cinco imagens,
fechava a Sandbox e abria uma nova. Como uma nova Sandbox é uma máquina virtual que não
tem informações de execuções anteriores, eu podia instalar o
MultiExtractor de novo e extrair mais cinco imagens. Repeti o processo
algumas dezenas de vezes.
Depois
de extrair todos os arquivos, parti pra convertê-los pra png, porque o
formato original era wmf. Procurei por vários programas pra fazer a
conversão em lote, mas os poucos que reconheciam o formato wmf não
faziam a conversão correta, e mudavam as dimensões do arquivo,
deixando-o esticado. Terminei tendo que fazer um a um, na mão, usando o
Paint. Eu abria o arquivo wmf no Paint e usava o comando Salvar Como
para salvar no formato .png.
Mas
tinha o segundo revés: o MultiExtractor não encontrou todas as imagens
disponíveis no programa, então eu tive que partir de novo pra força
bruta: tirar prints. Com o programa do cd-rom rodando no jDosBox, eu
abria uma tela com uma imagem a ser extraída, tirava um print, colava no Paint, fazia os recortes
necessários e salvava.
Parte 4. Extração dos vídeos e músicas
Essa
foi a parte menos trabalhosa. Como os arquivos de áudio e vídeo não
foram empacotados nos executáveis, eles estavam disponíveis para acesso
na estrutura de pastas do cd-rom. Foi só uma questão de copiá-los.
No
caso dos arquivos de vídeo, tive que reconverter todos eles, porque os
arquivos originais estavam usando um codec que o Windows não reconhecia
mais. Pra isso, usei a versão gratuita do Any Video Converter. Foi um
trabalho bem fácil, porque a conversão foi em lote, e converti todos os
quase 400 arquivos num clique só.
Rebarba Final. Links pra quem quer links
Ao longo do texto estão espalhados os links pros programas que eu cito. Pra facilitar a busca, reúno todos aqui no final:
jDosBox, pra criar uma máquina virtual onde instalei o Windows 98 e o programa Limite.
Visual Studio Code, pra abrir os arquivos executáveis como texto.
MultiExtractor, pra extrair imagens empacotadas nos executáveis.
Sandbox do Windows, pra criar uma máquina virtual com Windows 10 zerada.
Any Video Converter, pra converter arquivos de vídeo pra tecnologias mais novas.