Analecto

9 de janeiro de 2015

Regen.

64 bit – Running 32-bit app under 64-bit linux – Ask Ubuntu.

Há alguns anos, um dos meus amigos veio aqui em casa para passar um dia comigo. Nós jogamos um bocado no Playstation 2 que tínhamos aqui. A principal atração, contudo, foi nossa noitada jogando um emulador de Mega Drive feito por fãs para Playstation 2. No meio do nosso jogo, encontramos o tal Rocket Knight Adventures, um jogo pelo qual me apaixonei.

Depois que meu colega foi embora, o Playstation 2 foi guardado e não pude mais jogar. Até eu resolver usar um emulador no meu computador para me dar ao luxo. Os emuladores de Mega Drive disponíveis no repositório do Ubuntu eram complicados (Mednafen) ou imprestáveis (os outros), então eu procurei por algo feito por terceiros. Assim descobri o Regen. Dei dois cliques e o negócio começou a funcionar, com nível de Snes9x, outro emulador que eu usava na época. Terminei Rocket Knight Adventures no Regen e não me arrependo de ter entrado em contato com a música daquele jogo.

Esses dias, Apple me mostrou um personagem de um jogo chamado Shining Force 2. O personagem parece uma pequena tartaruga ou lagartixa encouraçada com uma barriguinha amável e bem alimentada. Ai, ai, que pecado. Eu resolvi que jogaria só pela emoção de jogar com aquela criatura fofinha. Mas, como vocês já sabem, agora estou usando o Linux Mint Debian Edition 64-bit Cinnamon Edition, isto é, não é Ubuntu.

Peguei o Regen e tentei executá-lo aqui, mas nada aconteceu. Eu tentei executá-lo pelo Terminal para saber o que estava errado e descobri que ele estava tendo dificuldade em achar o arquivo “libgtk-x11-2.0.so.0”. “Certo, ele está com dependência faltosa, posso resolver isso”, pensei, com meu pensamento ainda um pouco nublado pela doce barriguinha da tartaruga. Aprendi na Internet o comando “apt-file search”, que me permite procurar por arquivos específicos dentro de pacotes não instalados, para saber em que pacote está libgtk-x11-2.0.so.0. A resposta era: no pacote “libgtk2.0-0”. Daí, abri meu gerenciador de pacotes e procurei pelo tal libgtk2.0-0, mas… ele já estava instalado.

Dando uma olhada no apt-file, eu pude ver que o arquivo libgtk-x11-2.0.so.0 instala no diretório /usr/lib/x86_64-linux-gnu/ e aí a resposta me acertou na face como xixi de bebê durante a troca de fralda. Na época do Ubuntu, eu usava um sistema 32 bits, com bibliotecas 32 bits devidamente instaladas, mas agora estou de 64 bits. De fato, “x86_64-linux-gnu” é um diretório cheio de objetos de 64 bits que não fazem sentido para uma aplicação de 32 bits, que parecia ser o caso do Regen. Alguém pode ter ficado preocupado até agora com a possibilidade de ter de recompilar o Regen para apontá-lo ao diretório correto, mas esse não é o caso: mesmo que eu apontasse o Regen para o diretório /usr/lib/x86_64-linux-gnu/, ele não poderia usar nada contido lá, por ser um programa de 32 bits, com capacidades limitadas.

Pensei um pouco. “Talvez o diretório certo não tenha sido criado”, passou pela minha cabeça, pois eu pensei que instalar algo de 32 bits através do APT poderia criar o diretório. Só que esse diretório já existia, porque o Wine já instala bibliotecas de 32 bits, eu só não sabia onde o diretório estava. Não era a solução certa, mas me deu uma ideia: e se eu, deliberadamente, instalasse dependências de 32 bits? Isso pode ser feito.

No repositório, programas e bibliotecas de 32 bits têm uma extensão “:i386” no nome. Então, em vez de instalar libgtk2.0-0, instalar “libgtk2.0-0:i386”. Instalei e tentei usar o Regen novamente. Agora, ele acusava a falta de um arquivo chamado “libXv.so.1”. Eureka! Isso significa que a primeira dependência havia sido satisfeita e que meu raciocínio estava correto afinal! Eu só precisava instalar as outras dependências e logo eu estaria saboreando aquila suculenta barriguinha…

Após instalar todas as dependências (libgtk-x11-2.0.so.0, libXv.so.1, libasound.so.2, libSDL-1.2.so.0), Regen funcionou, embora com uma interface meio feia. Inobstante, comecei a jogar Shining Force 2. Aprendi várias coisas hoje:

  1. Regen é um programa de 32 bits.
  2. Eu posso procurar por arquivos avulsos em pacotes não instalados usando o comando “apt-file search” seguido do nome do arquivo.
  3. Programas de 32 bits instalados pelo APT satisfazem dependências como 32 bits, mas as dependências ainda precisam ser instaladas manualmente se eu arrumar o programa por fontes fora do repositório.
  4. Não é uma doçura? http://www.shiningforcecentral.com/content/artwork/files/sf2/sf2_book_kiwi2.jpg
  5. As dependências do Regen pertencem aos pacotes libgtk2.0-0:i386, libxv1:i386, libasound2:i386 e libsdl1.2debian:i386, que podem ser instalados pelo Gerenciador de Aplicativos.
Anúncios

4 Comentários »

  1. Hope you get the emulator working, honey. >u< I'm glad you want to try this game. x3

    Just a note though; Kiwi (the turtle character) is an optional character and if you miss the opportunity to get him, he's lost forever. o.o [spoiler] When Granseal is invaded, check in one of the houses in the town (the pet shop, specifically) to find him and recruit him there. You can even name him, if you want. X3 [/spoiler]

    Curtir

    Comentário por Appipee — 9 de janeiro de 2015 @ 16:35

  2. I’ve been using Gen/GS as my Sega Genesis emulator, does that work for you?

    Curtir

    Comentário por pouar — 9 de janeiro de 2015 @ 14:09

    • I have never heard about. Tell me more about it.

      Curtir

      Comentário por Yure — 9 de janeiro de 2015 @ 21:34


RSS feed for comments on this post. TrackBack URI

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Crie um website ou blog gratuito no WordPress.com.

%d blogueiros gostam disto: