Autor Tópico: Última versão do VBA-M  (Lida 63935 vezes)

Offline platao

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 5.052
    • Ver perfil
Re: Última versão do VBA-M
« Resposta #45 Online: 21 de Maio de 2014, 09:10 »
Entao vai ter que fazer uma regressao? Ainda bem que encontraram o problema!
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Offline Sergio Benjamim

  • Usuário Ubuntu
  • *
  • Mensagens: 2.902
    • Ver perfil
Re: Última versão do VBA-M
« Resposta #46 Online: 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/

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/1228/tree//trunk/src/common/SoundSDL.cpp?diff=1086

http://sourceforge.net/p/vbam/code/1229/tree//trunk/src/sdl/SDL.cpp?diff=1148
« Última modificação: 21 de Maio de 2014, 09:40 por Sergio Benjamim »
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Offline Sergio Benjamim

  • Usuário Ubuntu
  • *
  • Mensagens: 2.902
    • Ver perfil
Re: Última versão do VBA-M
« Resposta #47 Online: 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 na execução do vba-m.
« Última modificação: 28 de Maio de 2014, 18:45 por Sergio Benjamim »
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Offline platao

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 5.052
    • Ver perfil
Re: Última versão do VBA-M
« Resposta #48 Online: 31 de Maio de 2014, 12:11 »
Estou testando o seu PPA desde quarta e nao crashou ainda nenhuma vez, vamos ver.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Offline Sergio Benjamim

  • Usuário Ubuntu
  • *
  • Mensagens: 2.902
    • Ver perfil
Re: Última versão do VBA-M
« Resposta #49 Online: 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

É 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


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;
}

« Última modificação: 03 de Julho de 2014, 03:48 por Sergio Benjamim »
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Offline platao

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 5.052
    • Ver perfil
Re: Última versão do VBA-M
« Resposta #50 Online: 03 de Julho de 2014, 09:08 »
Legal, vai adicionar o aplicativo no seu PPA tbm?
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Offline Sergio Benjamim

  • Usuário Ubuntu
  • *
  • Mensagens: 2.902
    • Ver perfil
Re: Última versão do VBA-M
« Resposta #51 Online: 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í.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Offline Sergio Benjamim

  • Usuário Ubuntu
  • *
  • Mensagens: 2.902
    • Ver perfil
Re: Última versão do VBA-M
« Resposta #52 Online: 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...
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Offline Sergio Benjamim

  • Usuário Ubuntu
  • *
  • Mensagens: 2.902
    • Ver perfil
Re: Última versão do VBA-M
« Resposta #53 Online: 20 de Maio de 2015, 21:48 »
Saiu versão Beta 1 do futuro 2.0.0  :o :o :o

Pacotes para ubuntu aqui (64 bits). Edit: atualizei, corrigido alguns bugs e tem o pacote gtk. usar pacotes do PPA VBA-M 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
« Última modificação: 28 de Maio de 2015, 02:38 por Sergio Benjamim »
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Offline Sergio Benjamim

  • Usuário Ubuntu
  • *
  • Mensagens: 2.902
    • Ver perfil
Re:Última versão do VBA-M
« Resposta #54 Online: 28 de Maio de 2015, 02:36 »
Atualizado o PPA, 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.
« Última modificação: 30 de Maio de 2015, 16:08 por Sergio Benjamim »
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Offline xGrind

  • Usuário Ubuntu
  • *
  • Mensagens: 17
    • Ver perfil
Re:Última versão do VBA-M
« Resposta #55 Online: 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.

Offline Sergio Benjamim

  • Usuário Ubuntu
  • *
  • Mensagens: 2.902
    • Ver perfil
Re:Última versão do VBA-M
« Resposta #56 Online: 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?
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !