Mame novo versao 0.149, um passo a passo para os companheiros que gostam e querem testar e compilar para a sua maquina,otimizar e fazer alguns ajustes.
Estou usando o Ubuntu 12.04 x64 e é provavel que esse tutorial funcione em versoes mais novas.
Primeiro vamos ver qual a versao do mame que esta disponivel para o ubuntu 12.04---->versao 0.145 dos repositorios oficiais. Entao queremos uma versao mais nova do emulador que traz diversas melhorias na versao 0.149, mas um modo facil de resolver as dependecias é com o comando;
sudo apt-get build-dep mame
Porem, como consta nos repositorios oficiais a versao 0.145 do mame o build-dep vai preparar o sistema para compilar essa versao, que nao e a que desejamos, e ao tentar compilar a versao 0.149 havera erros e a compilação nao vai ser concluida com exito. Entao para facilitar a nossa vida : ) vamos adicionar o repositorio do Cesare Falco para resolver as dependenciase e depois construir o mame 0.149 a partir do site do mamedev, e necessario atentar para os repositorios e deixar marcado o souces, para obtermos as dependencias corretas dessa forma;
sudo add-apt-repository ppa:c.falco/mame
depois;
sudo apt-get update
*se vc tem uma versao mais antiga isntalada desse repositorio e deseja remover proceda;
sudo rm -f /etc/apt/sources.list.d/sdlmame4ubuntu.*
Nao instale ainda!!! Vamos fazer a nossa propria compilação do mame. Agora o mame que consta no sistema ja mudou para a versao mais nova;
*Repare que o sources do repositorio do Cesare Falco esta marcado e tbm o sources na aba aplicativos ubuntu, isso e importante!!!
**se vc nao estao vendo as screenshots veja no canto direito "go to media" ou "continue to the media" no imageshack.
***Atenção!!! Esse tutorial foi escrito com base em um sistema recem instalado(Precise), ou instalado em uma VM como o Virtualbox(recomendado) ao fazer um upgrade do Ubuntu 12.04 ele vai passar a usar o kernel do Quantal!!! Se vc rodar o build-dep ha o risco dele remover partes importantes do sistema!!!Veja o que ocorre;
platao@platao-ubuntu:~$ sudo apt-get build-dep mame
[sudo] password for platao:
Lendo listas de pacotes... Pronto
Construindo árvore de dependências
Lendo informação de estado... Pronto
Os pacotes a seguir serão REMOVIDOS:
libgl1-mesa-dri-lts-quantal libgl1-mesa-dri-lts-quantal:i386
libgl1-mesa-glx-lts-quantal libgl1-mesa-glx-lts-quantal:i386
libglapi-mesa-lts-quantal libglapi-mesa-lts-quantal:i386
libxatracker1-lts-quantal x11-xserver-utils-lts-quantal xorg
xserver-common-lts-quantal xserver-xorg-core-lts-quantal
xserver-xorg-input-all-lts-quantal xserver-xorg-input-evdev-lts-quantal
xserver-xorg-input-mouse-lts-quantal
xserver-xorg-input-synaptics-lts-quantal
xserver-xorg-input-vmmouse-lts-quantal xserver-xorg-input-wacom-lts-quantal
xserver-xorg-lts-quantal xserver-xorg-video-all-lts-quantal
xserver-xorg-video-ati-lts-quantal xserver-xorg-video-cirrus-lts-quantal
xserver-xorg-video-fbdev-lts-quantal xserver-xorg-video-intel-lts-quantal
xserver-xorg-video-mach64-lts-quantal xserver-xorg-video-mga-lts-quantal
xserver-xorg-video-modesetting-lts-quantal
xserver-xorg-video-neomagic-lts-quantal
xserver-xorg-video-nouveau-lts-quantal
xserver-xorg-video-openchrome-lts-quantal
xserver-xorg-video-r128-lts-quantal xserver-xorg-video-radeon-lts-quantal
xserver-xorg-video-s3-lts-quantal xserver-xorg-video-savage-lts-quantal
xserver-xorg-video-siliconmotion-lts-quantal
xserver-xorg-video-sis-lts-quantal xserver-xorg-video-sisusb-lts-quantal
xserver-xorg-video-tdfx-lts-quantal xserver-xorg-video-trident-lts-quantal
xserver-xorg-video-vesa-lts-quantal xserver-xorg-video-vmware-lts-quantalOs NOVOS pacotes a seguir serão instalados:
libasound2-dev libcaca-dev libdrm-dev libflac-dev libgl1-mesa-dev
libgl1-mesa-glx libgl1-mesa-glx:i386 libglapi-mesa libglapi-mesa:i386
libglu1-mesa-dev libjpeg-turbo8-dev libjpeg8-dev libkms1 libncurses5-dev
libogg-dev libportmidi-dev libpulse-dev libsdl-ttf2.0-dev libsdl1.2-dev
libslang2-dev libssl-dev libtinfo-dev libx11-xcb-dev libxcb-glx0-dev
libxt-dev libxxf86vm-dev mesa-common-dev python-dev python2.7-dev
x11proto-dri2-dev x11proto-gl-dev x11proto-xf86vidmode-dev xserver-xorg-core
xserver-xorg-input-evdev
0 pacotes atualizados, 34 pacotes novos instalados, 40 a serem removidos e 0 não atualizados.
É preciso baixar 38,0 MB de arquivos.
Depois desta operação, 31,9 MB adicionais de espaço em disco serão usados.
Você quer continuar [S/n]? n
Abortar.
Acho que deu para entender : ) use a maquina virtual com o 12.04.4 recem isntalado e sem atualizaçoes para compilar o mame.
Agora sim vamos rodar o ;
sudo apt-get build-dep mame
Agora o mame sera compilado com as dependencias da versao mais nova e nao havera mais problemas. Vamos baixar o fonte do mame agora do site;
http://mamedev.org/E pegar a versao mais recente que e a 149;
http://mamedev.org/downloader.php?file=releases/mame0149s.zipExtrair na sua home e havera a pasta
mame entre nela e faça as alteraçoes como mostra a seguir;
*Vc pode ver na integra aqui, mas so isso descrito abaixo
modo 3 ja jaz o que desejamos.
http://ubuntuforum-br.org/index.php/topic,87662.msg513070.html#msg513070Modo 3 - Removendo tudo, nesse caso nao e necessario proceder com o modo 1 e o Modo 2.
Somente as configurações abaixo ja vao fazer todo o processo, nao havera nada, somente uma tela preta e posteriormente o game aparecendo;
Va ate;
\src\emu\ui.c
Clique na lupa e procure por;
int ui_display_startup_screens:Chegando nessa linha;
int ui_display_startup_screens(running_machine &machine, int first_time, int show_disclaimer)
{
const int maxstate = 3;
int str = machine.options().seconds_to_run();
int show_gameinfo = !machine.options().skip_gameinfo();
int show_warnings = TRUE;
int state;
/* disable everything if we are using -str for 300 or fewer seconds, or if we're the empty driver,
or if we are debugging */
Adicione essa linha em negrito depois de
int state;
int ui_display_startup_screens(running_machine &machine, int first_time, int show_disclaimer)
{
const int maxstate = 3;
int str = machine.options().seconds_to_run();
int show_gameinfo = !machine.options().skip_gameinfo();
int show_warnings = TRUE;
int state;
show_gameinfo = show_warnings = show_disclaimer = FALSE; /* disable everything if we are using -str for 300 or fewer seconds, or if we're the empty driver,
or if we are debugging */
Adicionado a linha
show_gameinfo = show_warnings = show_disclaimer = FALSE;Procure nesse mesmo arquivo por;
/* display any popup messages */Chegando nessa linha;
if (osd_ticks() < popup_text_end)
ui_draw_text_box(astring_c(messagebox_text), JUSTIFY_CENTER, 0.5f, 0.9f, messagebox_backcolor);
else
popup_text_end = 0;
/* cancel takes us back to the ingame handler */
if (ui_handler_param == UI_HANDLER_CANCEL)
ui_set_handler(handler_ingame, 0);
}
Altere para;
/* display any popup messages */
/* if (osd_ticks() < popup_text_end)
ui_draw_text_box(astring_c(messagebox_text), JUSTIFY_CENTER, 0.5f, 0.9f, messagebox_backcolor);
else
popup_text_end = 0;
*//* cancel takes us back to the ingame handler */
if (ui_handler_param == UI_HANDLER_CANCEL)
ui_set_handler(handler_ingame, 0);
}
Os caracteres
/* e tbm
*/ desabilitam essa parte do codigo.
Procure agora por;
static UINT32 handler_messagebox(running_machine *machine, UINT32 state)
{
ui_draw_text_box(astring_c(messagebox_text), JUSTIFY_LEFT, 0.5f, 0.5f, messagebox_backcolor);
return 0;
}
e troque por;
static UINT32 handler_messagebox(running_machine *machine, UINT32 state)
{
//ui_draw_text_box(astring_c(messagebox_text), JUSTIFY_LEFT, 0.5f, 0.5f, messagebox_backcolor);
return 0;
}
Adicionando "
//ui_draw.." desabilita essa linha do codigo.
Removendo a borda branca da janela de carregamento;
Va ate \src\emu\render.c
Procure por;
render_primitive *primVa ate;
else
{
render_primitive *prim = list.alloc(render_primitive::QUAD);
set_render_bounds_xy(&prim->bounds, 0.0f, 0.0f, (float)m_width, (float)m_height);
set_render_color(&prim->color, 1.0f, 1.0f, 1.0f, 1.0f);
prim->texture.base = NULL;
prim->flags = PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA);
list.append(*prim);
if (m_width > 1 && m_height > 1)
{
prim = list.alloc(render_primitive::QUAD);
set_render_bounds_xy(&prim->bounds, 1.0f, 1.0f, (float)(m_width - 1), (float)(m_height - 1));
set_render_color(&prim->color, 1.0f, 0.0f, 0.0f, 0.0f);
prim->texture.base = NULL;
prim->flags = PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA);
list.append(*prim);
}
}
e troque por;
else
{
/* render_primitive *prim = list.alloc(render_primitive::QUAD);
set_render_bounds_xy(&prim->bounds, 0.0f, 0.0f, (float)m_width, (float)m_height);
set_render_color(&prim->color, 1.0f, 1.0f, 1.0f, 1.0f);
prim->texture.base = NULL;
prim->flags = PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA);
list.append(*prim);
if (m_width > 1 && m_height > 1)
{
prim = list.alloc(render_primitive::QUAD);
set_render_bounds_xy(&prim->bounds, 1.0f, 1.0f, (float)(m_width - 1), (float)(m_height - 1));
set_render_color(&prim->color, 1.0f, 0.0f, 0.0f, 0.0f);
prim->texture.base = NULL;
prim->flags = PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA);
list.append(*prim);
}
*/ }
/* e
*/ foi adicionado desabilitando essa parte do codigo.
Terminado essa parte, esta quase chegando a hora de compilar o nosso mame, vamos fazer algumas alteraçoes no arquivo makefile;
Linha 211 descomente, ficando;
PTR64 = 1
Nao esta vendo as linhas no gedit? va ate editar->preferencias->marque "exibir numeros de linha"
Linha 175 descomente se estiver comentado e adicione;
ARCHOPTS = -march=native
*Nao exagere nas Flags e otimizaçoes alem do que foi descrito aqui, nao ha diferença perceptivel na execução dos games e pode haver imcompatibilidade ao rodar o mame em hardwares diferentes.
**A unica diferença em desempenho é mesmo rodando o mame64 em um ambiente nativo, ou seja o Ubuntu 64bits.
***O tutorial pode ser usado para compilar em Ubuntu de 32bit, deixando de marcar é claro, PTR64 = 1.
# uncomment next line to enable networking
USE_NETWORK = 1Antes de dar a partida com o make precisamos fazer uma correção para essa versao, entre na pasta mame e abra ela no terminal depois coloque o comando;
find . -type f -not -name uismall.png | xargs perl -pi -e 's/\r\n?/\n/g'
Pronto!!! Agora e so compilar com o comando
make ;
A o rodar o make inicia-se a compilação, se vc ja tentou compilar anteriormente e melhor remover vestigios da compilação anterior com um make clean.
*Em vez de um único comando make, você pode usar o make -j3 para tirar proveito do seu processador multi-core.
Enjoy!!!
Platao