Testando o Reicast – emulador de Sega Dreamcast no Linux

Nessa postagem vou explicar como compilar e instalar o emulador Reicast no Linux.

Reicast não é o primeiro projeto open-source escrito para emular jogos de Dremcast, existe o Lxdream, sem atualização desde 2010. Na linha de código fechado o finado Chankast reinava no Windows em meados 2005. Contudo, nenhum deles permaneceu como referência na cena da emulação.

A ascensão do Reicast não foi acidental, o projeto nasceu das mãos dos talentosos desenvolvedores do nullDC, considerado o melhor emulador de Sega Dremcast para Windows x86. Inclusive na página do nullDC contém uma nota informando que os novos trabalhos serão feitos no Reicast:

Work is now done on reicast (https://github.com/reicast/reicast-emulator), and while nullDC is still a better choice for dreamcast emulation on windows/x86 reicast is where future development is. Come and help us!

Isso me faz acreditar que grande parte do código base do nullDC vem sendo aproveitado no Reicast.

O programa também recebe constantes commits no github, com suporte a diversas plataformas, inclusive Linux.

Mas a postagem não é para contar histórias, quero mesmo é ensinar as etapas de compilação do emulador. Prepara o terminal!

1. Resolver dependências:

$ sudo apt-get install build-essential libasound2 libasound2-dev libegl1-mesa-dev libgles2-mesa-dev git

2. Descarregar os arquivos-fonte:

$ git clone https://github.com/reicast/reicast-emulator.git

3. Entrar no diretório correto, construir e instalar:

$ cd reicast-emulator/shell/linux/
$ make
$ sudo make install

Está instalado! A escassa documentação pode ser lida usando o comando man reicast.

4. Abra o terminal e rode o comando:

$ reicast

O programa ira abrir e fechar subitamente, retornara erros por falta de Bios/flash. Faço isso para ele criar os caminhos dos diretórios e arquivos de configuração automaticamente.

Após essa primeira execução o arquivo emu.cfg será criado em: ~/.config/reicast/

5.A próxima etapa é o download da Bios/Flash na página: http://www.freewebs.com/animated_site/dc_bios.bin
http://www.freewebs.com/animated_site/dc_flash.bin

Os arquivos dc_bios.bin e dc_flash.bin devem ser copiados para: ~/.local/share/reicast/data/

Não me pergunte o motivo de elegerem tal pasta, estou apenas seguindo a documentação.

6. Ok! A configuração do controle é através do comando reicast-joyconfig. Antes de executá-lo descarregue as dependências:

$ sudo apt-get install python-pip python-dev
$ sudo pip install evdev

Plugue o controle no computador e execute:

$ mkdir -p ~/.config/reicast/mappings/
$ reicast-joyconfig -f ~/.config/reicast/mappings/controller_ps3.cfg

Ele vai pedir a id do dispositivo, então informe.

fm4lloc@debian:~$ reicast-joyconfig
17: Sony PLAYSTATION(R)3 Controller (/dev/input/event17, usb-0000:00:13.0-1/input0)
Please enter the device id: 17

No meu caso a id do controle do ps3 conectado apareceu como 17, o seu pode apresentar outro.

Siga respondendo se quer mapear (Y – sim ou N – não) determinado botão. Não mapeei o digital pad 2, os botões C, D e Z quando perguntado.

Depois o mapeamento do controle abra o arquivo: ~/.config/reicast/emu.cfg e acrescente o caminho da configuração recém criada do controle e sua respectiva id editando a seguinte parte do documento:

[input]
evdev_device_id_1 = 17
evdev_mapping_1 = /home/fm4lloc/.config/reicast/mappings/controller_ps3.cfg

NOTA

Enquanto usava reicast-joyconfig para configurar os botões do controle do Playstation 3, um erro ao tentar mapear o botão A me impedia de avançar.

O erro foi:

reicast-joyconfig.py 
17: Sony PLAYSTATION(R)3 Controller (/dev/input/event17, usb-0000:00:13.0-1/input0)
Please enter the device id: 17
Using device 17...
Name: Sony PLAYSTATION(R)3 Controller
File: /dev/input/event17
Phys: usb-0000:00:13.0-1/input0
Do you want to map a button to exit the emulator [Y/n] n
Do you want to map the A button? [Y/n] 
Press the A button now...
Traceback (most recent call last):
  File "/usr/local/bin/reicast-joyconfig", line 237, in <module>
    mapping = setup_device(dev_id)
  File "/usr/local/bin/reicast-joyconfig", line 147, in setup_device
    print_mapped_button("%s button" % button, event)
  File "/usr/local/bin/reicast-joyconfig", line 89, in print_mapped_button
    code_id = evdev.ecodes.BTN[event.code]
KeyError: 302

Solucionei comentado a linha do script /usr/local/bin/reicast-joyconfig:

print_mapped_button("%s button" % button, event)

Comente acrescentando o caractere # (jogo-da-velha) no começo da linha retrocitada.

7. Hora de jogar.

Eis o melhor momento! Adianto a lista de compatibilidade, disponível aqui -> Reicast_Compatibility_List – a lista não é exaustiva, uma massa grande de jogos não foram adicionados nela e funcionam, caso do Shenmue 1.

Atualmente o reicast suporta imagens no formato .CDI e .GDI. O comando para executar o jogo é:

$ reicast /caminho_do_jogo/jogo.gdi

Para iniciar em tela cheia use a opção -config x11:fullscreen=1:

$ reicast -config x11:fullscreen=1 /caminho_do_jogo/jogo.gdi

ou edite o arquivo emu.cfg e atribua o valor 1 (um) para fullscreen. A resolução também é alterada no emu.cfg

[x11]
fullscreen = 1
height = 480
width = 640

Imagens do emulador:

Este slideshow necessita de JavaScript.

A configuração da maquina usada:

Debian 8.2 Jessie
Operating System =  Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u4 (2015-09-19) x86_64 GNU/Linux
Physical RAM     =  3966 MB 
CPU name         =  AMD Phenom(tm) II X4 955 Processor 
CPU speed        =  3.193 ghz (4 logical threads) 
Video Card       = GeForce GTX 460 1024gb – Driver proprietário da NVIDIA na versão 352.21
Anúncios