Fórum Ubuntu Linux - PT

Suporte Técnico => Jogos e Diversão => Tópico iniciado por: Sergio Benjamim em 20 de MAR?O de 2014, 17:50

Título: Última versão do VBA-M
Enviado por: Sergio Benjamim em 20 de MAR?O de 2014, 17:50
O VBA-M, emulador de game boy advance e anteriores, está até hoje em desenvolvimento. A última versão saiu esses dias, versão svn 1229.

Página oficial: http://vba-m.com/ (http://vba-m.com/)

Página de desenvolvimento: https://sourceforge.net/projects/vbam/ (https://sourceforge.net/projects/vbam/)

A versão disponível no getdeb games se encontra um tanto defasada. Dessa maneira, criei um PPA para essa última versão:

VBA-M Trunk (https://launchpad.net/~sergio-br2/+archive/vbam-trunk)

Eu só fiz pacote para o ubuntu trusty, mas nada impede de adicionar o PPA no sistema e trocar a distro de precise ou saucy para trusty, lá na aba "Outros Softwares", no Software & Updates (é só escolher o PPA previamente instalado, clicar no botão "Editar..." e alterar o Distribution/Distribuição de saucy para trusty, por exemplo). É um truque que costuma dar certo para PPA que não tem dependências, como esse.

Importante: os saves states pelo que notei são incompatíveis com a versão anterior. Faça um backup nos seus saves antes de testar essa versão. Os saves de bateria pelo que sei ainda são compatíveis.

Bom divertimento!
Título: Re: Última versão do VBA-M
Enviado por: platao em 20 de MAR?O de 2014, 18:13
Olha que maravilha, nosso forum dando frutos, pessoal interessado em aprender foi la e trouxe essa pérola para ser compartilhada conosco, que e esse emulador de GBA e Game Boy!!! Espero que seja o primeiro de muitos desse PPA!!!

Parabens Sergio!!!

Explica como e a experiencia com esse emulador, detalhes que vc percebeu nele, curiosidades, macetes desse sistema, compilação, otimização e como vc criou o seu PPA para incentivar o pessoal a tbm se envolver e criar um PPA ou ajudar com sua aplicação favorita!!!

   
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 20 de MAR?O de 2014, 19:24
Opa Platao

Eu joguei pouco ele, o visual está idêntico ao anterior. Experimentei alguns jogos, tá rodando legal. Uma coisa que percebi é que o config desse vbam-gtk (~/.config/gvbam/config) é meio incompatível com a versão anterior, ao abrir essa versão mais nova ele reconhece a configuração anterior do emulador, mas se você desinstalar esse novo e instalar de volta o antigo, você perde as configurações. Bom, nada demais, é só reconfigurar o emulador, e se não houver problemas com esse novo então não há motivo para se preocupar com isso (já que você não vai voltar na versão anterior).

Outra coisa é em relação ao novo front-end que a equipe está desenvolvendo. A atual, como o próprio nome sugere, usa o GTK. A próxima usará o WxWidgets, e terá como grande vantagem deixar igual a interface entre Linux - Mac - Windows. Se você pegar o código fonte, esse vbam-wx está lá, é possível compilar essa nova interface, mas ela ainda está bem instável. Eu compilei uma vez aqui, mas ao fechar dá um crash nervoso no sistema. Além disso, pelo que me lembro, na hora de você salvar seu jogo, os saves states ficam com uns caracteres estranhos no lugar do nome comum do jogo. Com o vbam-gtk isso não acontece.

Outro grande recurso que pode ser habilitado na hora de compilar é o game link do VBA! Mas esse recurso só se encontra no vbam-wx. Quem já experimentou para windows sabe do que estou falando. Eu consegui usar e trocar uns pokemons entre duas janelas do emulador, só que os dois ficam extremamente lentos. A equipe do VBA-M está trabalhando nisso. E há problema com alguns jogos quando esse recurso está habilitado.

Quando a nova interface e esse recurso do game link estiverem melhores, eu tento fazer um pacote.

Quanto ao empacotamento, eu dei sorte que o código fonte do vbam já estava "debianizado", ou seja, continha a pasta debian/ com vários arquivos de configuração de empacotamento. Mas tive que mudar algumas coisas, o padrão atualizou e o pacote não acompanhou. E várias dependências de compilação estavam furadas (Build-Depends, no arquivo debian/control), troquei pelo que achei nesse link (http://vba-m.com/forum/Thread-how-to-build-vba-m-from-the-svn-code-in-linux).

Segui o passo à passo desses site, para aprender um pouco sobre empacotamento: http://packaging.ubuntu.com/html/ (http://packaging.ubuntu.com/html/), http://packaging.ubuntu.com/html/packaging-new-software.html (http://packaging.ubuntu.com/html/packaging-new-software.html), http://www.webupd8.org/2010/01/how-to-create-deb-package-ubuntu-debian.html (http://www.webupd8.org/2010/01/how-to-create-deb-package-ubuntu-debian.html)

Tentei usar o bzr builddeb -- -us -uc para fazer o pacote, e dava vários erros. Esse comando não explicita o que exatamente está errado. Daí parti para o dpkg-buildpackage -rfakeroot -us -uc, e nesse deixava mais claro o que estava acontecendo. Após 2 ou 3 dias tentando, fui entendendo o que tinha de errado no código fonte original, do upstream. Descobri que esse comando é mais exigente que o make, pois com o make eu consigo compilar o vbam-sdl e vbam-gtk, enquanto que com o dpkg-buildpackage só consigo compilar e empacotar o vbam-gtk (e isso se eu alterar o CMakeLists.txt, logo no começo dá para ativar ou desativar vários recursos do emulador). Acontece que o vbam-sdl pede headers (.h) que ainda não existe no código do vbam, mas para o make isso não é problema, já que esses headers não são ativados, depedendendo da configuração do CMakeLists.txt. Mas o dpkg-buildpackage desconsidera isso e verifica tudo, e aí dava erro no empacotamento. Ainda me deparei com outro erro, que foi resolvido apagando os conteúdos relacionados ao vbam-sdl e vbam-wx no debian/control. Mesmo escolhendo compilar somente o vbam-gtk no CMakeLists.txt, na hora de empacotar ele tentava fazer o pacote dos 3 (vbam-gtk, vbam-sdl e vbam-wx), e dava erro na hora de copiar os arquivos dos 2 que não foram compilados para os pacotes. São coisas separadas, e não achei uma solução melhor para vincular tudo. Se você reparar, no vbam do getdeb tem o vbam-sdl, enquanto que no meu ppa não.

Outro erro (meu) que me deparei foi usar o comando bzr dh-make. Esse comando serve para "debianizar" um programa novo (que não tem a pasta debian) e também versionar o código com o bazaar (bzr).

Descobri também que é possível importar código que usa GIT ou SVN para o launchpad, e exportar para Bazaar inclusive. Olha o código do vbam no launchpad: https://code.launchpad.net/~sergio-br2 (https://code.launchpad.net/~sergio-br2). Depois é só baixar com bzr branch lp:~sergio-br2/vbam/trunk (por exemplo), e começar a fazer as alterações.

Ainda estou aprendendo empacotamento debian, estou achando muito difícil, muita coisa para aprender.

Acabei de instalar o ppa aqui no ubuntu 13.10, e apareceu a atualização do vbam aqui (ou seja, dá certo a dica acima de trocar saucy por trusty).
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 20 de MAR?O de 2014, 19:47
Vou tentar colocar um passo à passo aqui. O passo à passo dos links que postei tem coisa faltando ou não está tão explicito.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 21 de MAR?O de 2014, 06:55
O VBA-M tem fórum, é meio vázio e demoram para responder, mas está lá na ativa: http://vba-m.com/forum/index.php (http://vba-m.com/forum/index.php)

Sou o usuário sergio_br2 lá.
Título: Re: Última versão do VBA-M
Enviado por: platao em 21 de MAR?O de 2014, 20:56
Semana que vem estou mais folgado e podemos dar uma olhada melhor nesse emulador. ; ) vamos ver como qeu funciona, quero testar tbm, super bacana a sua experiencia Sergio.

*ao clicar na pagina do desenvolvedor quando vamos instalar o pacote deb ele abre esse site http://www.vbam.com.br/
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 21 de MAR?O de 2014, 22:16
Semana que vem estou mais folgado e podemos dar uma olhada melhor nesse emulador. ; ) vamos ver como qeu funciona, quero testar tbm, super bacana a sua experiencia Sergio.

*ao clicar na pagina do desenvolvedor quando vamos instalar o pacote deb ele abre esse site http://www.vbam.com.br/

ueh, .com.br? Onde você achou esse link?
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 21 de MAR?O de 2014, 22:33
Ih caramba, o link da pasta debian/ está furado mesmo. Vou tentar atualizar, tinha outra coisa que tinha que arrumar mesmo. Só queria saber como você acessou isso, eu teria que ir lá na pasta do sistema para ter acesso.
Título: Re: Última versão do VBA-M
Enviado por: platao em 21 de MAR?O de 2014, 23:25
O link para a pagina do projeto oficial deve estar errada ou a minha maquina esta redirecioanndo para um site br, quando vc vai instalar o pacote no software center do ubuntu, ele mostra esse link na parte de "pagina do desenvolvedor" ao clicar vai para a pagina web;

http://img850.imageshack.us/img850/6092/9zen.png



Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 22 de MAR?O de 2014, 13:19
Estou tentando fazer o upload das mudanças, mas está sendo rejeitado pelo Launchpad. Cara, que negócio burocrático.

E eu ainda deletei o pacote anterior, o ppa está vazio...
Título: Re: Última versão do VBA-M
Enviado por: platao em 22 de MAR?O de 2014, 13:30
Eles sao rigidos com os pacotes para poder entrar para o repositorio, antigamente ja era cobrado varias coisas, hj e mais ainda, mas e para ter segurança. Os pacotes deb que eu faço nunca seriam aceitos, depois do 12.04 tiveram algumas mudanças nesse sentido. Pacotes que eu instalava tranquilamente no 12.04 no 12.10 e 13.04 ja era tidos como de má qualidade.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 22 de MAR?O de 2014, 13:37
Tive que subir um número da versão, para poder ser aceito. Agora o pacote está como vbam_1.8.0.1230. Vai ficar diferente da janela do about, acabei esquecendo de mudar. Se bem que não tem diferença entre o svn 1229 e o 1230, pelo menos no branch trunk.

Segue o link do meu branch do vbam, no launchpad: https://code.launchpad.net/~sergio-br2/vbam/fixes (https://code.launchpad.net/~sergio-br2/vbam/fixes)

A diferença em relação ao branch trunk do vba-m do sourceforge é só um patch para corrigir o ano de copyright e mudanças no /debian (atualizações).
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 22 de MAR?O de 2014, 21:22
Ei Platao, notei que essa versão está com problema nos menus. Vá em Emulation --> Load State ou Save State, não é possível ver o estado salvo (data e hora), é como se você não tivesse salvo nada. Mas ainda assim eu posso escolher, por exemplo o 1º, e continuar o jogo.

Ele também já deu crash 2 vezes aqui, a última fez com que eu perdesse as configurações do emulador. Mas o engraçado é que deu crash na hora de abrir de novo, após eu ter colocado um controle aqui:

gvbam crashed with SIGSEGV in malloc_consolidate()
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 23 de MAR?O de 2014, 08:55
Estou conseguindo reproduzir a perda das configurações do emulador:

- Abra o vbam, altere uma configuração (por exemplo: Options/Opções --> Display, altere a "Escala padrão" ou "Default scale" para 2x, o emulador aumenta de tamanho e fica perceptível se perder a configuração)
- Abra uma ROM qualquer, e em seguida feche o emulador
- Abra novamente o vbam, vai notar que você perdeu as configurações

Estou fazendo um backup das configurações, para não ter que ficar alterando toda hora. É o arquivo ~/.config/gvbam/config

Alguém mais com esse problema? Platao?
Título: Re: Última versão do VBA-M
Enviado por: platao em 23 de MAR?O de 2014, 09:46
Sergio amanha eu vou dar uma olhada nesse emu para ver como que funciona, mas esse erro parece aquele erro que o snes9x e o kega fusion e de varios outros programas tem com o menu global, que, vamos se dizer assim, é imcopativel com a aplicação, principalmente se a aplicação e antiga, e a culpa nao é do aplicativo, é do menu global do ubuntu. A "solução" esta no meu topico sobre o kega fusion http://ubuntuforum-br.org/index.php/topic,87385.0.html

Solução definitiva para o problema do Kega com os menus no 12.04 Precise;

No caso do Fusion e de qualquer aplicativo problematico e so executar;

env UBUNTU_MENUPROXY= local do executavel

No meu ficou;

env UBUNTU_MENUPROXY= /home/ubuntu/Fusion/Fusion

E pronto, somente o Kega vai ter os menus na janela ao invez de usar o menu global.

Isso e um tiro no escuro, nao sei ainda o que esta acontecendo, se e esse o seu problema, nao sei tbm se vc esta usando o ubuntu,(esta com o 14.04?)  a primeira coisa e isolar o problema, mata o compiz e troca o gerenciador de janelas por outro como o openbox, que tem os menus por padrao na janela, se o emulador estiver tudo certinho vc reproduziu o erro e ele estiver ok e funcionar, entao vc ja encontrou o problema.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 23 de MAR?O de 2014, 10:53
Humm, blz, vou tentar, valeu!

No meu notebook estou usando o ubuntu 13.10, mas em outro desktop o xubuntu 14.04. Vou testar em uma máquina virtual para tentar isolar o problema.

Esse comando com env só afeta o usuário logado né? Teria que procurar uma solução mais abrangente, de preferência na hora da instalação.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 23 de MAR?O de 2014, 10:56
Estou jogando Kingdom Hearts: Chain of Memories, recomendo! :D
Título: Re: Última versão do VBA-M
Enviado por: platao em 23 de MAR?O de 2014, 11:04
Outra coisa a se levar em consideração, e que nesse aplicativo as vezes(eu nao olhei ainda) é usado o gtk2.0 e houve uma migração do 2.0 pra o gtk3.0 e ha incompatibilidades entre as versoes, vc lembra do ia 32libs? entao, ate ele se tornar o multiarquitetura houve um periodo de transição meio confuso. Se a aplicação e antiga ela usa o 2.0 ainda e o 14.04 usa o gtk3.0 se nao me engano, mas tudo isso e preliminar.

O negocio e tentar entender, se vc tem um game boy para poder ver ele funcionando como ele lida com os games, se tem slowdon em algum game, a estrutura do sistema como e montada, coisas que so o hardware original pode oferecer, para conhecer o emulador vc tem que dar uma olhada no que o desenvolvedor focou o desenvolvimento, se e para ele ser compativel e ter fidelidade na emulação ou se e para ter rapidez na emulação com varios workarrouns, e compilar ele para a sua maquina e ver o que acontece, talvez no 12.04 e posteriormente no 14.04 apra ver se ha alguma diferença.

Título: Re: Última versão do VBA-M
Enviado por: platao em 23 de MAR?O de 2014, 11:09
O comando que passei so afeta aquela aplicação, na verdade nao afeta nada, e so um comando que vai dizer para o sistema rodar aquele aplicativo com aquele determinado argumento, mais nada, mas tem que ver certinho se e isso mesmo. Se vc quiser compilar ele no 12.04 que usa algumas coisas mais antigas tbm e bom pra testar.

Me passa depois alguma coisa documentação para podermos ver, links inportantes, para nao perder tempo refazendo o que ja foi feito. Se o problema for simples podemos ate resolver mas se for mais complexo entao, mesmo que vc for um entusiasta...vc pode chegar ate certo ponto..depois, so tendo um conhecimento mais aprofundado, entao e recomendado entrar em contato com os desenvolvedores e tentar entender.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 23 de MAR?O de 2014, 13:21
Esse comando não deu certo no 13.10. Os menus continuam no painel.

Código: [Selecionar]
sergio@sergio-X750JB:~/.config/gvbam$ env UBUNTU_MENUPROXY=/usr/bin/gvbam
XDG_VTNR=7
LC_PAPER=fr_FR.UTF-8
SSH_AGENT_PID=2263
LC_ADDRESS=fr_FR.UTF-8
UNITY_LOW_GFX_MODE=1
XDG_SESSION_ID=c2
LC_MONETARY=fr_FR.UTF-8
CLUTTER_IM_MODULE=xim
SESSION=ubuntu
GPG_AGENT_INFO=/run/user/1000/keyring-Qk9dFM/gpg:0:1
TERM=xterm
VTE_VERSION=3406
XDG_MENU_PREFIX=gnome-
SHELL=/bin/bash
WINDOWID=79699972
LC_NUMERIC=fr_FR.UTF-8
UPSTART_SESSION=unix:abstract=/com/ubuntu/upstart-session/1000/2189
GNOME_KEYRING_CONTROL=/run/user/1000/keyring-Qk9dFM
GTK_MODULES=overlay-scrollbar:unity-gtk-module
USER=sergio
LC_TELEPHONE=fr_FR.UTF-8
DEBEMAIL=sergio_br2@yahoo.com.br
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
SSH_AUTH_SOCK=/run/user/1000/keyring-Qk9dFM/ssh
DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
SESSION_MANAGER=local/sergio-X750JB:@/tmp/.ICE-unix/2349,unix/sergio-X750JB:/tmp/.ICE-unix/2349
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg
DESKTOP_SESSION=ubuntu
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
LC_IDENTIFICATION=fr_FR.UTF-8
PWD=/home/sergio/.config/gvbam
JOB=dbus
XMODIFIERS=@im=ibus
GNOME_KEYRING_PID=2184
LANG=en_US.UTF-8
GDM_LANG=en_US
MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path
LC_MEASUREMENT=fr_FR.UTF-8
UBUNTU_MENUPROXY=/usr/bin/gvbam
COMPIZ_CONFIG_PROFILE=ubuntu
IM_CONFIG_PHASE=1
GDMSESSION=ubuntu
SESSIONTYPE=gnome-session
SHLVL=1
HOME=/home/sergio
XDG_SEAT=seat0
LANGUAGE=en_US:en
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
UPSTART_INSTANCE=
UPSTART_EVENTS=started xsession
LOGNAME=sergio
COMPIZ_BIN_PATH=/usr/bin/
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-iWAE9PBL81
XDG_DATA_DIRS=/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/
QT4_IM_MODULE=xim
DEBFULLNAME=Sérgio Benjamim
INSTANCE=
TEXTDOMAIN=im-config
UPSTART_JOB=gnome-session
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=:0.0
XDG_CURRENT_DESKTOP=Unity
GTK_IM_MODULE=ibus
LC_TIME=fr_FR.UTF-8
TEXTDOMAINDIR=/usr/share/locale/
LC_NAME=fr_FR.UTF-8
XAUTHORITY=/home/sergio/.Xauthority
COLORTERM=gnome-terminal
_=/usr/bin/env
OLDPWD=/home/sergio/Projects/lp/fixes

Era para aparecer isso tudo no terminal?
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 23 de MAR?O de 2014, 23:16
Testei no Xubuntu 14.04, os menus estão OK. Inclusive, o Open --> Recent está funcionando de acordo. Esqueci de falar antes, mas no 13.10 aparece uma lista que não tem relação com as últimas ROM's.

O problema está mesmo nesse menu bizarro do Unity. No 14.04 (unity), a aparência dos menus do Load e Save State está igual ao do 13.10. Mas com um agravante:

- Abra um jogo, salve o jogo no primeiro slot (menu Emulation --> Save state --> 1)
- Salve em outro ponto do jogo, no segundo slot (ou outro)
- Tente carregar o 1º state (menu Emulation --> Load state --> 1), você vai notar que o emulador não irá carregar
- Movimente a janela ou alterne para outra janela (Alt + Tab), e volte, você vai notar que o emulador carregou o state que você tentou carregar anteriormente

Bizarro.

Eu tentei desativar o global menu pelo Unity (novo recurso dele), e o menu foi parar na janela. Pensei que ia ficar como antigamente, mas o menu fica junto da barra da janela (do lado dos botões de minimizar e fechar). E o erro continua.

Ao menos não está dando crash ao fechar, e a configuração está mantendo.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 23 de MAR?O de 2014, 23:25
Outra coisa a se levar em consideração, e que nesse aplicativo as vezes(eu nao olhei ainda) é usado o gtk2.0 e houve uma migração do 2.0 pra o gtk3.0 e ha incompatibilidades entre as versoes, vc lembra do ia 32libs? entao, ate ele se tornar o multiarquitetura houve um periodo de transição meio confuso. Se a aplicação e antiga ela usa o 2.0 ainda e o 14.04 usa o gtk3.0 se nao me engano, mas tudo isso e preliminar.

Ele continua usando o gtk2.

O negocio e tentar entender, se vc tem um game boy para poder ver ele funcionando como ele lida com os games, se tem slowdon em algum game, a estrutura do sistema como e montada, coisas que so o hardware original pode oferecer, para conhecer o emulador vc tem que dar uma olhada no que o desenvolvedor focou o desenvolvimento, se e para ele ser compativel e ter fidelidade na emulação ou se e para ter rapidez na emulação com varios workarrouns, e compilar ele para a sua maquina e ver o que acontece, talvez no 12.04 e posteriormente no 14.04 apra ver se ha alguma diferença.

Eu tinha um game boy advance SP, mas quebrou. Vou tentar comprar outro (os europeus rodam os jogos americanos?). Seria bacana para comparar.

Em relação à emulação do GBA, pelo que percebo, é bem fiel. Nunca peguei um jogo que desse problema na emulação (comparando com outros mais problemáticos, como o Dolphin ou o Yabause).

Os problemas que encontrei residem no front-end, no unity.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 24 de MAR?O de 2014, 00:09
Você falou da documentação, acho que o que podemos encontrar está nos links que postei lá no começo. Tem alguma coisa no fórum do VBA-M (http://vba-m.com/forum/). Estou usando o canal do IRC também, #vba-m. No sourceforge é possível ver os bugs (https://sourceforge.net/p/vbam/bugs/) abertos e patches (https://sourceforge.net/p/vbam/patches/), bem como pedidos de recursos (https://sourceforge.net/p/vbam/feature-requests/).

Tem alguma coisa na pasta doc/

As modificações feitas por mim estão registradas no meu branch do launchpad (https://code.launchpad.net/~sergio-br2/vbam/fixes). Para baixar o código (precisa instalar o bzr):

Código: [Selecionar]
bzr branch lp:~sergio-br2/vbam/fixes
A comunidade do Arch Linux andou mexendo um pouco também, veja:

https://www.archlinux.org/packages/community/x86_64/vbam-gtk/ (https://www.archlinux.org/packages/community/x86_64/vbam-gtk/)
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 24 de MAR?O de 2014, 08:37
Consegui fazer funcionar bem no ubuntu 14.04 (unity):

Código: [Selecionar]
sudo -H gedit /usr/share/applications/gvbam.desktop
Troquei o:

Código: [Selecionar]
Exec= gvbam %f
Por:

Código: [Selecionar]
Exec=env UBUNTU_MENUPROXY= gvbam %f
Ou ainda:

Código: [Selecionar]
Exec=env UBUNTU_MENUPROXY=0 gvbam %f
Repare que tem um espaço entre o = e gvbam. Esqueci de colocar esse espaço anteriomente, por isso não funcionou.

Tinha que passar esse problema para o upstream (unity), mas não sei por onde começar (tinha que reportar usando um programa gtk2 oficial dos repo, com mesmo problema).

---

E não está perdendo as configurações também. Como é que um problema no menu pode afetar as configurações do emulador?

---

Será que dá problema usar esse argumento em outros desktops? Testei no Xfce, não deu problema.

Se não der problema, daria para modificar o src/gtk/gvbam.desktop.
Título: Re: Última versão do VBA-M
Enviado por: platao em 24 de MAR?O de 2014, 12:32
Testei no Xubuntu 14.04, os menus estão OK. Inclusive, o Open --> Recent está funcionando de acordo. Esqueci de falar antes, mas no 13.10 aparece uma lista que não tem relação com as últimas ROM's.

O problema está mesmo nesse menu bizarro do Unity. No 14.04 (unity), a aparência dos menus do Load e Save State está igual ao do 13.10. Mas com um agravante:

- Abra um jogo, salve o jogo no primeiro slot (menu Emulation --> Save state --> 1)
- Salve em outro ponto do jogo, no segundo slot (ou outro)
- Tente carregar o 1º state (menu Emulation --> Load state --> 1), você vai notar que o emulador não irá carregar
- Movimente a janela ou alterne para outra janela (Alt + Tab), e volte, você vai notar que o emulador carregou o state que você tentou carregar anteriormente

Bizarro.

Eu tentei desativar o global menu pelo Unity (novo recurso dele), e o menu foi parar na janela. Pensei que ia ficar como antigamente, mas o menu fica junto da barra da janela (do lado dos botões de minimizar e fechar). E o erro continua.

Ao menos não está dando crash ao fechar, e a configuração está mantendo.

Entao, e provavel que o erro esteja no Ubuntu mesmo, no menu global, que nao esta conseguindo lidar com os menus, mais ou menos o que eu sugeri anteriormente como sendo o problema. As aplicaçoes gtk 2.0 antigas as vezes dao problema com o menu global, isso e fato, ja vi varias vezes esse erro no snes9x, no kega e outros emuladores antigos e aplicativos como Firefox e Crome tbm.

Vc como ja deve ter pecebido esta atuando como um desenvolvedor da aplicação, e para isso vc percebeu que e sempre bom ter alguns sistemas prontos(Ubuntu12.04,Ubuntu14.04,Xubuntu), instalados, seja em maquina virtual, seja uma instalação no HD em outra partição para testar como o aplicativo se comporta em interfaces diferentes, com e sem compiz, com e sem menu global, isso e importante tbm.

A melhor coisa quando vc tem esses problemas e testar em outra interface que nao use o compiz e que nao use o menu global por padrao(nao sei se o xubuntu usa) para ver se o erro e na aplicação ou no sistema.

Para os companheiros que nao sabem do que esta sendo falado aqui, o menu global e o menu integrado na barra como esse exemplo;

http://1.bp.blogspot.com/-x0NJk6DYGbU/T5kwmr-NWdI/AAAAAAAAIwA/2It-jL3BrJE/s1600/libreoffice-global-menu.png

Em vez de o menu tradicional que vc encontra por exemplo no Mint ou no antigo Ubuntu 10.04.

http://1.bp.blogspot.com/_lh7jyvHkwS4/Sw6kQhEiUSI/AAAAAAAAAmA/jATbTnnTSng/s1600/wasp+theme+ubuntu+10.04.png

Os amigos reparem que o menu fica na janela da aplciaçao em um espaço reservado.

Faz todo sentido Sergio dar esses problemas que vc esta relatando, porque toda vez que vc faz alguma alteração nas preferencias do programa ele tenta salvar imediatamente ou posteriormente quando vc fecha a aplicação no arquivo de controle do programa, geralmente oculto na home.

Como o programa fica confuso com os menus, o maximo que ele vai salvar e o que ja estava sendo reproduzido anteriormente, chegando as vezes ate a travar, crashar mesmo. Por isso que e bom vc testar o pacote em varios Ubuntu's diferentes e com outras interfaces, se por exemplo vc nao conseguir acertar o problema, vc pode tentar acertar para uma versao especifica do Ubuntu, muitos programas acontecem isso, por exemplo, pegue um programa de terceiros do Ubuntu e isntalale no Xubuntu, tem sempre uma chance de ter alguma funcionalidade comprometida, o que e o caso que estamos vendo aqui, entao nesse caso se nao conseguir acertar, vc tera que optar por fazer o pacote para aquela versao especifica do Ubuntu.

Vc pode tentar de duas maneiras,

- Usar uma forma de burlar os menus, fazendo a aplicação nao usar o menu global, usar o menu da janela com o env UBUNTU_MENUPROXY=.

- Ou reportar no launchpad um bug e esperar a correção

- Ou as duas coisas ; ), fazer o pacote com o atalho env UBUNTU_MENUPROXY= e reportar o bug, nao acho que vai dar problema porque o env UBUNTU_MENUPROXY= e um recurso do proprio sistema, nao vai alterar em nada, e ele so vale apra aquela aplicação, no caso o VBA-M as outras aplciaçoes permanecem padrao, usando o menu global.

Consegui fazer funcionar bem no ubuntu 14.04 (unity):

Código: [Selecionar]
sudo -H gedit /usr/share/applications/gvbam.desktop
Troquei o:

Código: [Selecionar]
Exec= gvbam %f
Por:

Código: [Selecionar]
Exec=env UBUNTU_MENUPROXY= gvbam %f
Ou ainda:

Código: [Selecionar]
Exec=env UBUNTU_MENUPROXY=0 gvbam %f
Repare que tem um espaço entre o = e gvbam. Esqueci de colocar esse espaço anteriomente, por isso não funcionou.

Tinha que passar esse problema para o upstream (unity), mas não sei por onde começar (tinha que reportar usando um programa gtk2 oficial dos repo, com mesmo problema).

---

E não está perdendo as configurações também. Como é que um problema no menu pode afetar as configurações do emulador?

---

Será que dá problema usar esse argumento em outros desktops? Testei no Xfce, não deu problema.

Se não der problema, daria para modificar o src/gtk/gvbam.desktop.

E isso mesmo vc vai empacotar ele com o atalho ja no menu de inicialização do aplicativo, ou seja, no gvbam.desktop vc vai fazer a alteração, so testa bastante antes de empacotar e enviar para o launchpad para depois nao ter que ficar tendo trabalho extra para arrumar.

Um programa que tem esse defeito dos menus sao varios, snes9x ate pouco tempo atras tinha esse problema e foi acertado, entao se vc puder entra em contato com o desenvolvedor que ele pode te passar mais detalhes.

Tem ate na documentação oficial esse workarround e varios problemas relatados com o menu global;

https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationMenu  (da uma olhada no final da pagina)

Se vc quiser relatar o bug da uma olhada aqui tbm;

https://bugs.launchpad.net/indicator-appmenu

https://launchpad.net/~jorge

No final da pagina tem onde vc pode ancontrar ajuda e relatar o bug.

Converse com o mantenedor do VBA-M e veja se ele esta disposto a acertar o erro, muitas vezes eles esperam que outro programador possa ajudar a resolver os problemas que ele esta tendo e nao consegue, quando entra uma pessoa com pouco menos de conhecimento(noob) e compicado ele ter que explicar tudo(muita coisa vc nao vai entender) para chegar no ponto em que ele esta parado, entao na verdade, eles gostam de pessoas que vao ajudar nas soluçoes e nao ficar fazendo perguntas ehehehe ; ) Entao pode ser isso o mau humor dele ; ) embora eles tbm gostem de pessoas interessadas no que esta sendo desenvolvido, essa e minha opiniao, apenas.

estou terminando de ler tudo e que vc escreveu.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 24 de MAR?O de 2014, 12:52
Engraçado, não estou conseguindo reproduzir o problema de perda de configuração no 14.04, mesmo sem o workaround do env. Será que só dá esse problema no 13.10 ? Testarei isso quando chegar em casa.
Título: Re: Última versão do VBA-M
Enviado por: platao em 24 de MAR?O de 2014, 13:11
Como vc sabe o 14.04 e diferente do 13.04 e 13.10 que usam so o menu global, agora os menus no 14.04 aparecem tanto na janela quanto no menu global.

http://www.webupd8.org/2014/02/ubuntu-1404-gets-locally-integrated.html

Porem, isso nao significa que mesmo o menu estando na janela sera como no Ubuntu 10.04.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 24 de MAR?O de 2014, 13:37
Consegui reproduzir, mas está mais difícil. Ontem estava acontecendo à todo momento.

Esse problema é do emulador mesmo. Abra no gedit o arquivo .config/gvbam/config, abra o emulador e feche, o Gedit vai acusar que o arquivo foi modificado, mesmo que esteja 100% igual. O emulador deve alterar o arquivo ao abrir ou ao fechar, mesmo que você não altere as opções.
Título: Re: Última versão do VBA-M
Enviado por: platao em 24 de MAR?O de 2014, 13:54
Sera que isso e um bug? Nao estou certo disso, varias aplicacoes tem esse comportamento, so se ele estiver com erros depois que vc salva alguma coisa, ao rodar novamente o emu, dar erro ai pode ser problema mesmo.....
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 24 de MAR?O de 2014, 14:33
Sera que isso e um bug? Nao estou certo disso, varias aplicacoes tem esse comportamento, so se ele estiver com erros depois que vc salva alguma coisa, ao rodar novamente o emu, dar erro ai pode ser problema mesmo.....

Então, não é exatamente um bug esse comportamento, mas acho que seria mais esperado ele alterar o config somente quando você alterasse algo. Pude confirmar aqui, ele salva ao fechar mesmo.

Mas tem algo a mais aí, que pode estar relacionado ao ubuntu. Por algum motivo ele não está fechando corretamente, e altera o config, como vc falou.

O apport acusou de novo um bug, o mesmo SIGSEV in malloc_consolidate().
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 24 de MAR?O de 2014, 15:24
Encontrei outra coisa curiosa, no menu File --> Open recent: se você abrir mais de 10 ROM's, você terá acesso somente às 10 primeiras por esse menu. As outras não irão aparecer. Essa lista não devia girar, conforme você vai abrindo jogos diferentes?

Não parece ser problema do Unity, testei com e sem o workaround do env.

---

Eu consigo reproduzir a perda de configuração aqui no 13.10. Mas ao colocar o workaround do env, ele pára com isso.

---

Eu ia ver o Snes9x, mas por algum motivo ele está travando.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 24 de MAR?O de 2014, 16:03
Usei o workaround do env no snes9x, e ele voltou a funcionar!  :o

Lembro que no snes9x tinha um problema com o File --> Open recent, sempre abria a primeira ROM, independente se você tentasse abrir outro da lista. Já me deparei com esse problema no Inkscape também.

Esse global menu, não sei como, está alterando o comportamento dos programas, e não é só de 1 maneira. No vbam você perde as configurações, no snes9x ele trava ao tentar carregar uma ROM ou alterar uma opção.

Vou testar mais um pouco.
Título: Re: Última versão do VBA-M
Enviado por: platao em 24 de MAR?O de 2014, 21:06
Entao Sergio, esse problema dos menus ja e conhecido ha algum tempo.

A canonical as vezes fazem algumas mudanças que prejudicam os programas em nome da estetica, vamos dizer assim, primeiro "congelaram" o menu superior, a barra de cima do Ubuntu no 11.04, onde o pessoal colocava os applets e a maioria deixou de funcionar, depois vem Unity com menu global, os menus eram agora, somente na parte superior da janela, agora no 14.04 o pessoal vem com essa, que agora os menus vao ser na barra e na janela tbm, agora veja, eu nao sou programador, mas os programas que nao tem uma comunidade ativa em torno dele fica a ver navios, porque vai parar de funcionar adequadamente se nao houver nenhuma intervenção e uma adequação para funcionar no Unity.

Agora vc tem que ver, se esta usando o Xubuntu que nao usa menu global e sem compiz e o aplicativo nao apresentar erro, na minha opiniao apenas, o negocio do File --> Open recent: se você abrir mais de 10 ROM's e o comportamento do programa, nao e um bug, na minha opiniao.

Assim como nao acho que e bug a forma do aplicativo salvar as configuraçoes na pasta oculta do programa.

O problema e que o menu confuso ou com erro gera problemas na execução do programa, e pode levar ate um crash, falha de segmentação, esses erros bizarros que vc viu.

Eu preciso compilar aqui para ver com que funciona.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 24 de MAR?O de 2014, 21:51
Estou conseguindo reproduzir a perda de configuração no Linux Mint 16 Mate, mas é difícil repetir, diria algo em torno de 1 para 5 tentativas ou mais. Então tem um problema no emulador também.

Pelo que andei testando o Unity potencializa esse problema no 13.10.

Você falou dessa questão da Canonical mudar as coisas... tem que reportar esse tipo de problema. Porque não tem como você ficar aplicando workaround só por causa do Unity, é inviável. Eu ia aplicar um patch, mas deixa quieto.

Em relação às 10 ROM's estáticas no File --> open recent, eu vou perguntar para a equipe do vba-m se era para ser assim mesmo. E também a questão de salvar as configurações no fechamento.
Título: Re: Última versão do VBA-M
Enviado por: platao em 24 de MAR?O de 2014, 22:03
Jorge Castro http://launchpad.net/~jorge

Tenta falar com ele sobre o problema e como reportar o bug no local correto.

*edit

Talvez ele possa te dar uma visao geral desse problema nos menus, ja que e uma coisa recorrente em varios aplicativos.
Título: Re: Última versão do VBA-M
Enviado por: platao em 25 de MAR?O de 2014, 19:44
Hehehehe

http://img208.imageshack.us/img208/7724/j5tq.png

(https://ubuntuforum-pt.org/proxy.php?request=http%3A%2F%2Fimg208.imageshack.us%2Fimg208%2F7724%2Fj5tq.th.png&hash=99ea3ea544e3d6b0602cbe894a44b4f12c2ae516) (http://img208.imageshack.us/i/j5tq.png/)

Ate agora nao vi nada errado(ainda) ; )

TEstando....

http://img59.imageshack.us/img59/6387/e95j.png

(https://ubuntuforum-pt.org/proxy.php?request=http%3A%2F%2Fimg59.imageshack.us%2Fimg59%2F6387%2Fe95j.th.png&hash=43ca1c16ea6fc739a7fd8b211899d0251cd0b77a) (http://img59.imageshack.us/i/e95j.png/)


Aqui segui o procedimento;

Instalei as dependencias;

sudo apt-get install build-essential subversion cmake zlib1g-dev libpng12-dev libopenal-dev libsdl1.2-dev libgtkmm-2.4-dev libgtkglextmm-
x11-1.2-dev libavformat-dev libswscale-dev libwxgtk2.8-dev imagemagick wx-common libsfml-dev

e-dev já é a versão mais nova.
subversion já é a versão mais nova.
cmake já é a versão mais nova.
Os pacotes extra a seguir serão instalados:
  libatkmm-1.6-dev libcairomm-1.0-dev libglibmm-2.4-dev libpangomm-1.4-dev
  libsigc++-2.0-dev libwxbase2.8-0 libwxbase2.8-dev libwxgtk2.8-0
  wx2.8-headers
Pacotes sugeridos:
  imagemagick-doc autotrace curl enscript ffmpeg gimp gnuplot grads hp2xx
  html2ps libwmf-bin mplayer povray radiance texlive-base-bin transfig
  ufraw-batch libatkmm-1.6-doc libcairomm-1.0-doc libglibmm-2.4-doc
  libgtkmm-3.0-dev libgtkmm-2.4-doc libsigc++-2.0-doc wx2.8-doc
  libgnomeprintui2.2-0
Os NOVOS pacotes a seguir serão instalados:
  libatkmm-1.6-dev libcairomm-1.0-dev libglibmm-2.4-dev libgtkmm-2.4-dev
  libpangomm-1.4-dev libsigc++-2.0-dev libwxbase2.8-0 libwxbase2.8-dev
  libwxgtk2.8-0 libwxgtk2.8-dev wx-common wx2.8-headers
Os pacotes a seguir serão atualizados:
  imagemagick
1 pacotes atualizados, 12 pacotes novos instalados, 0 a serem removidos e 628 não atualizados.
É preciso baixar 7.554 kB de arquivos.
Depois desta operação, 32,1 MB adicionados


depois;

svn co https://svn.code.sf.net/p/vbam/code/trunk      para a versao VBA-M 1.8.0-SVN1230

depois;

cmake .                                                              com ponto mesmo

e

make

compilou tudo certinho, depois copiei a pasta trunk para a minha isntalação padrao do 12.04(eu compilei em maquina virtual com 12.04 tbm) e foi so isntalar uma dependencia libgtkglext1 (1.2.0-2fakesync1) e libgtkglextmm-x11-1.2-0 (1.2.0-4.1) na minha maquina com 12.04.4 e esta funcionando.

Por enquanto nao perdeu as configuraçoes, nao crashou e nao deu nenhum erro rodando pelo terminal com o env UBUNTU_MENUPROXY= , parece que esta suave.....vamos ver.......

A questao do save pelo que eu entendi, ele nao mostra nenhum save ao vc ligar o emulador, so mostra o save quando vc carrega a rom, ai ele mostra o save e da a opção de load.

Nao aconteceu nada aqui por enquanto, nem segment_fault, nem erro ao rodar as roms recentes pelo menu das 10 recentes, nao crashou, nao eu nenhum aviso rodando pelo terminal, nao sei o que dizer, esta tudo funcionando bem. Eu vou manter assim no 12.04 e com o env ubuntu_menuproxy e sem compiz ativo(somente com o openbox) e testar um pouco...vamos ver no que da.....
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 11 de Abril de 2014, 10:32
Eu reportei o problema do gvbam no Unity (que tem que usar o workaround do env), dá uma olhada:

Unity global menu "delays" actions in a gtk2 app (http://bugs.launchpad.net/ubuntu/+source/unity/+bug/1306608)
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 11 de Abril de 2014, 10:52
Platao, no meu branch do vbam (http://code.launchpad.net/~sergio-br2/vbam/fixes), eu deletei quase tudo relacionado ao windows e configurações de IDE's. Faz mais sentido, já que vou tentar mandar para o repo do debian (ou universe...). Só instalar o bzr e rodar bzr branch lp:~sergio-br2/vbam/fixes

Não sei se vai afetar algo, provavelmente não. Tenho que compilar e testar.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 11 de Abril de 2014, 11:40
Uma coisa que notei agora, só consigo reproduzir a perda de configuração do emulador no ubuntu 64 bits. No 32 bits até dá segmentation fault as vezes, mas há perda de configuração.

Talvez o segmentation fault e as perdas de configuração sejam dois problemas isolados.

Outra coisa: com o workaround do env, ao fechar o emulador ele continua lá na memória, é possível ver no Monitor do Sistema. Chega uma hora que há vários. Só fecha se eu matar o processo.
Título: Re: Última versão do VBA-M
Enviado por: platao em 11 de Abril de 2014, 14:04
Entao o segment fault e um erro da aplicação mesmo, e nao do menu ou alguma coisa relacionada, o que e um erro grave do executavel que chega uma hora que ele para de funcionar, e isso explica tbm ele ficar na memoria, talvez como um programa zumbi aparecendo no monitor do sistema, isso pode estar alem do nosso alcance.

Seria interessante se pudermos disponibilizar uma versao debug dele entende? Se fizermos um PPA ou adicionarmos no seu PPA uma versao debug alguem que tem mais conhecimento de programação pode analizar e consertar o problema.

Notei que ele da essas falhas as vezes sim, mas e muito exporadico, as vezes ele da crash sem motivo aparente, coisa tipica de versao em desenvolvimento.

Vc conseguiu falar com os desenvolvedores? vou ver se essa semana dou mais uma olhada e quem sabe com uma versao debug pegamos onde esta dando o erro e vc passa para para o mantenedor.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 11 de Abril de 2014, 16:50
Platao, na verdade ele já tem o debug habilitado, dá uma olhada no CMakeList.txt.

Código: [Selecionar]
option( ENABLE_DEBUGGER "Enable the debugger" ON )
Ahh, consegui falar com os desenvolvedores sim, vez ou outra entro no #vba-m

Postei o resultado do debug aqui: sourceforge.net/p/vbam/bugs/147/ (http://sourceforge.net/p/vbam/bugs/147/)

---

Acabei de pegar aqui do irc, para compilar com suporte à debug é necessário usar o cmake com esses parâmetros:

Código: [Selecionar]
cmake -DCMAKE_BUILD_TYPE=Debug
make

Olha que legal a saída:

Código: [Selecionar]
gdb ./gvbam
GNU gdb (GDB) 7.6.1-ubuntu
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/sergio/Projects/lp/fixes-test/gvbam...done.
(gdb) run
Starting program: /home/sergio/Projects/lp/fixes-test/./gvbam
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe81b3700 (LWP 16071)]
[New Thread 0x7fffe79b2700 (LWP 16072)]
[New Thread 0x7fffe71b1700 (LWP 16073)]
[New Thread 0x7fffe69b0700 (LWP 16074)]
[Thread 0x7fffe69b0700 (LWP 16074) exited]
[New Thread 0x7fffe69b0700 (LWP 16075)]
[New Thread 0x7fffe5b32700 (LWP 16076)]
[New Thread 0x7fffe5114700 (LWP 16077)]
[New Thread 0x7fffe4913700 (LWP 16078)]
[New Thread 0x7fffd1040700 (LWP 16079)]
[Thread 0x7fffd1040700 (LWP 16079) exited]
[Thread 0x7fffe4913700 (LWP 16078) exited]
[Thread 0x7fffe69b0700 (LWP 16075) exited]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff48ebc2b in malloc_consolidate (av=av@entry=0x7ffff4c2d740 <main_arena>)
    at malloc.c:4094
4094 malloc.c: No such file or directory.
(gdb) bt full
#0  0x00007ffff48ebc2b in malloc_consolidate (av=av@entry=0x7ffff4c2d740 <main_arena>)
    at malloc.c:4094
        fb = <optimized out>
        maxfb = 0x7ffff4c2d790 <main_arena+80>
        p = 0x132380f
        nextp = 0x0
        unsorted_bin = 0x7ffff4c2d798 <main_arena+88>
        first_unsorted = <optimized out>
        nextchunk = 0x1326b0f
        size = 13056
        nextsize = 0
        prevsize = <optimized out>
        nextinuse = <optimized out>
        bck = 0x7fff000005ff00
        fwd = 0x20000000200
        __func__ = "malloc_consolidate"
#1  0x00007ffff48ed0e1 in _int_malloc (av=0x7ffff4c2d740 <main_arena>, bytes=2048)
    at malloc.c:3379
        nb = 2064
        idx = <optimized out>
        bin = <optimized out>
        victim = <optimized out>
        size = <optimized out>
        victim_index = <optimized out>
        remainder = <optimized out>
        remainder_size = <optimized out>
        block = <optimized out>
        bit = <optimized out>
        map = <optimized out>
        fwd = <optimized out>
        bck = <optimized out>
        errstr = 0x0
        __func__ = "_int_malloc"
#2  0x00007ffff48ef4d0 in __GI___libc_malloc (bytes=2048) at malloc.c:2859
        ar_ptr = 0x7ffff4c2d740 <main_arena>
        victim = 0x7fff000005ff00
        __func__ = "__libc_malloc"
#3  0x00007ffff58b9e6f in g_realloc () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#4  0x00007ffff58d3254 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#5  0x00007ffff58d32a2 in g_string_sized_new () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
---Type <return> to continue, or q <return> to quit---
No symbol table info available.
#6  0x00007ffff58aa5e3 in g_io_channel_write_chars ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#7  0x00007ffff6589ceb in Glib::IOChannel::write(char const*, long, unsigned long&) ()
   from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
No symbol table info available.
#8  0x00007ffff6589d3d in Glib::IOChannel::write(Glib::ustring const&) ()
   from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
No symbol table info available.
#9  0x00000000004583f7 in VBA::Config::File::vSave (this=0xa05748, _rsFile=...)
    at /home/sergio/Projects/lp/fixes-test/src/gtk/configfile.cpp:222
        sName = {static npos = <optimized out>,
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x9e2918 "[Directories]\n"}}
        poSection = {_M_node = 0xa31870}
        poFile = {pCppObject_ = 0xa39fa0}
#10 0x000000000048b401 in VBA::Window::vSaveConfig (this=0xa056a0, _rsFile=...)
    at /home/sergio/Projects/lp/fixes-test/src/gtk/window.cpp:747
No locals.
#11 0x00000000004871f4 in VBA::Window::~Window (this=0xa056a0, __in_chrg=<optimized out>,
    __vtt_parm=<optimized out>)
    at /home/sergio/Projects/lp/fixes-test/src/gtk/window.cpp:339
No locals.
#12 0x000000000048751a in VBA::Window::~Window (this=0xa056a0, __in_chrg=<optimized out>,
    __vtt_parm=<optimized out>)
    at /home/sergio/Projects/lp/fixes-test/src/gtk/window.cpp:347
No locals.
#13 0x000000000045ac27 in main (argc=1, argv=0x7fffffffe3a8)
    at /home/sergio/Projects/lp/fixes-test/src/gtk/main.cpp:123
        bShowVersion = false
        oKit = <incomplete type>
        oGroup = <incomplete type>
        sGtkBuilderFile = {static npos = <optimized out>,
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x9e23b8 "src/gtk/ui/vbam.ui"}}
        listRemaining = {<std::_Vector_base<Glib::ustring, std::allocator<Glib::ustring> >> = {
            _M_impl = {<std::allocator<Glib::ustring>> = {<__gnu_cxx::new_allocator<Glib::ustring>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0,
              _M_end_of_storage = 0x0}}, <No data fields>}
        poXml = {pCppObject_ = 0x9e2610}
---Type <return> to continue, or q <return> to quit---
        poWindow = 0xa056a0
        oContext = <incomplete type>
        oVersion = <incomplete type>
        oFileName = <incomplete type>

Fica mais bonito e humano lá no sourceforge.

Mas ainda falta simbolos, como os dos libglib-2.0.so.0 e libglibmm-2.4.so.1. Tem um pacote chamado libglibmm-2.4-dbg, o outro estou procurando.

---

Achei, libglib2.0-0-dbg, vamos ver se funciona.

---

Tem que instalar o libsdl1.2-dbg e o libpulse0-dbg também.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 11 de Abril de 2014, 18:57
Resumindo, para quem quiser debugar e auxiliar os desenvoldedores, só seguir os passos seguintes. Lembrando que o debug tem que estar ativo no arquivo CMakeLists.txt (geralmente vem ativo):

Código: [Selecionar]
option( ENABLE_DEBUGGER "Enable the debugger" ON )
Baixar o source do vba-m, lá do sourceforge: sourceforge.net/p/vbam/code/HEAD/tarball (http://sourceforge.net/p/vbam/code/HEAD/tarball) e descompactar em alguma pasta. Depois use o comando cd para chegar até a pasta descompactada, e:

Código: [Selecionar]
cd ~/caminho-para-seu-diretorio-do-vbam/vbam-code-1230-trunk/
cmake -DCMAKE_BUILD_TYPE=Debug
make

Após isso, instale os pacotes de debug:

Código: [Selecionar]
sudo apt-get install libglibmm-2.4-dbg libglib2.0-0-dbg libsdl1.2-dbg libpulse0-dbg
Agora você vai rodar o gdb:

Código: [Selecionar]
gdb ./gvbam
O terminal vai alterar um pouco, o cursor vai ficar piscando após um (gdb), agora abra o emulador com o comando run:

Código: [Selecionar]
run
Mexa no emulador, tente reproduzir o erro que está tendo. No meu caso, é a perda de configuração e Segmentation fault. Após o crash, rode o comando bt full:

Código: [Selecionar]
bt full
Copie e cole no report de bug as informações. Após isso, pode tentar rodar o emulador de novo com o comando run, ou saia com quit:

Código: [Selecionar]
quit
A ideia é essa se quiser depurar algum programa (agora preciso aprender o que são todas as informações que o debug fornece :D ).

O bgk (um dos desenvolvedores do vba-m) vai executar o gvbam sob o valgrind (http://valgrind.org/), parece que é uma ferramenta que pode detectar automaticamente muitos bugs de gerenciamento de memória e de encadeamento (threading bugs). Cara, a gente não sabe de nada mesmo...  :o

Sabe de nada inocente!  ;D
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 27 de Abril de 2014, 12:28
Agora o VBA-M tem versão para o ubuntu 12.04 e 13.10, e consegui empacotar o vbam-sdl (vba-m sem front-end, usado no terminal).

Cara, fantástico essa ideia de recipe, eu criei um para fazer os pacotes automaticamente: code.launchpad.net/~sergio-br2/+recipe/vbam-fixes (http://code.launchpad.net/~sergio-br2/+recipe/vbam-fixes)

Criei outro para pegar automaticamente as mudanças do upstream e aplicar no meu branch fixes, mas não deu certo: code.launchpad.net/~sergio-br2/+recipe/vbam-daily (http://code.launchpad.net/~sergio-br2/+recipe/vbam-daily). O problema foi eu excluir várias coisas do código fonte do vba-m, relacionado ao rWindows. A equipe do vba-m atualizou um arquivo do src/win32, e como essa pasta não tinha mais no meu branch, deu problema na hora de fazer o merge.
Título: Re: Última versão do VBA-M
Enviado por: platao em 20 de Maio de 2014, 16:29
Algum progresso no VBA? Vejo que tem algumas atualizaçoes no repositorio.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 21 de Maio de 2014, 06:01
Algum progresso no VBA? Vejo que tem algumas atualizaçoes no repositorio.

O repositório do sourceforge ou o meu do launchpad? As atualizações do launchpad tem coisa boba apenas, como mais tamanhos de ícones e correção de algumas coisas do debian/.

Conversando com os dev no irc, descobrimos que o segmentation fault que o vba-m está tendo se deve aos commits 1227 ao 1229. Se você voltar para o commit 1226, o vba-m pára de perder suas configurações ao fechar!
Título: Re: Última versão do VBA-M
Enviado por: platao em 21 de Maio de 2014, 09:10
Entao vai ter que fazer uma regressao? Ainda bem que encontraram o problema!
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 21 de Maio de 2014, 09:23
Entao vai ter que fazer uma regressao? Ainda bem que encontraram o problema!

Eu poderia fazer a regressão, mas não sei exatamente o porquê da atualização. Melhor eles tentarem consertar. Foi algo que eles mudaram no áudio do sdl, arquivos /trunk/src/common/SoundSDL.h e /trunk/src/common/SoundSDL.cpp.

Quer testar? Dá para ver o código antes do commit 1227, e ainda fazer o download:

http://sourceforge.net/p/vbam/code/1226/tree/ (http://sourceforge.net/p/vbam/code/1226/tree/)

Segue o diff entre o 1226 e o 1229.

http://sourceforge.net/p/vbam/code/1227/tree//trunk/src/common/SoundSDL.h?diff=1086 (http://sourceforge.net/p/vbam/code/1227/tree//trunk/src/common/SoundSDL.h?diff=1086)

http://sourceforge.net/p/vbam/code/1228/tree//trunk/src/common/SoundSDL.cpp?diff=1086 (http://sourceforge.net/p/vbam/code/1228/tree//trunk/src/common/SoundSDL.cpp?diff=1086)

http://sourceforge.net/p/vbam/code/1229/tree//trunk/src/sdl/SDL.cpp?diff=1148 (http://sourceforge.net/p/vbam/code/1229/tree//trunk/src/sdl/SDL.cpp?diff=1148)
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 27 de Maio de 2014, 14:20
Acabei revertendo as modificações nesses 3 arquivos, atualizei o ppa. Acho que vai demorar muito até sair atualização por parte do upstream.

Testei aqui, parou de perder as configurações e dar seg fault ao fechar, agora o negócio é testar.

Obs: uma coisa que está me irritando é essa numeração nova do PPA, não consigo configurar isso. O pacote está como vbam-gtk_1.8.0.1231-0ubuntu3~ubuntu14.04.1_amd64.deb por exemplo... tava como vbam-gtk_1.8.0.1231-ubuntu14.04.1_amd64.deb, mas daí fui tentar atualizar usando o recipe que configurei, e dá erro, imaginava que ele atualizava para "ubuntu14.04.2". Não entendi a lógica dessa numeração ainda...

Obs2: Essa mudança da numeração dos pacotes se deve aos codinomes do ubuntu estarem chegando no fim do alfabeto :D .

Obs3: Conversei com o pessoal do vba-m, pode ser que essa regressão dê problemas em certas ocasiões:

Citar
31<sergio-br2>30 squall, was it you that did the most thing of commit 1227-1229 ?
<sergio-br2> i wonder if there is a problem to revert that sound sdl stuff here, in linux
<Squall-L2> yes it will be a problem, because the former code introduced deadlocks, in particular situations.
<Squall-L2> fixing the code would be more appropriate
<Squall-L2> assuming its actually broken

Basicamente, o código foi alterado para se evitar deadlock (http://pt.wikipedia.org/wiki/Deadlock) na execução do vba-m.
Título: Re: Última versão do VBA-M
Enviado por: platao em 31 de Maio de 2014, 12:11
Estou testando o seu PPA desde quarta e nao crashou ainda nenhuma vez, vamos ver.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 03 de Julho de 2014, 03:15
Quem usa o VBA-M pelo RetroArch, provavelmente se deparou com o problema de incompatibilidade entre o .sav (usado pelo VBA-M) e o .srm (usado pelo RetroArch). Eu peguei o meu save de um jogo aqui do meu PC e tentei usar no RetroArch do Android, e não deu certo. Estou falando do save nativo do jogo (bateria, memória eeprom, flash...), não dos Saves States.

Como eu não queria começar tudo de novo, procurei um pouco e achei uma solução. É possível converter um save para outro, com o gbaconv:

https://github.com/libretro/vbam-libretro/blob/master/src/libretro/gbaconv/gbaconv.c (https://github.com/libretro/vbam-libretro/blob/master/src/libretro/gbaconv/gbaconv.c)

É preciso compilar, é fácil, baixe ou copie e cole no gedit/mousepad/nano/leafpad e salve como gbaconv.c, vá até a pasta onde você salvou com o comando cd e use o gcc, assim:

Código: [Selecionar]
cd /home/seu-usuario/pasta-onde-foi-salvo
gcc -std=c99 -o gbaconv gbaconv.c

Vai dar alguns warnings, mas não tem problema. Agora é só usar o programa pelo terminal:

Código: [Selecionar]
./gbaconv seu-save.sav
No meu caso, como o jogo é o Kingdom Hearts (coloque o seu arquivo .sav na mesma pasta do gbaconv):

Código: [Selecionar]
./gbaconv Kingdom\ Hearts\ -\ Chain\ of\ Memories\ \(E\).sav
Ou ainda, arraste e solte seu arquivo .sav sobre o executável gbaconv.

Após isso, você vai ver um arquivo em .srm na mesma pasta!


É possível converter um .srm para .sav também, usando o mesmo programa.


Bem útil esse gbaconv, agora dá para continuar a jogatina no celular, ou eventualmente no próprio ubuntu, usando o retroarch.


http://emulation.gametechwiki.com/index.php/Game_Boy_Advance_emulators (http://emulation.gametechwiki.com/index.php/Game_Boy_Advance_emulators)


Obs: se não conseguir copiar lá do link:

Código: [Selecionar]
#include <stdio.h>
#include <stdint.h>
#ifndef __CELLOS_LV2__
#include <getopt.h>
#endif
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <stdbool.h>

enum save_type
{
   EEPROM_512B,
   EEPROM_8K,
   FLASH_64K,
   FLASH_128K,
   SAVE_UNKNOWN
};

static const char *save_type_to_string(enum save_type type)
{
   switch (type)
   {
      case EEPROM_512B:
         return "EEPROM 4kbit";
      case EEPROM_8K:
         return "EEPROM 64kbit";
      case FLASH_64K:
         return "FLASH 512kbit";
      case FLASH_128K:
         return "FLASH 1MBit";

      default:
         return "Unknown type";
   }
}

static bool scan_section(const uint8_t *data, unsigned size)
{
   for (unsigned i = 0; i < size; i++)
   {
      if (data[i] != 0xff)
         return true;
   }

   return false;
}

static enum save_type detect_save_type(const uint8_t *data, unsigned size)
{
   if (size == 512)
      return EEPROM_512B;
   if (size == 0x2000)
      return EEPROM_8K;
   if (size == 0x10000)
      return FLASH_64K;
   if (size == 0x20000)
      return FLASH_128K;

   if (size == (0x20000 + 0x2000))
   {
      if (scan_section(data, 0x10000) && !scan_section(data + 0x10000, 0x10000))
         return FLASH_64K;
      if (scan_section(data, 0x20000))
         return FLASH_128K;

      if (scan_section(data + 0x20000, 512) && !scan_section(data + 0x20000 + 512, 0x20000 - 512))
         return EEPROM_512B;
      if (scan_section(data + 0x20000, 0x2000))
         return EEPROM_8K;
   }

   return SAVE_UNKNOWN;
}

static void dump_srm(FILE *file, const uint8_t *data, enum save_type type)
{
   void *buf = malloc(0x20000 + 0x2000);
   memset(buf, 0xff, 0x20000 + 0x2000);

   switch (type)
   {
      case EEPROM_512B:
         fwrite(buf, 1, 0x20000, file);
         fwrite(data, 1, 512, file);
         fwrite(buf, 1, 0x2000 - 512, file);
         break;

      case EEPROM_8K:
         fwrite(buf, 1, 0x20000, file);
         fwrite(data, 1, 0x2000, file);
         break;

      case FLASH_64K:
         fwrite(data, 1, 0x10000, file);
         fwrite(buf, 1, 0x20000 + 0x2000 - 0x10000, file);
         break;

      case FLASH_128K:
         fwrite(data, 1, 0x20000, file);
         fwrite(buf, 1, 0x2000, file);
         break;

      default:
         break;
   }

   free(buf);
}

static void dump_sav(FILE *file, const uint8_t *data, enum save_type type)
{
   switch (type)
   {
      case EEPROM_512B:
         fwrite(data + 0x20000, 1, 512, file);
         break;

      case EEPROM_8K:
         fwrite(data + 0x20000, 1, 0x2000, file);
         break;

      case FLASH_64K:
         fwrite(data, 1, 0x10000, file);
         break;

      case FLASH_128K:
         fwrite(data, 1, 0x20000, file);
         break;

      default:
         break;
   }
}

// One shot cowboy code :)

int main(int argc, char *argv[])
{
   if (argc != 2)
   {
      fprintf(stderr, "Usage: %s <file>\n", argv[0]);
      return 1;
   }

   FILE *file = fopen(argv[1], "rb");
   if (!file)
   {
      fprintf(stderr, "Failed to open file \"%s\"\n", argv[1]);
      goto error;
   }

   fseek(file, 0, SEEK_END);
   long len = ftell(file);
   rewind(file);

   uint8_t *buffer = malloc(len);
   if (!buffer)
   {
      fprintf(stderr, "Failed to allocate memory!\n");
      goto error;
   }
   fread(buffer, 1, len, file);
   fclose(file);
   file = NULL;

   char *out_path = strdup(argv[1]);
   char *split = strrchr(out_path, '.');
   const char *ext = NULL;

   if (split)
   {
      *split = '\0';
      ext = split + 1;

      if (strcasecmp(ext, "srm") == 0)
         strcat(out_path, ".sav");
      else if (strlen(ext) >= 3)
         strcat(out_path, ".srm");
      else
         ext = NULL;
   }

   if (!ext)
   {
      fprintf(stderr, "Cannot detect extension!\n");
      goto error;
   }

   enum save_type type = detect_save_type(buffer, len);
   printf("Detected save type: %s\n", save_type_to_string(type));

   if (type == SAVE_UNKNOWN)
   {
      fprintf(stderr, "Cannot infer save type ...\n");
      goto error;
   }

   file = fopen(out_path, "wb");
   if (!file)
      goto error;

   if (len == (0x20000 + 0x2000))
      dump_sav(file, buffer, type);
   else
      dump_srm(file, buffer, type);
   fclose(file);

   return 0;

error:
   if (file)
      fclose(file);
   return 1;
}

Título: Re: Última versão do VBA-M
Enviado por: platao em 03 de Julho de 2014, 09:08
Legal, vai adicionar o aplicativo no seu PPA tbm?
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 03 de Julho de 2014, 23:43
Legal, vai adicionar o aplicativo no seu PPA tbm?

Hum, não sei. Será que existe esse problema em outras plataformas?

Eu lembro que existe o problema de ISO's em alguns emuladores, uns usam ISO, outros usam BIN e CUE, ou algo do tipo.

Seria legal ter um app com mais de uma solução. Talvez seja perda de tempo criar um .deb só para esse aí.
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 23 de Setembro de 2014, 20:59
Alguém está tendo problema ainda com perda da configuração, no Unity? Aqui no Xfce não tive mais problema, mas um cara me mandou email reclamando à respeito...
Título: Re: Última versão do VBA-M
Enviado por: Sergio Benjamim em 20 de Maio de 2015, 21:48
Saiu versão Beta 1 do futuro 2.0.0 (http://vba-m.com/forum/Thread-this-is-it)  :o :o :o

Pacotes para ubuntu aqui (http://sourceforge.net/projects/vbam/files/Linux%20Binaries/VBA-M%202.0.0%20Beta%201%20-%20Ubuntu%20-%2064%20bits.zip/download) (64 bits). Edit: atualizei, corrigido alguns bugs e tem o pacote gtk. usar pacotes do PPA VBA-M Trunk (https://code.launchpad.net/~sergio-br2/+archive/ubuntu/vbam-trunk)

Mudou a interface, está usando Wx agora, testando aqui encontrei vários bugs... quem quiser ajudar à reportar problemas: https://sourceforge.net/p/vbam/bugs/?source=navbar (https://sourceforge.net/p/vbam/bugs/?source=navbar)
Título: Re:Última versão do VBA-M
Enviado por: Sergio Benjamim em 28 de Maio de 2015, 02:36
Atualizado o PPA (https://code.launchpad.net/~sergio-br2/+archive/ubuntu/vbam-trunk), de agora em diante vai ter sempre pacotes novos diariamente (está em sincronia com a versão svn do sourceforge).

Edit: Agora tem um pacote comum, vbam-common, que fornece os ícones para ambos pacotes wx e gtk. Se você perceber um pacote quebrado no sistema, desinstale o vbam-wx ou vbam-gtk e instale novamente. Pelo menos agora dá para instalar os dois frontends ao mesmo tempo.
Título: Re:Última versão do VBA-M
Enviado por: xGrind em 18 de Fevereiro de 2016, 00:58
Boa noite Sergio,

Corrigiram o problema com lag? Testei esses dias no Xubuntu 14.04 atualizado e nem dava pra jogar. Travando muito, mas no Mageia roda tranquilo. E o Visualboy Advacend da Central de Programas só dá uns lag bobo as vezes.
Sabe se tem como corrigir isso, ou se é algo relacionado a versão do Kernel? Testei com a última versão do kernel 3.13 do ubuntu essa semana.
Título: Re:Última versão do VBA-M
Enviado por: Sergio Benjamim em 18 de Fevereiro de 2016, 20:07
Boa noite Sergio,

Corrigiram o problema com lag? Testei esses dias no Xubuntu 14.04 atualizado e nem dava pra jogar. Travando muito, mas no Mageia roda tranquilo. E o Visualboy Advacend da Central de Programas só dá uns lag bobo as vezes.
Sabe se tem como corrigir isso, ou se é algo relacionado a versão do Kernel? Testei com a última versão do kernel 3.13 do ubuntu essa semana.

Problema de lag? Acho que nunca tive com ele. E pra ser sincero, faz tempo que não atualizo esse pacote. Por que você não tenta o mGBA (http://ubuntuforum-br.org/index.php/topic,116928.msg643898.html#msg643898)?