Cabrio FE - Compilando, Instalando e configurando o Cabrio no Ubuntu 12.04 64Bit

Iniciado por platao, 01 de Junho de 2014, 14:59

tópico anterior - próximo tópico

platao

Ola companheiros, andei testando o Cabrio FE http://www.cabrio-fe.org/ no meu Ubuntu 12.04.4 x64 e gostei bastante do resultado, para quem quer ter uma opção ao HiperSpin e Maximus Arcade do windows, sem passar para o lado "negro" da força ; ), o cabrio e uma excelente alternativa, apesar de ser um pouco complicado de configurar de inicio.

Existe uma pacote .deb pronto no site do Cabrio, que e desenvolvido pelo Steve, porem esta um pouco desatualizado, e preferivel entao baixara versao em desenvolvimento que se encontra no Git-Hub, inclusive com alguns forks do projeto original muito bons.

Achei interessante esse fork do Fred.b https://github.com/fredbcode/cabrio que da suporte melhorado aos videos no front-end funcionando sem problemas e uma novo recurso de "loop", ou seja o video do game a ser escolhido vai se repetindo indifinidamente, ao contrario do projeto original, que reproduz o video somente uma vez e para.

Como o Fred esta atualizando regularmente eu decidi fazer a instalação do cabrio com base nesse fork.

Para o pessoal que esta no 14.04 lts é relatado problemas com a lib libavcodec54 que e usada pelo Trusty, entao os samples de video provavelmente nao vai funcionar ou se funcionarem, podem ficar com a imagem cortada ou com algum bug, quem se interessar em arrumar ou contribuir de alguma forma, pode entrar em contato com o Fred e com o desenvolvedor original, Steve Madson atravez da pagina no grupo de discussao do google aqui;

- > https://groups.google.com/forum/#!forum/cabrio-fe-dev

Para podermos arrumar definitivamente e tornar o Cabrio um excelente opção para os retrogamers.

O proprio Fred disponibiliza uma distro live arcade com o Cabrio preconfigurado e Xubuntu na sua pagina http://numsys.eu/search.php?search=Mame uma boa pedida para quem quer experimentar o Cabrio e conhecer, alem de ver com ele e configurado, principalmente o arquivo .xml que e necessario para fazer o cabrio funcionar, recomendo!!!

Sobre as snaps de video com o 14.04;

This version works only with libavcodec53

But 'avcodec_decode_audio3' still deprecated, need review !

Some videos still broken

Here sample good and sample bad

Portanto quem entende e quer ajudar, sera bem vindo. Para o ubuntu 12.04 esta funcionando normalmente, porque ele usa uma versao anterior dessa libavcodec.

Para os amigos que quiserem adicionar o PPA do Cabrio, mantido pelo Sergio Benjamim aqui do forum, esse PPA tem sempre as ultimas atualizaçoes e novidades lançadas para o Cabrio e so visitar o PPA;

https://launchpad.net/~sergio-br2/+archive/cabrio

A primeira coisa e fazer antes de compilar o cabrio e saber que vc precisa fazer algums procedimentos para que o video funcione bem;

1 - compilar a partir do repositorio do Fred https://github.com/fredbcode/cabrio

2 - desligar o compiz, o compiz interfere nas previews de video gerando um lag considedravel no video e gerando lentidao total no aplicativo.

3 - converter as previews de video com o http://www.noobslab.com/2014/01/curlew-multi-converter-updated-to.html para 30 fps e mais alguns ajustes.

4 - entender o arquivo de configuração xml, do contrario vai gerar varios crashs na hora de rodar.

5 - ter aceleraçao 3D funcionando adequadamente.

Vamos começar entao, se vc tem aquela maquina virtual com o 12.04 que compilamos o mame vai servir bem, para que nao aconteça nada com a nossa instalação padrao do ubuntu.

dependencias;

sudo apt-get install gcc make libc6-dev libavcodec-dev libavutil-dev libavformat-dev freeglut3-dev freeglut3 libsdl1.2-dev libsdl-image1.2-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libswscale-dev libxml2-dev zlib1g-dev

Se por ventura mostrar isso no terminal;

Os pacotes a seguir serão REMOVIDOS:
 libegl1-mesa-drivers-lts-quantal libegl1-mesa-lts-quantal
 libgbm1-lts-quantal libgl1-mesa-dri-lts-quantal
 libgl1-mesa-dri-lts-quantal:i386 libgl1-mesa-glx-lts-quantal

Nao proceda com a instalação e aborte, isso pode tornar o seu sistema instavel e gerar problemas, por isso e aconselhavel usar uma maquina virtual para a compilação.

Agora que vc esta na maquina virtual;

sudo apt-get install git

depois;

sudo apt-get install gcc make libc6-dev libavcodec-dev libavutil-dev libavformat-dev freeglut3-dev freeglut3 libsdl1.2-dev libsdl-image1.2-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libswscale-dev libxml2-dev zlib1g-dev

depois;

git clone https://github.com/fredbcode/cabrio

depois;

cd cabrio      (ou pode vir tbm como cabrio-master)

agora;

make

e aguarde a compilação que e bem rapida, verifique se nao houve erros.

Terminada a compilação vamos copiar a pasta cabrio(ou cabrio-master) para a nossa instalação padrao do ubuntu 12.04 e proceder com;

sudo make install

Repare que agora um script vai fazer a isntalação do cabrio nos diretorios /usr/share/cabrio e o executavel cabrio em /usr/bin/cabrio mas vc pode usar o executavel cabrio diretamente da pasta que vc compilou, nao e necessario executar o cabrio como root (e nem deve).


primeira parte concluida - > 1 - compilar a partir do repositorio do Fred https://github.com/fredbcode/cabrio

Clicando no executavel cabrio vai aparecer a primeira tela de configuração, onde vc define os botoes cima,baixo,esquerda,direita start select e exit, tome cuidado para nao movimentar o mouse porque ele considera esse movimento do mouse como se fosse um comando para o aplicativo.

2 - segunda parte - desligar o compiz, o compiz interfere nas previews de video gerando um lag considedravel no video e gerando lentidao total no aplicativo.

Essa parte serve para o ubuntu 12.04 e 14.04 tbm principalmente para quem tem uma placa de video fuleira e de baixo desempenho como a minha intel965 e necessario desativar o compiz para jogar, para isso e necessario a execução de um script simples;

Instale primeiro;

sudo apt-get install -no-install-recommends gnome-panel openbox

depois e so copiar esse script simples e salvar em um arquivo de texto simples, clicar com o direito do mouse e dar as permissoes e executar como um programa;

#!/bin/bash

openbox --replace &

sleep 1

killall -9 /usr/bin/gtk-window-decorator &

sleep 1

gnome-panel &

sleep 1

cabrio

killall -9 openbox &

sleep 1

killall -9 gnome-panel &

compiz --replace &

exit 0

Salve ele na sua home e vai ser ele que vc vai usar para startar o seu cabrio sem compiz, isso serve para qualquer outro game ou aplicativo que nao se da bem com compiz, vc pode trocar o atalho da barra lateral do ubuntu por ele e toda vez que vc for usar o cabrio ele automaticamente vai desligar o compiz, trocar pelo openbox e quando vc encarrar o cabrio ele vai voltar com o unity e com o compiz ativo novamente automaticamente.

Outro recurso interessante e que vc pode colocar o cabrio na inicialização do sistema, onde aparece na tela de abertura do ubuntu qual sistema vc quer escolher, vc pode adicionar o cabrio ali para entrar direto, sem carregar toda a area de trabalho, somente o front end e os serviços basicos.

Para isso e so criar;

[Desktop Entry]
Name= cabrio
Comment= Arcade Games
Exec= local completo do script da sua pasta home
Icon= a desejar
Type=Application

Salvar o script como cabrio sem espaços no nome, por exemplo "NomeDojogo.desktop" e copiar para a pasta /usr/share/xsessions

sudo mv  NomeDojogo.desktop   /usr/share/xsessions

E assim pode jogar com o máximo de desempenho.

3 - converter as previews de video com o http://www.noobslab.com/2014/01/curlew-multi-converter-updated-to.html para 30 fps e mais alguns ajustes.


Nessa versao do cabrio o unico jeito de eu conseguir que funcionasse as previews de video foi da seguinte forma;

http://www.noobslab.com/2014/01/curlew-multi-converter-updated-to.html adicione o PPA e instale o Curlew, baixe as previews de video do mame do site http://emumovies.com/forums/index.php/files/category/44-mame/ (e necessario registro).

As previews vem em mp4 e 60fps e necessario alterar para 30fps e alterar mais algumas coisas tbm para que funcione sem problemas, do contrario os videos ficam com glitch e falhas;

http://img845.imageshack.us/img845/8339/f9um.png

http://img836.imageshack.us/img836/8610/tity.png

http://img845.imageshack.us/img845/7388/i0dv.png

Note que para games em tela 4:3 e normal mas existem games que usam telas de diferentes proporçoes no caso de games de "nave" elas usam 3:4, e so olhar na preview do video e mudar de acordo com o formato da tela original, use sempre 4:3 e 3:4 e exatamente as configuraçoes passadas, essas foram as configs que funcionaram bem aqui para mim, pode haver alguma diferença de maquina para maquina, nao esquecendo de desligar o compiz antes de rodar o aplicativo.

4 - entender o arquivo de configuração xml, do contrario vai gerar varios crashs na hora de rodar.

Se vc configurou errado o emulador e quer refazer a configuração e so excluir o arquivo .xml oculto na pasta .cabrio(para visualizar control+h) na sua home e começar novamente. Nessa pasta que e a mais importante do front-end, e que vai ficar esse arquivo de configuração, guarde bem esse local.

Um grande problema por assim dizer e que o cabrio nao tem um "configurador" amigavel (ainda) como os outros front ends para gerar a lista de roms, apesar de ter varios projetos em andamento e um ate experimental que funciona perfeitamente que esta incorporado no livemamecab do fred  http://numsys.eu/search.php?search=Mame e tbm um outro "gerador" do Boris http://www.popkoff.com/ que trabalha somente com o mame por enquanto, nao gerando listas de outros sistemas ainda, mas que funciona muito bem.

Outra opção e usar via wine ou uma maquina vrtual com o Windows XP o http://www.waste.org/~winkles/ROMLister/ que funciona muito bem para gerar a lista de roms, para quem tem duvida de como funciona o rom lister uma explicação bem detalhada aqui http://hyperspin-fe.com/oldsite/index.php?option=com_content&view=article&id=103&Itemid=115 nao e dificil so precisa de atenção.

Agora vem a parte mais "sem graça" desse front-end que e a configuração direto nos arquivos xml da pasta oculta .cabrio. Para facilitar a vida dos amigos vou deixar e explicar(tentar) cada item do arquivo para que todos possam a partir dessa explicação simples modificar o seu proprio arquivo e personalizar.

Entendendo o xml do cabrio:

Veja no final deste topico algumas linhas abaixo!!!!!

XML, do inglês eXtensible Markup Language, é uma linguagem de marcação recomendada pela W3C para a criação de documentos com dados organizados hierarquicamente, tais como textos, banco de dados ou desenhos vetoriais. A linguagem XML é classificada como extensível porque permite definir os elementos de marcação.

Linguagem de Marcação?

Linguagem de marcação é um agregado de códigos que podem ser aplicados a dados ou textos para serem lidos por computadores ou pessoas. Por exemplo, o HTML é uma linguagem de marcação para organizar e formatar um website, já o XML tem o mesmo conceito, mas para padronizar uma sequência de dados com o objetivo de organizar, separar o conteúdo e integrá-lo com outras linguagens, O XML tem como característica a portabilidade, por exemplo, um banco de dados pode escrever um arquivo XML para que outro banco consiga lê-lo.  

No Cabrio o arquivo xml que ele gera no inicio da aplicação e um arquivo simples e generico, a partir desse arquivo simples vc vai acrescentando as configuraçoes que vc deseja como elementos de cor e formato de fontes e tamanho.

1 - Uma coisa que se tem que prestar a atenção e a hierarquia em que os dados vao aparecer, por exemplo, aprendemos na escola em matematica e algebra(em uma equação) que primeiro se resolve o que esta em parenteses, depois o colchetes e depois por ultimo as chaves ; ) nao é assim?? e aqui e parecido.

2 - Preste a atenção no inicio de uma entrada <entrada de exemplo> e no fim dela </fim da entrada de exemplo>

3 - O valor que vc quer passar para que seja registrado pelo aplicativo exemplo: <frame-rate>60</frame-rate>


Ponto 1 - vc deve prestar atenção nessa hierarquia;

<cabrio-config>   -------------------------------------> inicio da configuração,observe que ha uma hierarquia aqui e que o campo <interface>
 <interface>                                                      esta "dentro" de <cabrio-config> e que <full-screen>true</full-screen> esta"dentro"  
   <full-screen>true</full-screen>                         do campo <interface>(olhe os espaços a partir da borda da pagina)
   <frame-rate>60</frame-rate>
   <theme>MyTheme</theme>
   <screen>     --------------------------------->        inicio de uma configuração que vc quer passar para o campo screen(tela)
     <width>640</width>  -------------------->         inicio de um valor que vc quer atribuir para a largura,altura,rotação e resolução datela
     <height>480</height>
     <rotation>90</rotation>
   </screen>   ---------------------------------->        fim da configuração que vc quer passar apra o campo screen(tela)
   </event>
     ...
   </controls>
   <lookups> ----------------------------------->       e assim vc atribui respeitando os seus grupos e subgrupos
     ...
   </lookups>-----------------------------------> grupo
   ... ---------------------------------------------> parametros do sub-grupo
 </interface>
 ...
</cabrio-config>

Veja aqui a continuação das configuraçoes http://ubuntuforum-br.org/index.php/topic,113252.msg627219.html#msg627219

Resultado final;

http://img839.imageshack.us/img839/871/0s47.png

Musica 8 bits para comemorar;

https://soundcloud.com/grimtonerecords
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Sergio Benjamim

Aoooo deu certo aqui. Agora falta ver a questão dos video snap, nem testei ainda.

E como faz para sair do cabrio?

Você usou os geradores de xml do fred ou boris? Funciona? Fazer isso na mão realmente é muito trabalho.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

Estou tentando criar o pacote debian dele, me deparei com alguns warnings:

gcc -g -Wall -DDATA_DIR=\"/usr/share/cabrio\" -I./include -I/usr/include/libxml2 -o config.o -c config.c
config.c: In function 'config_new':
config.c:2159:27: warning: variable 'platform_catgeory' set but not used [-Wunused-but-set-variable]
  struct config_category *platform_catgeory;



gcc -g -Wall -DDATA_DIR=\"/usr/share/cabrio\" -I./include -I/usr/include/libxml2 -o video.o -c video.c
video.c: In function 'video_decode_audio_frame':
video.c:174:4: warning: 'avcodec_decode_audio3' is deprecated (declared at /usr/include/libavcodec/avcodec.h:3608) [-Wdeprecated-declarations]
   used = avcodec_decode_audio3( context, (int16_t *)audio_buffer, &data_size,



dh_clean -k
dh_clean: dh_clean -k is deprecated; use dh_prep instead


Tentei atualizar o empacotamento debian, mudei o debian/compat de 5 para 9, e está dando esse erro:


dh_installdirs
install -d debian/cabrio
/home/sergio/Projects/cabrio/cabrio/debian/dirs: 1: /home/sergio/Projects/cabrio/cabrio/debian/dirs: usr/bin: not found
/home/sergio/Projects/cabrio/cabrio/debian/dirs: 2: /home/sergio/Projects/cabrio/cabrio/debian/dirs: usr/share/cabrio: not found
/home/sergio/Projects/cabrio/cabrio/debian/dirs: 3: /home/sergio/Projects/cabrio/cabrio/debian/dirs: usr/share/cabrio/fonts: not found
/home/sergio/Projects/cabrio/cabrio/debian/dirs: 4: /home/sergio/Projects/cabrio/cabrio/debian/dirs: usr/share/cabrio/pixmaps: not found
/home/sergio/Projects/cabrio/cabrio/debian/dirs: 5: /home/sergio/Projects/cabrio/cabrio/debian/dirs: usr/share/cabrio/sounds: not found
/home/sergio/Projects/cabrio/cabrio/debian/dirs: 6: /home/sergio/Projects/cabrio/cabrio/debian/dirs: usr/share/cabrio/themes: not found
/home/sergio/Projects/cabrio/cabrio/debian/dirs: 7: /home/sergio/Projects/cabrio/cabrio/debian/dirs: usr/share/cabrio/themes/carousel: not found
/home/sergio/Projects/cabrio/cabrio/debian/dirs: 8: /home/sergio/Projects/cabrio/cabrio/debian/dirs: usr/share/cabrio/themes/ice: not found
/home/sergio/Projects/cabrio/cabrio/debian/dirs: 9: /home/sergio/Projects/cabrio/cabrio/debian/dirs: usr/share/cabrio/themes/industrial: not found
/home/sergio/Projects/cabrio/cabrio/debian/dirs: 10: /home/sergio/Projects/cabrio/cabrio/debian/dirs: usr/share/cabrio/themes/wood: not found
dh_installdirs: problem reading debian/dirs:
make: *** [install] Error 127
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
debuild: fatal error at line 1364:
dpkg-buildpackage -rfakeroot -D -us -uc failed


Dá para construir o pacote com o debian/compat em 5, mas dá uma série de erros e warnings no lintian:


Now running lintian...
E: cabrio changes: bad-distribution-in-changes-file unstable
W: cabrio source: package-file-is-executable debian/changelog
W: cabrio source: package-file-is-executable debian/control
W: cabrio source: package-file-is-executable debian/copyright
W: cabrio source: package-file-is-executable debian/dirs
W: cabrio source: debian-rules-missing-recommended-target build-arch
W: cabrio source: debian-rules-missing-recommended-target build-indep
W: cabrio: description-synopsis-starts-with-article
E: cabrio: section-is-dh_make-template
W: cabrio: duplicate-font-file usr/share/cabrio/fonts/FreeSans.ttf also in fonts-freefont-ttf
W: cabrio: binary-without-manpage usr/bin/cabrio
Finished running lintian.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

Ok, arrumei uma coisa relacionada ao lintian, e o section no debian/control, que impedia de fazer upload corretamente no launchpad (unknown --> otherosfs). Fiz um recipe no launchpad para empacotar o cabrio do fred, funcionou! Já tem pacotes 32 e 64 bits, para o ubuntu 12.04 e 14.04:

PPA do Cabrio: https://launchpad.net/~sergio-br2/+archive/cabrio

Obs: Alguém precisa arrumar o empacotamento ainda, não tenho habilidade o suficiente para isso :(
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

Consegui arrumar alguns warnings/errors no lintian, sobrou só 3, um é inválido (tem bug no launchpad), os outros 2 não faço ideia.

Now running lintian...
E: cabrio changes: bad-distribution-in-changes-file unstable (esse é inválido)
W: cabrio source: debian-rules-missing-recommended-target build-indep
W: cabrio source: debian-rules-missing-recommended-target build-arch
Finished running lintian.


Uma coisa que reparei, o Cabrio não usa o freeglut3-dev, procurei pelos headers dele (freeglut.h, freeglut_ext.h, freeglut_std.h, glut.h) no código do Caibro, e nada. Eu acho que é usado só no windows, no Makefile.mingw tem um glut.dll. Vou tirar o freeglut3-dev e o freeglut3 do debian/control.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

platao

Estou testando no 12.04 e esta funcionando bem, nao tive nenhum problema com o seu pacote ; )

Na pagina do cabrio, aparece la libglut3-dev mas essa lib nao tem no 12.04, se vc olhar tbm no pacote disponivel do cabrio original do site na otem essa dependencia...acho que pode ser subistituida pelo freeglut3 porem, compilei sem essa dependencia e fluiu normal....

Seria interessante contatar o Steve Madsom pelo grupo de desenvolvimento do Google e perguntar sobre essa lib para ele, e tbm falar das novidades, acho que ele vai ficar feliz em saber que vc criou um recipe para acomodar a aplicação dele! O Fred e o Steve, os dois estao sempre debatendo as soluçoes para o Cabrio, eles sempre entram la para ver as novidades posta la!!!

Baixei a ISO do 14.04 e vou testar agora o pacote do seu repositorio tbm, para ver, via live-pen se instala normal!

O unico problema e a reprodução de video pelo cabrio, so esta faltando isso!!! ja vi que vc abriu um topico la!!! no groups do google ; ) legal!!!

Amanha eu posto as configurações apra usar o cabrio. 

\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Sergio Benjamim

Vou fazer o update do pacote logo logo, estou terminando de criar a entrada de menu dele.

Platao, o cabrio tem ícone oficial?

Edit: Consegui fazer o .desktop, dá para acessar pelo menu agora :), mas só vai ficar faltando um ícone... não sei se dá para usar o logo, tinha que perguntar para os desenvolvedores, afinal é a identidade o programa.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

platao

Era isso que eu ia falar hehehehe a entrada no menu... ficou massa esse pacote ; 0

Faz assim, posta la no grupo de discussao do google que o madson ve!!! vamos perguntar para ele.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Sergio Benjamim

Citação de: platao online 06 de Junho de 2014, 23:56
Era isso que eu ia falar hehehehe a entrada no menu... ficou massa esse pacote ; 0

Faz assim, posta la no grupo de discussao do google que o madson ve!!! vamos perguntar para ele.

Ufa! Pacote atualizado! Mandei fazer também pacote para o 13.10, o video snap funciona nele né?

Já postei lá também.

Só um detalhe: se for fazer um pacote debian à partir do código do fred, depois que ele fizer o merge do meu fork, você vai ter que aplicar um patch manualmente, ele está em debian/patches/FreeSans.ttf.patch. Ele basicamente altera uma linha do config.c, de modo que o pacote compilado para o debian use o FreeSans.ttf do sistema.


// deletar essa linha:
static const char *default_font = "/fonts/FreeSans.ttf";

// E incluir essas duas:
//static const char *default_font = "/fonts/FreeSans.ttf";
static const char *default_font = "/../fonts/truetype/freefont/FreeSans.ttf"; // FreeSans.ttf is in /usr/share/fonts/truetype/freefont/FreeSans.ttf


Isso é importante, se esquecer o Cabrio não vai abrir em alguma ocasiões, por exemplo se você não configurou ainda o ~/.cabrio/config.xml ou se não configurou uma fonte específica.

No meu branch do launchpad isso está corrigido, no github não.

Se você for instalar com o make e make install, não tem com o que se preocupar.

---

Eu tentei contornar esse problema da fonte FreeSans.ttf de outra maneira, alterando mais ainda o código do config.c, a ideia era descobrir qual distro usada no momento da compilação:

DISTRO_FAMILY=$(cat /etc/os-release | grep "ID_LIKE")
echo ${DISTRO_FAMILY#ID_LIKE=}


No ubuntu é retornado debian. Mas não são todas as distros que usam o /etc/os-release. O openSUSE retorna "suse", o Fedora não tem ID_LIKE, só o ID. Faça cat /etc/os-release para ver o resultado. Daí a ideia era usar um switch - case para definir o diretório do FreeSans.ttf, que muda para cada família de distribuição.

O problema principal foi o fato da variável default_font ser do tipo constante, então ela precisa ser definida antes da compilação, não depois (como eu estava pensando).
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

Cara, agora que fui ver, tem mais forks no github. Por que esses caras não fazem pull request? Eles melhoram uma coisa ou outra, e não retorna para o Maddison...

https://github.com/fredbcode/cabrio/network


O pgregory adicionou CMakeLists e suporte ao sdl 2.

O psychomantys alterou um pouco a estrutura da pasta e a maneira de compilar tudo (usando Makefile.am ao invés do makefile...).

Tem um branch do timotheeg também.

Postei à respeito lá: https://groups.google.com/forum/#!topic/cabrio-fe-dev/LjwxmC2iN1A. Acho um desperdício esse tipo de coisa não retornar para o upstream :(

---

Agora que eu fui sacar que você é o Jorge Aragao lá :)
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

platao

E ai que esta Sergiovisk ; ) quando se começa a criar varios forks e mexer em varias coisas divergindo do projeto original corre o risco de se perder e virar uma bagunça que ninguem entende depois.

Veja o caso do Mame por exemplo e suas variantes, tem um projeto do Mame que se chamava Ekmame era mantido por um coreano, rodava tudo que era rom pirata, modificaram tanto que depois de um certo tempo, depois que um dos integrantes saiu, ninguem conseguia mais dar continuidade e o projeto ficou estagnado.

Nao acho que e o caso do cabrio, mas seria interessante discutir isso com o pessoal, tem que ver com o Madson o que ele gostaria que fosse unido ao master dele.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

platao

O fred fez alguns utilitarios de configuração do Cabrio que estao na ISO do livemamecab, muito interessante dar uma conferida, roda por live-pendrive sem problema.

O utilitario do Boris para gerar as listas para o Mame funciona muito bem, so queria saber o atalho para selecionar tudo(tipo control+a) para passar para o lado direito e ele gerar a lista xml clicando em generate, olhei por cima, mas hj vou fazer o tuto de configuração do cabrio.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Sergio Benjamim

Eu baixei essa ISO, bem interessante mesmo. Mas pelo que pude perceber, o loop do video snap não está presente.

Tenho que ver depois esse utilitário de configuração. Tem GUI ou é no terminal?

O Fred acabou de fazer o merge do meu commit :)
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

platao

*o 13.10 deve usar a mesma  libavcodec53 entao e para funcionar.
** A configuração e por GUI mesmo, e bem basico mas e melhor do que nada.
***A galera deve ter ficado contente com o pacote que vc fez ; )
****Outra coisa, sempre que eu preciso de icones(e varias outras coisas) eu procuro la no devianArt http://www.deviantart.com/?q=mame+icons se vc nao conhece precisa conhecer.

Estou testando agora o seu pacote no 14.04 e parece que esta tudo ok, esta funcionando, talvez colocar um icone provisorio se quiser, na verdade o Cabrio e muito solido, ele nao crasha com facilidade(so quando tem alguma entrada errada no xml) o problema sao os samples de video que aqui no 12.04 funcionam....so que nao fica perfeito.

Os videos(fazendo aquele esquema que citei no começo) normais 4:3 de games tipo AlienVSPredator ficam aceitaveis, nemda para perceber que tem problema, mas os videos de 3:4 dos arcades estilo vertical como o 1943, 1942 ficam dando umas travadas minimas mas e perceptivel e e isso que falta para ser resolvido.

O Fred fez ate um video do problema vc ja deve ter visto, esta la no fork dele, quase nem da para perceber a falha. O legal do cabrio e que da para fazer o que vc quiser com ele, igual o whacade so que tem que ser tudo via arquivo xml e falta documentação explicando. Para compilar foi uma beleza, rapido, agora para entender como que funciona esse xml foi chato, por isso eu estou fazendo esse tutorial para dar um "empurrao" para o pessoal que resolver mexer com ele.

Leia novamente - Atualizado esse post -
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

platao

Continuando porque nao coube, limite de 20000 caracteres aqui do forum ; )

Entendendo o xml do cabrio:

XML, do inglês eXtensible Markup Language, é uma linguagem de marcação recomendada pela W3C para a criação de documentos com dados organizados hierarquicamente, tais como textos, banco de dados ou desenhos vetoriais. A linguagem XML é classificada como extensível porque permite definir os elementos de marcação.

Linguagem de Marcação?

Linguagem de marcação é um agregado de códigos que podem ser aplicados a dados ou textos para serem lidos por computadores ou pessoas. Por exemplo, o HTML é uma linguagem de marcação para organizar e formatar um website, já o XML tem o mesmo conceito, mas para padronizar uma sequência de dados com o objetivo de organizar, separar o conteúdo e integrá-lo com outras linguagens, O XML tem como característica a portabilidade, por exemplo, um banco de dados pode escrever um arquivo XML para que outro banco consiga lê-lo.  

No Cabrio o arquivo xml que ele gera no inicio da aplicação e um arquivo simples e generico, a partir desse arquivo simples vc vai acrescentando as configuraçoes que vc deseja como elementos de cor e formato de fontes e tamanho.

1 - Uma coisa que se tem que prestar a atenção e a hierarquia em que os dados vao aparecer, por exemplo, aprendemos na escola em matematica e algebra(em uma equação) que primeiro se resolve o que esta em parenteses, depois o colchetes e depois por ultimo as chaves ; ) nao é assim?? e aqui e parecido.

2 - Preste a atenção no inicio de uma entrada <entrada de exemplo> e no fim dela </fim da entrada de exemplo>

3 - O valor que vc quer passar para que seja registrado pelo aplicativo exemplo: <frame-rate>60</frame-rate>


Ponto 1 - vc deve prestar atenção nessa hierarquia de exemplo;

-------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------
<cabrio-config>   -------------------------------------> inicio da configuração,observe que ha uma hierarquia aqui e que o campo <interface>
 <interface>                                                      esta "dentro" de <cabrio-config> e que <full-screen>true</full-screen> esta"dentro"  
     <full-screen>true</full-screen>                         do campo <interface>(olhe os espaços a partir da borda da pagina)
     <frame-rate>60</frame-rate>
     <theme>MyTheme</theme>
   <screen>     --------------------------------->        inicio de uma configuração que vc quer passar para o campo screen(tela)
     <width>640</width>  -------------------->         inicio de um valor que vc quer atribuir para a largura,altura,rotação e resolução datela
     <height>480</height>
     <rotation>90</rotation>
    </screen>   ---------------------------------->        fim da configuração que vc quer passar apra o campo screen(tela)
   <lookups> ----------------------------------->         e assim vc atribui respeitando os seus grupos e subgrupos
     ...
   </lookups>----------------------------------->         grupo lookups
   ... --------------------------------------------->         parametros do sub-grupo lookups
 </interface>----------------------------------->          grupo interface
 ...----------------------------------------------->          parametros do sub-grupo interface
</cabrio-config> -------------------------------->         fim da configuração
------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------

Olhando no site do Cabrio, vc ve as sessoes e o que cada uma suporta, por exemplo, vc nao vai passar parametros de resolução e tamanho de tela no campo de screenshots ou videos, vc pode ate fazer isso e algumas ocasiao, mas em outras isso nao sera permitido gerando erro.

Para entender melhor e nao encher linguiça ; ) , vamos pegar um exemplo de uma arquivo simples e final de configuração do Cabrio que eu montei para ilustrar;

<?xml version="1.0" encoding="UTF-8"?>          ------->gerado automaticamente
<cabrio-config>                                ---------------->inicio da configuração repare que esta <cabrio-config>
 <interface>                                    ----------------> inicio da configuração do campo interface
   <theme>default</theme>           -----------> entre os simbolos vc coloca o valor, o parametro que vc deseja, tema default
   <full-screen>true</full-screen>            -----------> opção de "tela cheia" ou "janela" valores que podem ser atribuidos true e false
   <frame-rate>60</frame-rate>              -----------> refresh rate 60 fps
   <video-loop>true</video-loop>           ----------> video loop recurso dessa versao do fork que reinicializa a visualização do video demo
   <background>                       ------------> inicio do campo background ou seja a imagem da tela de fundo ou "wallpaper"
    <image-file>/home/platao/cabrio/background/gameroom_1280x800.jpg</image-file>   --->localização da imagem
    <rotation>0</rotation>                    -----------> nao queremos rotacionar essa imagem entao é 0
    <transparency>18%</transparency>        ------> transparencia da imagem de fundo
   </background>                       ------------> fim do campo background e dos valores para background
   <menu>                                        -------------> Inicio do menu, aquele menu que aparece escrito "AllGames"
    <image-file>/home/platao/cabrio/menu/menu-item.png</image-file>      ------> imagem de fundo para ser usado esse menu
    <orientation>landscape</orientation>     ------->orientação pode ser portrait ou landscape retrato ou paisagem
    <items-visible>5</items-visible>         --------->item que serao mostrados se vc marcar 0 nao vao aparecer os menus
    <font-scale>0.8</font-scale>                   -----> tamanho da font que vc quer usar, maior ou menor
    <border>22%</border>          ---> borda,se vc quer que as letras fiquem mais proximas ou mais afastadas das bordas da imagem
   </menu>                                          ----------> fim da configuração do item menu
    <submenu>                           -----> aquele menu que quando vc clica no menu principal abre esse submenu para escolher o sistema
    <image-file>/home/platao/cabrio/menu/submenu-item.png</image-file> --->mesma coisa da anterior, vc escolhe a imagem
    </submenu>                          ------> fim do campo submenu
   <font>                                   ----> inicio do campo font, a fonte que vc vai definir para usar no aplicativo eu uso a ubuntu-sans-bold
    <font-file>/home/platao/cabrio/data/fonts/Ubuntu-B.ttf</font-file>  ---> definição da fonte que via ser usada
    <size>55</size>                    ----> tamanho da fonte
    <color>FFFF00</color>             ---> cor que eu quero(amarelo) veja aque as cores-> http://www.oocities.org/tutorialdhtml/a12.htm
   </font>                                  ----> fim da config para as fontes
   <screen>                               -----> inicio do campo tela, tamnho e resolução
     <width>1280</width>         --------> resolução
     <height>800</height>
     <rotation>0</rotation>        --------> rotação
     <flip-horizontal>0</flip-horizontal>
     <flip-vertical>0</flip-vertical>
   </screen>                           ---------------> fim do campo screen
   <hints>                                --------------> hints aqueles botoes arcade "piscando"
       <primary-offset>-2.2</primary-offset>          ----> posição mais afastado ou mais agrupado medido a partir do centro da tela
       <secondary-offset>-1</secondary-offset>
       <size>0.8</size>                                       ----> tamanho e espaço entre eles
       <spacing>0.2</spacing>
   </hints>                                            --------------> fim do campo dos "botoes"
   <snap>                                     ------> inicio do campo snaps, aquela snapshot de video que aparece no front end ou imagem estatica
       <primary-offset>-2.5</primary-offset>
       <secondary-offset>0</secondary-offset>       -----> o centro da tela é 0 entao para a esquerda e para direita +1 e -1
       <size>1.2</size>                                 ----------> tamanho
       <x-angle>-5</x-angle>                                ----> angulo x y z altura largura e profundidade                
       <y-angle>20</y-angle>
       <z-angle>5</z-angle>
       <fix-aspect-ratio>true</fix-aspect-ratio>         ---> fixa a proporção de altura e largura
   </snap>                                                        -----> fim do campo snap
   <graphics>                                                --------> inicio do campo graphics, qualidade e tamanho
     <quality>high</quality>
     <max-image-width>512</max-image-width>
     <max-image-height>512</max-image-height>
   </graphics>                                                  -----> fim do campo graphics
   <controls>                          --------> inicio do campo controles(aquele que vc definiu na inicialização do cabrio, vc pode mudar aqui)
     <event>
       <name>up</name>
       <value>up</value>                                    -----> basicamente cima baixo esquerda e direita, start select e exit da aplicação
       <device>
         <type>keyboard</type>
         <id>0</id>
       </device>
     </event>
     <event>
       <name>down</name>
       <value>down</value>
       <device>
         <type>keyboard</type>
         <id>0</id>
       </device>
     </event>
     <event>
       <name>left</name>
       <value>left</value>
       <device>
         <type>keyboard</type>
         <id>0</id>
       </device>
     </event>
     <event>
       <name>right</name>
       <value>right</value>
       <device>
         <type>keyboard</type>
         <id>0</id>
       </device>
     </event>
     <event>
       <name>select</name>
       <value>1</value>
       <device>
         <type>keyboard</type>
         <id>0</id>
       </device>
     </event>
     <event>
       <name>back</name>
       <value>2</value>
       <device>
         <type>keyboard</type>
         <id>0</id>
       </device>
     </event>
     <event>
       <name>quit</name>
       <value>3</value>
       <device>
         <type>keyboard</type>
         <id>0</id>
       </device>
     </event>
   </controls>-                                       -----> fechamento de todos os campos que foram abertos anteriormente la em cima
 </interface>                                         -----> fechamento de todos os parametros que firam abertos anteriormente la em cima
 <emulators>                                             ---------> inicio do campo emuladores introduzindo o mame
   <emulator>
     <name>mame</name>                          ---------> nome que vai aparecer
     <display-name>MAME</display-name>
     <executable>/home/platao/cabrio/mame64143/mame64</executable>          -----> local do executavel mame64
     <directory>/home/platao/cabrio/mame64143</directory>                         -------> diretorio do mame64
     <platform>Arcade</platform>                                                            ---------> paltaforma
     <params>                                                                                                --> parametros para o emulador funcionar
       <param>
         <name>-nowindow</name>                                                         -----------> nao rodar em janela
       </param>
       <param>
         <name>-skip_gameinfo</name>                                                        ------> nao exibir informaçoes do game
       </param>
       <param>
         <name>-switchres</name>                                                                -----> ajustar resolução
       </param>
       <param>
         <name>-joystick</name>                                                                -------> usar joystick
       </param>
     </params>
   </emulator>                                                                                   ------------> fim dos parametros para o emulador
 </emulators>
<game-list>                                                                                   ----------------> inicio da lista de games
<name>Arcadelist</name>                                                             -----------------> nome da lista
<games>                                                                                 ---------------------> inicia da configuração dos games
<game>                                                                                 ---------------------->inicio de uma configuração de um game especifico
<name>1942</name>                                                                                 ------> game 1942
<platform>Arcade</platform>
<rom-image>1942.zip</rom-image>                                                     ---------> nome da rom que deve ser procurada na pasta roms
<images>                                                                                 -----------------> abriu campo images
<image>                                                                                    ----------------> abriu campo image
<type>logo</type>                                                                         ------------> parametro "logo"
<image-file>1942b.png</image-file>                                      -->logo que deve ser exibido na "roda" aquela roda 3D que aparece 1942
</image>                                                                               -------------------> fechou o parametro image
<image>                                                                                 -----------------> abriu o parametro image(vai adicionar mais um item)
<type>screenshot</type>                                                          -----------------> adicionou parametro screenshot
<image-file>1942.jpg</image-file>                                              ----------------> imagem screenshot que ele deve procurar
</image>                                                                                  ---------------> fechou image
<image>                                                                                  ----------------> abriu image
<type>background</type>                                                         ----------------> parametro background
<image-file></image-file>                                              ---> aqui vc pode definir uma imagem de fundo para cada jogo se quiser
</image>
</images>                                                                                  -------------> fechou image e images
<video>1942.mp4</video>                                                           ----------> video de exemplo que aparece na apresentaçao do game
<categories>                                                                              ----------> abre o campo category
<category>
<name>Genre</name>                                                                ---------> aqui o emulador procurar ao selecionar "shooter"  
<value>Shooter</value>
</category>
</categories>
</game>
</games>
</game-list>                                                        ----------> finalizando tudo que foi aberto anteriormente
<locations>                                                          ---------> esse e importante porque indica para a aplicação onde ela vai
 <location>                                                                        procurar os videos,imagens, background. Entao vc nao precisa
    <type>platform</type>                                                   colocar o caminho completo para cada imagem ou video de cada jogo
    <directory>/home/platao/cabrio/platform</directory>          e so indicar a pasta aqui e o nome da screenshot ou video no campo de
   </location>                                                                     cada jogo.
   <location>
     <type>video</type>
     <directory>/home/platao/cabrio/video</directory>
   </location>
   <location>
     <type>logo</type>
     <directory>/home/platao/cabrio/logo</directory>
   </location>
   <location>
     <type>screenshot</type>
     <directory>/home/platao/cabrio/screenshots</directory>
   </location>
   <location>
     <type>background</type>
     <directory></directory>
   </location>
</locations>                                                                                                    -------> fechamos tudo
</cabrio-config>                                                                                      -------> fim da configuração

Resultado final;

https://www.youtube.com/watch?v=nh7J3iR3K_o&feature=youtu.be
http://img839.imageshack.us/img839/871/0s47.png
http://www.cabrio-fe.org/support/config.html
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997