debian/0000755000000000000000000000000012144742010007161 5ustar debian/visualboyadvance-gtk.manpages0000644000000000000000000000001611754216400015022 0ustar debian/gvba.1 debian/visualboyadvance-gtk.install0000644000000000000000000000020512144251041014667 0ustar debian/VisualBoyAdvance-gtk-32x32.xpm usr/share/pixmaps debian/VisualBoyAdvance.desktop usr/share/applications src/gtk/gvba usr/bin/ debian/gvba.10000644000000000000000000000120511754216400010165 0ustar .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36. .TH VISUALBOYADVANCE "1" "May 2007" "VisualBoyAdvance version 1.8.0 [GTK+]" "User Commands" .SH NAME VisualBoyAdvance \- VisualBoyAdvance-GTK .SH SYNOPSIS .B gvba [\fIoption \fR...] [\fIfile\fR] .SH OPTIONS .TP \fB\-\-help\fR Output this help. .TP \fB\-V\fR, \fB\-\-version\fR Output version information. .SH "SEE ALSO" The full documentation for .B VisualBoyAdvance is maintained as a Texinfo manual. If the .B info and .B VisualBoyAdvance programs are properly installed at your site, the command .IP .B info VisualBoyAdvance .PP should give you access to the complete manual. debian/VisualBoyAdvance.desktop0000644000000000000000000000040412142454437013764 0ustar [Desktop Entry] Version=1.0 Name= VisualBoy Advance Comment=Game Boy Advance emulator Exec=gvba Icon=VisualBoyAdvance-gtk-32x32 Terminal=false Type=Application Categories=GTK;Game;ArcadeGame; Keywords=emulator;Nintendo;Game Boy Advance;GBA; StartupNotify=true debian/patches/0000755000000000000000000000000012144742010010610 5ustar debian/patches/08_gvba_load_gb_rom.patch0000644000000000000000000000046511754227564015432 0ustar Author: Javier Serrano Polo Description: Fix GB ROM loading in gvba --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -1428,6 +1428,7 @@ bLoaded = gbLoadRom(csFile); if (bLoaded) { + gbReset(); m_eCartridge = CartridgeGB; m_stEmulator = GBSystem; } debian/patches/10_fix_typecast.patch0000644000000000000000000000074211754227566014662 0ustar Author: Description: Make the parameter list in the typecase actually match the one in the variable it's assigned to. --- a/src/Util.cpp +++ b/src/Util.cpp @@ -992,7 +992,7 @@ gzFile utilGzOpen(const char *file, const char *mode) { - utilGzWriteFunc = (int (ZEXPORT *)(void *,void * const, unsigned int))gzwrite; + utilGzWriteFunc = (int (ZEXPORT *)(gzFile,const voidp, unsigned int))gzwrite; utilGzReadFunc = gzread; utilGzCloseFunc = gzclose; debian/patches/05_translation_brazilian.patch0000644000000000000000000006046511754227563016562 0ustar Author: Jose Carlos Medeiros Description: Brazilian Portuguese po translations. --- a/configure.in +++ b/configure.in @@ -139,7 +139,7 @@ if test "x$enable_gtk" = xyes; then dnl Internationalisation support. - ALL_LINGUAS="fr sv" + ALL_LINGUAS="fr sv pt_BR" AM_GNU_GETTEXT(external) AC_CHECK_HEADERS(libintl.h) GETTEXT_PACKAGE=vba-1.8.0 --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,1108 @@ +# Portuguese/Brazil translation of visualboyadvance. +# Copyright (C) 2006 VBA development team +# This file is distributed under the same license as the visualboyadvance package. +# José Carlos Medeiros , 2006. +# +# +msgid "" +msgstr "" +"Project-Id-Version: VisualBoyAdvance 1.7.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2004-05-21 18:02+0200\n" +"PO-Revision-Date: 2006-03-15 15:47-0300\n" +"Last-Translator: José Carlos Medeiros \n" +"Language-Team: Portuguese/Brazil \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit" + +#: src/Cheats.cpp:653 src/Cheats.cpp:658 src/Cheats.cpp:667 src/Cheats.cpp:675 +#, c-format +msgid "Invalid cheat code '%s'" +msgstr "Cheat Code inválido '%s'" + +#: src/Cheats.cpp:694 +#, c-format +msgid "Invalid cheat code address: %08x" +msgstr "Endereço do Cheat Code inválido: %08x" + +#: src/Cheats.cpp:738 src/Cheats.cpp:747 +msgid "Invalid GSA code. Format is XXXXXXXXYYYYYYYY" +msgstr "Código GSA inválido. O formato é XXXXXXXXYYYYYYYY" + +#: src/Cheats.cpp:773 +#, c-format +msgid "" +"Warning: cheats are for game %s. Current game is %s.\n" +"Codes may not work correctly." +msgstr "" +"Aviso: Os cheats são para o jogo %s. O jogo atual é %s.\n" +"Os códigos podem não funcionar corretamente." + +#: src/Cheats.cpp:1307 src/Cheats.cpp:1316 src/Cheats.cpp:1323 +#: src/Cheats.cpp:1331 +msgid "Invalid CBA code. Format is XXXXXXXX YYYY." +msgstr "Código CBA inválido. O formato é XXXXXXX YYYY." + +#: src/Cheats.cpp:1385 +msgid "" +"Warning: Codes seem to be for a different game.\n" +"Codes may not work correctly." +msgstr "" +"Aviso: Os códigos parecem ser de um outro jogo.\n" +"Os códigos podem não funcionar corretamente." + +#: src/Cheats.cpp:1545 src/gb/gbCheats.cpp:130 +#, c-format +msgid "Unsupported cheat list version %d" +msgstr "Versão da lista de cheats não suportados: %d" + +#: src/Cheats.cpp:1558 src/gb/gbCheats.cpp:143 +#, c-format +msgid "Unsupported cheat list type %d" +msgstr "Lista dos tipos de cheats não suportados: %d" + +#: src/elf.cpp:2814 +#, c-format +msgid "Not a valid ELF file %s" +msgstr "Arquivo ELF não válido %s" + +#: src/GBA.cpp:664 src/GBA.cpp:849 src/GBA.cpp:887 src/Util.cpp:61 +#: src/Util.cpp:270 src/gb/GB.cpp:1662 src/gb/GB.cpp:1679 src/gb/GB.cpp:1696 +#: src/gb/GB.cpp:1719 src/gb/GB.cpp:1736 +#, c-format +msgid "Error creating file %s" +msgstr "Erro ao criar o arquivo %s" + +#: src/GBA.cpp:701 +#, c-format +msgid "Unsupported VisualBoyAdvance save game version %d" +msgstr "Não suportada a versão %d do jogo gravado para o VisualBoyAdvance" + +#: src/GBA.cpp:715 +#, c-format +msgid "Cannot load save game for %s" +msgstr "Impossível carregar o jogo gravado para %s" + +#: src/GBA.cpp:724 +msgid "Save game is not using the BIOS files" +msgstr "Para gravar o jogo não esta sendo utilizado os arquivos da BIOS" + +#: src/GBA.cpp:727 +msgid "Save game is using the BIOS file" +msgstr "Para gravar o jogo esta sendo utilizado os arquivos da BIOS" + +#: src/GBA.cpp:807 +#, c-format +msgid "Unsupported save type %d" +msgstr "Não suportado o tipo gravado %d" + +#: src/GBA.cpp:922 src/GBA.cpp:989 src/Util.cpp:588 src/Util.cpp:700 +#: src/gb/gbCheats.cpp:400 src/gb/GB.cpp:1977 +#, c-format +msgid "Cannot open file %s" +msgstr "Impossível abrir os arquivos %s" + +#: src/GBA.cpp:957 src/gb/GB.cpp:1991 +#, c-format +msgid "Cannot import snapshot for %s. Current game is %s" +msgstr "Impossível importar a imagem gravada para o %s. O jogo atual é o %s" + +#: src/GBA.cpp:971 src/gb/GB.cpp:2018 +#, c-format +msgid "Unsupported snapshot file %s" +msgstr "Não suportada a imagem gravada %s" + +#: src/GBA.cpp:1274 src/GBA.cpp:1280 src/GBA.cpp:1329 src/GBA.cpp:1336 +#: src/GBA.cpp:1343 src/GBA.cpp:1350 src/GBA.cpp:1357 src/GBA.cpp:1364 +#: src/GBA.cpp:1371 src/Util.cpp:767 src/Util.cpp:825 src/Util.cpp:933 +#, c-format +msgid "Failed to allocate memory for %s" +msgstr "Falhou ao alocar memória para %s" + +#: src/GBA.cpp:1292 src/Util.cpp:756 src/Util.cpp:802 src/Util.cpp:816 +#: src/Util.cpp:920 +#, c-format +msgid "Error opening image %s" +msgstr "Erro ao abrir a imagem %s" + +#: src/GBA.cpp:1606 +#, c-format +msgid "Unsupported ARM mode %02x" +msgstr "Não suportado o modo ARM %02x" + +#: src/GBA.cpp:1839 +#, c-format +msgid "" +"Unsupported BIOS function %02x called from %08x. A BIOS file is needed in " +"order to get correct behaviour." +msgstr "" +"Não suportada a função %02x da BIOS chamada por %08x. Um arquivo de BIOS é necessário para funcionar corretamente." + +#: src/GBA.cpp:2947 +msgid "Invalid BIOS file size" +msgstr "Tamanho da BIOS inválido" + +#: src/RTC.cpp:157 +#, c-format +msgid "Unknown RTC command %02x" +msgstr "Comando RTC %02x desconhecido" + +#: src/Util.cpp:596 src/Util.cpp:616 src/Util.cpp:707 src/Util.cpp:727 +#, c-format +msgid "Bad ZIP file %s" +msgstr "Arquivo ZIP %s corrompido" + +#: src/Util.cpp:639 src/Util.cpp:745 +#, c-format +msgid "No image found on ZIP file %s" +msgstr "Não foi encontrada a imagem no arquivo ZIP %s" + +#: src/Util.cpp:783 src/Util.cpp:838 src/Util.cpp:877 src/Util.cpp:946 +#, c-format +msgid "Error reading image %s" +msgstr "Erro ao ler a imagem %s" + +#: src/Util.cpp:889 +#, c-format +msgid "No image found on RAR file %s" +msgstr "Não foi encontrada a imagem no arquivo RAR %s" + +#: src/gb/gbCheats.cpp:194 src/gb/gbCheats.cpp:304 +msgid "Maximum number of cheats reached." +msgstr "O número máximo de cheats foi alcançado." + +#: src/gb/gbCheats.cpp:200 +#, c-format +msgid "Invalid GameShark code: %s" +msgstr "Código GameShark inválido: %s" + +#: src/gb/gbCheats.cpp:310 +#, c-format +msgid "Invalid GameGenie code: %s" +msgstr "Código GameGenie inválido: %s" + +#: src/gb/gbCheats.cpp:355 +#, c-format +msgid "Invalid cheat to remove %d" +msgstr "Cheat inválido para remover %d" + +#: src/gb/gbCodesCB.h:1285 src/gb/gbCodes.h:1404 +#, c-format +msgid "Unknown opcode %02x at %04x" +msgstr "opcode %02x desconhecido em %04x" + +#: src/gb/GB.cpp:1761 src/gb/GB.cpp:1785 src/gb/GB.cpp:1810 src/gb/GB.cpp:1842 +#: src/gb/GB.cpp:1866 +#, c-format +msgid "Failed to read complete save game %s (%d)" +msgstr "Falhou ao ler o jogo gravado %s (%d)" + +#: src/gb/GB.cpp:1818 +#, c-format +msgid "Failed to read RTC from save game %s (continuing)" +msgstr "Falhou ao ler o RTC do jogo gravado %s (continuando)" + +#: src/gb/GB.cpp:2195 +#, c-format +msgid "Unsupported VisualBoy save game version %d" +msgstr "Versão do jogo gravado não suportada %d" + +#: src/gb/GB.cpp:2205 +#, c-format +msgid "Cannot load save game for %s. Playing %s" +msgstr "Impossível carregar o jogo para %s. Jogando %s" + +#: src/gb/GB.cpp:2464 +#, c-format +msgid "Unsupported rom size %02x" +msgstr "Tamanho da ROM não suportado %02x" + +#: src/gb/GB.cpp:2476 +#, c-format +msgid "Unsupported ram size %02x" +msgstr "Tamanho da RAM não suportado %02x" + +#: src/gb/GB.cpp:2552 +#, c-format +msgid "Unknown cartridge type %02x" +msgstr "Tipo de cartucho desconhecido %02x" + +#: src/gtk/joypadconfig.cpp:202 src/gtk/joypadconfig.cpp:239 +#: src/gtk/joypadconfig.cpp:257 +msgid "" +msgstr "" + +#: src/gtk/main.cpp:61 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Tente `%s --help' para maiores informações.\n" + +#: src/gtk/main.cpp:65 +#, c-format +msgid "Usage: %s [option ...] [file]\n" +msgstr "Uso: %s [opções ...] [arquivo]\n" + +#: src/gtk/main.cpp:66 +msgid "" +"\n" +"Options:\n" +" --help Output this help.\n" +" -V, --version Output version information.\n" +msgstr "" +"\n" +"Opções:\n" +" --help Mostra esta ajuda.\n" +" -V, --version Mosta a informação de versão.\n" + +#: src/gtk/main.cpp:130 +#, c-format +msgid "VisualBoyAdvance version %s [GTK+]\n" +msgstr "Versão do VisualBoyAdvance : %s [GTK+]\n" + +#: src/gtk/vba.glade:7 +msgid "VBA" +msgstr "VBA" + +#: src/gtk/vba.glade:37 +msgid "_File" +msgstr "_Arquivo" + +#: src/gtk/vba.glade:46 +msgid "_Open..." +msgstr "_Abrir" + +#: src/gtk/vba.glade:73 +msgid "_Load..." +msgstr "_Carregar" + +#: src/gtk/vba.glade:82 +msgid "_Save..." +msgstr "_Salvar" + +#: src/gtk/vba.glade:91 +msgid "Loa_d game" +msgstr "Ca_rregar Jogo" + +#: src/gtk/vba.glade:100 +msgid "Most recent" +msgstr "Mais recentes" + +#: src/gtk/vba.glade:108 +msgid "Auto load most recent" +msgstr "Auto carregar o mais recente" + +#: src/gtk/vba.glade:123 src/gtk/vba.glade:240 +msgid "Slot1" +msgstr "Slot1" + +#: src/gtk/vba.glade:132 src/gtk/vba.glade:249 +msgid "Slot2" +msgstr "Slot2" + +#: src/gtk/vba.glade:141 src/gtk/vba.glade:258 +msgid "Slot3" +msgstr "Slot3" + +#: src/gtk/vba.glade:150 src/gtk/vba.glade:267 +msgid "Slot4" +msgstr "Slot4" + +#: src/gtk/vba.glade:159 src/gtk/vba.glade:276 +msgid "Slot5" +msgstr "Slot5" + +#: src/gtk/vba.glade:168 src/gtk/vba.glade:285 +msgid "Slot6" +msgstr "Slot6" + +#: src/gtk/vba.glade:177 src/gtk/vba.glade:294 +msgid "Slot7" +msgstr "Slot7" + +#: src/gtk/vba.glade:186 src/gtk/vba.glade:303 +msgid "Slot8" +msgstr "Slot8" + +#: src/gtk/vba.glade:195 src/gtk/vba.glade:312 +msgid "Slot9" +msgstr "Slot9" + +#: src/gtk/vba.glade:204 src/gtk/vba.glade:321 +msgid "Slot10" +msgstr "Slot10" + +#: src/gtk/vba.glade:217 +msgid "S_ave game" +msgstr "_Salvar jogo" + +#: src/gtk/vba.glade:226 +msgid "Oldest slot" +msgstr "Slot mais velho" + +#: src/gtk/vba.glade:340 +msgid "_Pause" +msgstr "_Pausar" + +#: src/gtk/vba.glade:350 src/gtk/vba.glade:374 +msgid "_Reset" +msgstr "_Reiniciar" + +#: src/gtk/vba.glade:365 +msgid "Rece_nt" +msgstr "Rece_nte" + +#: src/gtk/vba.glade:382 +msgid "_Freeze" +msgstr "Cong_elado" + +#: src/gtk/vba.glade:407 +msgid "_Import" +msgstr "_Importar" + +#: src/gtk/vba.glade:416 src/gtk/vba.glade:437 +msgid "_Battery file..." +msgstr "Arquivo de _Bateria..." + +#: src/gtk/vba.glade:428 +msgid "E_xport" +msgstr "E_xportar" + +#: src/gtk/vba.glade:455 +msgid "Screen capt_ure..." +msgstr "Capt_urar Imagem..." + +#: src/gtk/vba.glade:469 +msgid "_Close" +msgstr "_Fechar" + +#: src/gtk/vba.glade:489 +msgid "_Exit" +msgstr "Sai_r" + +#: src/gtk/vba.glade:514 +msgid "_Options" +msgstr "_Opções" + +#: src/gtk/vba.glade:523 +msgid "_Frameskip" +msgstr "Pular _Quadros" + +#: src/gtk/vba.glade:532 +msgid "_Throttle" +msgstr "Ace_lerar" + +#: src/gtk/vba.glade:541 +msgid "_No throttle" +msgstr "_Sem Acelerar" + +#: src/gtk/vba.glade:550 src/gtk/vba.glade:1315 +msgid "25%" +msgstr "25%" + +#: src/gtk/vba.glade:560 src/gtk/vba.glade:1324 +msgid "50%" +msgstr "50%" + +#: src/gtk/vba.glade:570 src/gtk/vba.glade:1334 +msgid "100%" +msgstr "100%" + +#: src/gtk/vba.glade:580 +msgid "150%" +msgstr "150%" + +#: src/gtk/vba.glade:590 src/gtk/vba.glade:1344 +msgid "200%" +msgstr "200%" + +#: src/gtk/vba.glade:600 +msgid "_Other..." +msgstr "_Outro..." + +#: src/gtk/vba.glade:620 src/gtk/vba.glade:981 src/gtk/vba.glade:1415 +msgid "_Automatic" +msgstr "Automá_tico" + +#: src/gtk/vba.glade:629 +msgid "_0" +msgstr "_0" + +#: src/gtk/vba.glade:639 src/gtk/vba.glade:1753 +msgid "_1" +msgstr "_1" + +#: src/gtk/vba.glade:649 src/gtk/vba.glade:1762 +msgid "_2" +msgstr "_2" + +#: src/gtk/vba.glade:659 src/gtk/vba.glade:1772 +msgid "_3" +msgstr "_3" + +#: src/gtk/vba.glade:669 src/gtk/vba.glade:1782 +msgid "_4" +msgstr "_4" + +#: src/gtk/vba.glade:679 +msgid "_5" +msgstr "_5" + +#: src/gtk/vba.glade:689 +msgid "_6" +msgstr "_6" + +#: src/gtk/vba.glade:699 +msgid "_7" +msgstr "_7" + +#: src/gtk/vba.glade:709 +msgid "_8" +msgstr "_8" + +#: src/gtk/vba.glade:719 +msgid "_9" +msgstr "_9" + +#: src/gtk/vba.glade:733 +msgid "_Video" +msgstr "_Vídeo" + +#: src/gtk/vba.glade:742 +msgid "_1x" +msgstr "_1x" + +#: src/gtk/vba.glade:751 +msgid "_2x" +msgstr "_2x" + +#: src/gtk/vba.glade:761 +msgid "_3x" +msgstr "_3x" + +#: src/gtk/vba.glade:771 +msgid "_4x" +msgstr "_4x" + +#: src/gtk/vba.glade:781 +msgid "_5x" +msgstr "_5x" + +#: src/gtk/vba.glade:791 +msgid "_6x" +msgstr "_6x" + +#: src/gtk/vba.glade:807 +msgid "_Layers" +msgstr "Ca_madas" + +#: src/gtk/vba.glade:816 +msgid "BG0" +msgstr "BG0" + +#: src/gtk/vba.glade:826 +msgid "BG1" +msgstr "BG1" + +#: src/gtk/vba.glade:836 +msgid "BG2" +msgstr "BG2" + +#: src/gtk/vba.glade:846 +msgid "BG3" +msgstr "BG3" + +#: src/gtk/vba.glade:856 +msgid "OBJ" +msgstr "OBJ" + +#: src/gtk/vba.glade:866 +msgid "WIN0" +msgstr "WIN0" + +#: src/gtk/vba.glade:876 +msgid "WIN1" +msgstr "WIN1" + +#: src/gtk/vba.glade:886 +msgid "OBJWIN" +msgstr "OBJWIN" + +#: src/gtk/vba.glade:904 +msgid "_Emulator" +msgstr "_Emulador" + +#: src/gtk/vba.glade:913 +msgid "Directories..." +msgstr "Pastas..." + +#: src/gtk/vba.glade:921 +msgid "Pause when inactive window" +msgstr "Pausar quando a janela estiver inativa" + +#: src/gtk/vba.glade:930 +msgid "Show speed" +msgstr "Mosta a velocidade" + +#: src/gtk/vba.glade:939 src/gtk/vba.glade:1030 +msgid "None" +msgstr "Nada" + +#: src/gtk/vba.glade:948 +msgid "Percentage" +msgstr "Porcentagem" + +#: src/gtk/vba.glade:958 +msgid "Detailed" +msgstr "Detalhado" + +#: src/gtk/vba.glade:972 +msgid "Save type" +msgstr "Tipo" + +#: src/gtk/vba.glade:990 +msgid "EEPROM" +msgstr "EEPROM" + +#: src/gtk/vba.glade:1000 +msgid "SRAM" +msgstr "SRAM" + +#: src/gtk/vba.glade:1010 +msgid "Flash" +msgstr "Flash" + +#: src/gtk/vba.glade:1020 +msgid "EEPROM+Sensor" +msgstr "EEPROM+Sensor" + +#: src/gtk/vba.glade:1046 +msgid "Flash 64K" +msgstr "Flash 64K" + +#: src/gtk/vba.glade:1055 +msgid "Flash 128K" +msgstr "Flash 128K" + +#: src/gtk/vba.glade:1075 +msgid "_Select BIOS file..." +msgstr "_Seleciona um arquivo de BIOS" + +#: src/gtk/vba.glade:1083 +msgid "_Use BIOS file" +msgstr "_Use arquivo de BIOS" + +#: src/gtk/vba.glade:1098 +msgid "Screenshot format" +msgstr "Formato da Captura de imagem" + +#: src/gtk/vba.glade:1107 +msgid "_PNG" +msgstr "_PNG" + +#: src/gtk/vba.glade:1116 +msgid "_BMP" +msgstr "_BMP" + +#: src/gtk/vba.glade:1134 +msgid "_Sound" +msgstr "_Som" + +#: src/gtk/vba.glade:1143 +msgid "O_ff" +msgstr "_Desligado" + +#: src/gtk/vba.glade:1152 +msgid "_Mute" +msgstr "_Mudo" + +#: src/gtk/vba.glade:1162 +msgid "_On" +msgstr "_Ligado" + +#: src/gtk/vba.glade:1178 +msgid "Echo" +msgstr "Ecoar" + +#: src/gtk/vba.glade:1187 +msgid "Low pass filter" +msgstr "Filtro de baixa passagem " + +#: src/gtk/vba.glade:1196 +msgid "Reverse stereo" +msgstr "Estéreo reverso" + +#: src/gtk/vba.glade:1211 +msgid "Channel _1" +msgstr "Canal _1" + +#: src/gtk/vba.glade:1220 +msgid "Channel _2" +msgstr "Canal _2" + +#: src/gtk/vba.glade:1229 +msgid "Channel _3" +msgstr "Canal _3" + +#: src/gtk/vba.glade:1238 +msgid "Channel _4" +msgstr "Canal _4" + +#: src/gtk/vba.glade:1247 +msgid "Channel _A" +msgstr "Canal _A" + +#: src/gtk/vba.glade:1256 +msgid "Channel _B" +msgstr "Canal _B" + +#: src/gtk/vba.glade:1271 +msgid "11 _Khz" +msgstr "11 _Khz" + +#: src/gtk/vba.glade:1280 +msgid "22 K_hz" +msgstr "22 K_hz" + +#: src/gtk/vba.glade:1290 +msgid "44 Kh_z" +msgstr "44 Kh_z" + +#: src/gtk/vba.glade:1306 +msgid "_Volume" +msgstr "_Volume" + +#: src/gtk/vba.glade:1354 +msgid "300%" +msgstr "300%" + +#: src/gtk/vba.glade:1364 +msgid "400%" +msgstr "400%" + +#: src/gtk/vba.glade:1382 +msgid "_Gameboy" +msgstr "_Gameboy" + +#: src/gtk/vba.glade:1391 +msgid "_Border" +msgstr "_Borda" + +#: src/gtk/vba.glade:1400 +msgid "_Printer" +msgstr "_Impressora" + +#: src/gtk/vba.glade:1424 +msgid "_GBA" +msgstr "_GBA" + +#: src/gtk/vba.glade:1434 +msgid "_CGB/GBC" +msgstr "_CGB/GBC" + +#: src/gtk/vba.glade:1444 +msgid "_SGB" +msgstr "_SGB" + +#: src/gtk/vba.glade:1454 +msgid "SGB_2" +msgstr "SGB_2" + +#: src/gtk/vba.glade:1464 +msgid "G_B" +msgstr "G_B" + +#: src/gtk/vba.glade:1478 +msgid "F_ilter" +msgstr "F_iltro" + +#: src/gtk/vba.glade:1487 +msgid "Interframe _blending" +msgstr "Interquadros _misturados" + +#: src/gtk/vba.glade:1496 src/gtk/vba.glade:1535 +msgid "_None" +msgstr "_Nada" + +#: src/gtk/vba.glade:1505 +msgid "_Smart" +msgstr "_Smart" + +#: src/gtk/vba.glade:1515 src/gtk/vba.glade:1594 +msgid "_Motion Blur" +msgstr "_Motion Blur" + +#: src/gtk/vba.glade:1544 +msgid "_TV Mode" +msgstr "Modo _TV" + +#: src/gtk/vba.glade:1554 +msgid "_2xSaI" +msgstr "_2xSaI" + +#: src/gtk/vba.glade:1564 +msgid "_Super 2xSaI" +msgstr "_Super 2xSaI" + +#: src/gtk/vba.glade:1574 +msgid "Super _Eagle" +msgstr "Sup_er Visão" + +#: src/gtk/vba.glade:1584 +msgid "_Pixelate" +msgstr "_Pixelate" + +#: src/gtk/vba.glade:1604 +msgid "_AdvanceMAME 2x" +msgstr "_AdvanceMAME 2x" + +#: src/gtk/vba.glade:1614 +msgid "S_imple 2x" +msgstr "S_imple 2x" + +#: src/gtk/vba.glade:1624 +msgid "Bilinea_r" +msgstr "Bilinea_r" + +#: src/gtk/vba.glade:1634 +msgid "Bilinear Pl_us" +msgstr "Bilinear Pl_us" + +#: src/gtk/vba.glade:1644 +msgid "S_canlines" +msgstr "S_canlines" + +#: src/gtk/vba.glade:1654 +msgid "h_q2x" +msgstr "h_q2x" + +#: src/gtk/vba.glade:1664 +msgid "_lq2x" +msgstr "_lq2x" + +#: src/gtk/vba.glade:1680 +msgid "_Disable MMX" +msgstr "_Desabilita o MMX" + +#: src/gtk/vba.glade:1693 +msgid "_Joypad" +msgstr "_Joypad" + +#: src/gtk/vba.glade:1702 +msgid "_Configure" +msgstr "_Configurar" + +#: src/gtk/vba.glade:1711 +msgid "_1..." +msgstr "_1..." + +#: src/gtk/vba.glade:1719 +msgid "_2..." +msgstr "_2..." + +#: src/gtk/vba.glade:1727 +msgid "_3..." +msgstr "_3..." + +#: src/gtk/vba.glade:1735 +msgid "_4..." +msgstr "_4..." + +#: src/gtk/vba.glade:1798 +msgid "_Autofire" +msgstr "_Auto Atirar" + +#: src/gtk/vba.glade:1807 +msgid "_A" +msgstr "_A" + +#: src/gtk/vba.glade:1817 +msgid "_B" +msgstr "_B" + +#: src/gtk/vba.glade:1827 +msgid "_L" +msgstr "_L" + +#: src/gtk/vba.glade:1837 +msgid "_R" +msgstr "_R" + +#: src/gtk/vba.glade:1859 +msgid "_Tools" +msgstr "_Ferramentas" + +#: src/gtk/vba.glade:1868 +msgid "_GDB" +msgstr "_GDB" + +#: src/gtk/vba.glade:1877 +msgid "_Wait connection..." +msgstr "_Aguardando conexão..." + +#: src/gtk/vba.glade:1885 +msgid "_Load and wait..." +msgstr "_Carregar e esperar..." + +#: src/gtk/vba.glade:1893 +msgid "_Break" +msgstr "_Break" + +#: src/gtk/vba.glade:1901 +msgid "_Disconnect" +msgstr "_Desconectar" + +#: src/gtk/vba.glade:1917 +msgid "_Help" +msgstr "Aj_uda" + +#: src/gtk/vba.glade:1926 +msgid "_About" +msgstr "_Sobre" + +#: src/gtk/vba.glade:1967 +msgid "About VBA" +msgstr "Sobre o VBA" + +#: src/gtk/vba.glade:2054 +msgid "An emulator for Gameboy(TM) and GameboyAdvance(TM)." +msgstr "Um emulador para o Gameboy(TM) e o GameboyAdvance(TM)." + +#: src/gtk/vba.glade:2076 +msgid "Special thanks to Yann Parmentier aka \"kohai\" for the icons." +msgstr "Agradecimentos especiais ao Yann Parmentier aka \"kohai\" pelos ícones." + +#: src/gtk/vba.glade:2098 +msgid "" +"Copyright (C) 2004 Forgotten and the VBA development team" +msgstr "" +"Copyright (C) 2004 Forgotten and the VBA development team" + +#: src/gtk/vba.glade:2120 +msgid "Throttle" +msgstr "Acelerar" + +#: src/gtk/vba.glade:2191 +msgid "Throttle : " +msgstr "Acelerar : " + +#: src/gtk/vba.glade:2231 +msgid " %" +msgstr " %" + +#: src/gtk/vba.glade:2262 +msgid "Directories" +msgstr "Pastas" + +#: src/gtk/vba.glade:2328 +msgid "GBA roms : " +msgstr "ROMs do GBA : " + +#: src/gtk/vba.glade:2358 src/gtk/vba.glade:2511 src/gtk/vba.glade:2612 +#: src/gtk/vba.glade:2713 src/gtk/vba.glade:2790 src/gtk/vba.glade:2921 +#: src/gtk/vba.glade:3207 src/gtk/vba.glade:3229 src/gtk/vba.glade:3251 +#: src/gtk/vba.glade:3273 src/gtk/vba.glade:3295 src/gtk/vba.glade:3317 +#: src/gtk/vba.glade:3339 src/gtk/vba.glade:3361 src/gtk/vba.glade:3383 +#: src/gtk/vba.glade:3405 src/gtk/vba.glade:3427 +msgid "*" +msgstr "*" + +#: src/gtk/vba.glade:2429 +msgid "GB roms : " +msgstr "ROMs do GB : " + +#: src/gtk/vba.glade:2481 +msgid "Batteries : " +msgstr "Baterias : " + +#: src/gtk/vba.glade:2582 +msgid "Saves : " +msgstr "Gravados : " + +#: src/gtk/vba.glade:2683 +msgid "Captures : " +msgstr "Capturas : " + +#: src/gtk/vba.glade:2841 +msgid "Joypad config" +msgstr "Configuração do Joypad" + +#: src/gtk/vba.glade:2937 +msgid "Down : " +msgstr "Pra Baixo : " + +#: src/gtk/vba.glade:2961 +msgid "Left : " +msgstr "Esquerdo : " + +#: src/gtk/vba.glade:2985 +msgid "Right : " +msgstr "Direito : " + +#: src/gtk/vba.glade:3009 +msgid "Button A : " +msgstr "Botão A : " + +#: src/gtk/vba.glade:3033 +msgid "Button B : " +msgstr "Botão B : " + +#: src/gtk/vba.glade:3057 +msgid "Button L : " +msgstr "Botão L : " + +#: src/gtk/vba.glade:3081 +msgid "Button R : " +msgstr "Botão R : " + +#: src/gtk/vba.glade:3105 +msgid "Select : " +msgstr "Select : " + +#: src/gtk/vba.glade:3129 +msgid "Start : " +msgstr "Iniciar : " + +#: src/gtk/vba.glade:3153 +msgid "Speed : " +msgstr "Velocidade : " + +#: src/gtk/vba.glade:3177 +msgid "Capture : " +msgstr "Capturar : " + +#: src/gtk/vba.glade:3443 +msgid "Up : " +msgstr "Para Cima : " + +#: src/gtk/vba.glade:3477 +msgid "TCP port" +msgstr "porta TCP" + +#: src/gtk/vba.glade:3548 +msgid "Port : " +msgstr "Porta : " + +#: src/gtk/windowcallbacks.cpp:80 src/gtk/windowcallbacks.cpp:94 +msgid "Load game" +msgstr "Carregar o jogo" + +#: src/gtk/windowcallbacks.cpp:109 src/gtk/windowcallbacks.cpp:163 +msgid "VisualBoyAdvance save game" +msgstr "Arquivo de jogo gravado" + +#: src/gtk/windowcallbacks.cpp:131 src/gtk/windowcallbacks.cpp:146 +msgid "Save game" +msgstr "Salvar o jogo" + +#: src/gtk/windowcallbacks.cpp:181 src/gtk/windowcallbacks.cpp:466 +#: src/gtk/windowcallbacks.cpp:585 +msgid "File already exists. Overwrite it?" +msgstr "O arquivo ja existe. Deseja sobrescrevê-lo?" + +#: src/gtk/windowcallbacks.cpp:318 src/gtk/windowcallbacks.cpp:332 +msgid "Import battery file" +msgstr "Importar arquivo de bateria" + +#: src/gtk/windowcallbacks.cpp:347 src/gtk/windowcallbacks.cpp:424 +msgid "Battery file" +msgstr "Arquivo de Bateria" + +#: src/gtk/windowcallbacks.cpp:351 src/gtk/windowcallbacks.cpp:428 +msgid "Flash save" +msgstr "Gravar Flash" + +#: src/gtk/windowcallbacks.cpp:362 +msgid "" +"Importing a battery file will erase any saved games and reset the emulator. " +"Do you want to continue?" +msgstr "" +"Importar um arquivo de bateria apagará qualquer jogo gravado e reiniciará o emulador. Você deseja continuar?" + +#: src/gtk/windowcallbacks.cpp:380 +#, c-format +msgid "Failed to import battery file %s." +msgstr "Falhou ao importar o arquivo de bateria %s." + +#: src/gtk/windowcallbacks.cpp:392 src/gtk/windowcallbacks.cpp:407 +msgid "Export battery file" +msgstr "Exportar o arquivo de bateria" + +#: src/gtk/windowcallbacks.cpp:494 +#, c-format +msgid "Failed to export battery file %s." +msgstr "Falhou ao exportar o arquivo de bateria %s." + +#: src/gtk/windowcallbacks.cpp:506 src/gtk/windowcallbacks.cpp:521 +msgid "Save screenshot" +msgstr "Capturar imagem" + +#: src/gtk/windowcallbacks.cpp:538 +msgid "PNG image" +msgstr "Imagem PNG" + +#: src/gtk/windowcallbacks.cpp:542 +msgid "BMP image" +msgstr "Imagem BMP" + +#: src/gtk/windowcallbacks.cpp:824 src/gtk/windowcallbacks.cpp:844 +msgid "Select directory" +msgstr "Seleciona a pasta" + +#: src/gtk/windowcallbacks.cpp:872 src/gtk/windowcallbacks.cpp:882 +msgid "Select BIOS file" +msgstr "Selecione o arquivo de BIOS" + +#: src/gtk/windowcallbacks.cpp:898 +msgid "All files" +msgstr "Todos os arquivos" + +#: src/gtk/windowcallbacks.cpp:902 +msgid "Gameboy Advance BIOS" +msgstr "Gameboy Advance BIOS" + +#: src/gtk/windowcallbacks.cpp:1336 +msgid "Only GBA images are supported." +msgstr "Somente imagens do GBA são suportadas." + +#: src/gtk/window.cpp:1427 +#, c-format +msgid "Unknown file type %s" +msgstr "Tipo de arquivo desconhecido %s" + +#: src/gtk/window.cpp:1708 src/gtk/window.cpp:1722 +msgid "Open" +msgstr "Abrir" + +#: src/gtk/window.cpp:1749 +msgid "All Gameboy Advance files" +msgstr "Todos os arquivos do Gameboy Advance" + +#: src/gtk/window.cpp:1756 +msgid "Gameboy Advance files" +msgstr "Arquivos do Gameboy Advance" + +#: src/gtk/window.cpp:1763 +msgid "Gameboy files" +msgstr "Arquivos do Gameboy" + +#: src/gtk/window.cpp:1793 +msgid "Loaded battery" +msgstr "Bateria carregada" + +#: src/gtk/window.cpp:1812 +msgid "Saved battery" +msgstr "Beteria gravada" + +#: src/gtk/window.cpp:1870 src/gtk/window.cpp:1917 +msgid "----/--/-- --:--:--" +msgstr "----/--/-- --:--:--" + +#: src/gtk/window.cpp:1902 +msgid "%Y/%m/%d %H:%M:%S" +msgstr "%d/%m/%Y %H:%M:%S" + +#: src/prof/prof.cpp:143 +msgid "No space for profiling buffer(s)\n" +msgstr "Sem espaço buffer do profile\n" + debian/patches/14_dont_rebuild_po_files.patch0000644000000000000000000000127112144742010016470 0ustar From: Etienne Millon Subject: Don't rebuild *.po files There is already an embedded vba.pot copy in the po/ directory. Re-creating it makes the package fail to build twice in a row because the *.po files are then refreshed. --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -125,7 +125,7 @@ # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update + cp -a $(srcdir)/$(DOMAIN)-$(VERSION).pot $@ # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. debian/patches/11_libpng1.5.patch0000644000000000000000000000061711756370744013660 0ustar Author: Nobuhiro Iwamatsu Description: Fix FTBFS with libpng 1.5 --- a/src/Util.cpp +++ b/src/Util.cpp @@ -87,7 +87,11 @@ return false; } +#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 + if (setjmp(png_jmpbuf(png_ptr))) { +#else if(setjmp(png_ptr->jmpbuf)) { +#endif png_destroy_write_struct(&png_ptr,NULL); fclose(fp); return false; debian/patches/series0000644000000000000000000000053212144742010012025 0ustar 01_use_dot_dir.patch 02_amd64_build_fix.patch 03_translation_swedish.patch 04_fix_gtk_with_DBKPT_SUPPORT.patch 05_translation_brazilian.patch 07_update_autoconf_macros.patch 08_gvba_load_gb_rom.patch 09_deprecatedsigc++.patch 10_fix_typecast.patch 11_libpng1.5.patch 12_vba-linux-sdl.patch 13_debugger_format.patch 14_dont_rebuild_po_files.patch debian/patches/02_amd64_build_fix.patch0000644000000000000000000000352411754227560015114 0ustar Author: Jose Carlos Medeiros Description: Fixes build on amd64. --- a/src/prof/prof.cpp +++ b/src/prof/prof.cpp @@ -88,6 +88,18 @@ b[1] = (v >> 8) & 255; } +void profPut64(char *b, u64 v) +{ + b[0] = v & 255; + b[1] = (v >> 8) & 255; + b[2] = (v >> 16) & 255; + b[3] = (v >> 24) & 255; + b[4] = (v >> 32) & 255; + b[5] = (v >> 40) & 255; + b[6] = (v >> 48) & 255; + b[7] = (v >> 56) & 255; +} + int profWrite8(FILE *f, u8 b) { if(fwrite(&b, 1, 1, f) != 1) @@ -105,6 +117,16 @@ return 0; } +int profWrite64(FILE *f, u64 v) +{ + char buf[8]; + + profPut64(buf, v); + if(fwrite(buf, 1, 8, f) != 8) + return 1; + return 0; +} + int profWrite(FILE *f, char *buf, unsigned int n) { if(fwrite(buf, 1, n, f) != n) @@ -271,7 +293,7 @@ for (toindex=seg->froms[fromindex]; toindex!=0; toindex=seg->tos[toindex].link) { if(profWrite8(fd, GMON_TAG_CG_ARC) || profWrite32(fd, (u32)frompc) || - profWrite32(fd, (u32)seg->tos[toindex].selfpc) || + profWrite64(fd, (u64)seg->tos[toindex].selfpc) || profWrite32(fd, seg->tos[toindex].count)) { systemMessage(0, "mcount: arc"); fclose(fd); --- a/src/sdl/debugger.cpp +++ b/src/sdl/debugger.cpp @@ -1722,9 +1722,9 @@ if(mem >= &bios[0] && mem <= &bios[0x3fff]) return 0x00000000 + (mem - &bios[0]); else if(mem >= &workRAM[0] && mem <= &workRAM[0x3ffff]) - return 0x02000000 + (mem - &workRAM[0]); + return 0x02000000 + ((unsigned size_t)mem - (size_t)&workRAM[0]); else if(mem >= &internalRAM[0] && mem <= &internalRAM[0x7fff]) - return 0x03000000 + (mem - &internalRAM[0]); + return 0x03000000 + ((unsigned size_t)mem - (size_t)&internalRAM[0]); else if(mem >= &ioMem[0] && mem <= &ioMem[0x3ff]) return 0x04000000 + (mem - &ioMem[0]); else if(mem >= &paletteRAM[0] && mem <= &paletteRAM[0x3ff]) debian/patches/03_translation_swedish.patch0000644000000000000000000006026511754227561016247 0ustar Author: Jose Carlos Medeiros Description: Swedish po translations. --- a/configure.in +++ b/configure.in @@ -139,7 +139,7 @@ if test "x$enable_gtk" = xyes; then dnl Internationalisation support. - ALL_LINGUAS="fr" + ALL_LINGUAS="fr sv" AM_GNU_GETTEXT(external) AC_CHECK_HEADERS(libintl.h) GETTEXT_PACKAGE=vba-1.8.0 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,1194 @@ +# Swedish translation for VBA. +# Copyright (C) 2006 VBA development team +# This file is distributed under the same license as the VisualBoyAdvance package. +# Daniel Nylander +# +msgid "" +msgstr "" +"Project-Id-Version: visualboyadvance 1.7.2\n" +"Report-Msgid-Bugs-To: undefined\n" +"POT-Creation-Date: 2004-05-21 18:02+0200\n" +"PO-Revision-Date: 2005-12-13 20:09+0100\n" +"Last-Translator: Daniel Nylander \n" +"Language-Team: Swedish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/Cheats.cpp:653 +#: src/Cheats.cpp:658 +#: src/Cheats.cpp:667 +#: src/Cheats.cpp:675 +#, c-format +msgid "Invalid cheat code '%s'" +msgstr "Ogiltig fuskkod \"%s\"" + +#: src/Cheats.cpp:694 +#, c-format +msgid "Invalid cheat code address: %08x" +msgstr "Ogiltig fuskkodsadress: %08x" + +#: src/Cheats.cpp:738 +#: src/Cheats.cpp:747 +msgid "Invalid GSA code. Format is XXXXXXXXYYYYYYYY" +msgstr "Ogiltig GSA-kod. Formatet är XXXXXXXXYYYYYYYY" + +#: src/Cheats.cpp:773 +#, c-format +msgid "" +"Warning: cheats are for game %s. Current game is %s.\n" +"Codes may not work correctly." +msgstr "" +"Varning: fusk är för spelet %s. Nuvarande spel är %s.\n" +"Koderna kanske inte fungerar korrekt." + +#: src/Cheats.cpp:1307 +#: src/Cheats.cpp:1316 +#: src/Cheats.cpp:1323 +#: src/Cheats.cpp:1331 +msgid "Invalid CBA code. Format is XXXXXXXX YYYY." +msgstr "Ogiltig CBA-kod. Formatet är XXXXXXXX YYYY." + +#: src/Cheats.cpp:1385 +msgid "" +"Warning: Codes seem to be for a different game.\n" +"Codes may not work correctly." +msgstr "" +"Varning: Koderna verkar vara för ett annat spel.\n" +"Koderna kanske inte fungerar korrekt." + +#: src/Cheats.cpp:1545 +#: src/gb/gbCheats.cpp:130 +#, c-format +msgid "Unsupported cheat list version %d" +msgstr "Ej stöd för fusklista version %d" + +#: src/Cheats.cpp:1558 +#: src/gb/gbCheats.cpp:143 +#, c-format +msgid "Unsupported cheat list type %d" +msgstr "Ej stöd för fusklista typ %d" + +#: src/elf.cpp:2814 +#, c-format +msgid "Not a valid ELF file %s" +msgstr "Inte en giltig ELF-fil %s" + +#: src/GBA.cpp:664 +#: src/GBA.cpp:849 +#: src/GBA.cpp:887 +#: src/Util.cpp:61 +#: src/Util.cpp:270 +#: src/gb/GB.cpp:1662 +#: src/gb/GB.cpp:1679 +#: src/gb/GB.cpp:1696 +#: src/gb/GB.cpp:1719 +#: src/gb/GB.cpp:1736 +#, c-format +msgid "Error creating file %s" +msgstr "Fel vid skapandet av fil %s" + +#: src/GBA.cpp:701 +#, c-format +msgid "Unsupported VisualBoyAdvance save game version %d" +msgstr "Ej stöd för sparat spel för VisualBoyAdvance version %d" + +#: src/GBA.cpp:715 +#, c-format +msgid "Cannot load save game for %s" +msgstr "Kan inte läsa in sparat spel för %s" + +#: src/GBA.cpp:724 +msgid "Save game is not using the BIOS files" +msgstr "Sparat spel använder inte BIOS-filer" + +#: src/GBA.cpp:727 +msgid "Save game is using the BIOS file" +msgstr "Sparat spel använder BIOS-filen" + +#: src/GBA.cpp:807 +#, c-format +msgid "Unsupported save type %d" +msgstr "Ej stöd för denna typ av sparade spel, %d" + +#: src/GBA.cpp:922 +#: src/GBA.cpp:989 +#: src/Util.cpp:588 +#: src/Util.cpp:700 +#: src/gb/gbCheats.cpp:400 +#: src/gb/GB.cpp:1977 +#, c-format +msgid "Cannot open file %s" +msgstr "Kan inte öppna fil %s" + +#: src/GBA.cpp:957 +#: src/gb/GB.cpp:1991 +#, c-format +msgid "Cannot import snapshot for %s. Current game is %s" +msgstr "Kan inte importera skärmbild för %s. Nuvarande spel är %s" + +#: src/GBA.cpp:971 +#: src/gb/GB.cpp:2018 +#, c-format +msgid "Unsupported snapshot file %s" +msgstr "Ej stöd för skärmbildsfil %s" + +#: src/GBA.cpp:1274 +#: src/GBA.cpp:1280 +#: src/GBA.cpp:1329 +#: src/GBA.cpp:1336 +#: src/GBA.cpp:1343 +#: src/GBA.cpp:1350 +#: src/GBA.cpp:1357 +#: src/GBA.cpp:1364 +#: src/GBA.cpp:1371 +#: src/Util.cpp:767 +#: src/Util.cpp:825 +#: src/Util.cpp:933 +#, c-format +msgid "Failed to allocate memory for %s" +msgstr "Misslyckades att allokera minne för %s" + +#: src/GBA.cpp:1292 +#: src/Util.cpp:756 +#: src/Util.cpp:802 +#: src/Util.cpp:816 +#: src/Util.cpp:920 +#, c-format +msgid "Error opening image %s" +msgstr "Fel vid öppning av bild %s" + +#: src/GBA.cpp:1606 +#, c-format +msgid "Unsupported ARM mode %02x" +msgstr "Ej stöd för ARM-läge %02x" + +#: src/GBA.cpp:1839 +#, c-format +msgid "Unsupported BIOS function %02x called from %08x. A BIOS file is needed in order to get correct behaviour." +msgstr "Ej stöd för BIOS-funktion %02x startad från %08x. En BIOS-fil behövs för att få korrekt beteende." + +#: src/GBA.cpp:2947 +msgid "Invalid BIOS file size" +msgstr "Ogiltig storlek på BIOS-fil" + +#: src/RTC.cpp:157 +#, c-format +msgid "Unknown RTC command %02x" +msgstr "Okänt RTC-kommando %02x" + +#: src/Util.cpp:596 +#: src/Util.cpp:616 +#: src/Util.cpp:707 +#: src/Util.cpp:727 +#, c-format +msgid "Bad ZIP file %s" +msgstr "Felaktig ZIP-fil %s" + +#: src/Util.cpp:639 +#: src/Util.cpp:745 +#, c-format +msgid "No image found on ZIP file %s" +msgstr "Ingen bild hittades i ZIP-fil %s" + +#: src/Util.cpp:783 +#: src/Util.cpp:838 +#: src/Util.cpp:877 +#: src/Util.cpp:946 +#, c-format +msgid "Error reading image %s" +msgstr "Fel vid läsning av bild %s" + +#: src/Util.cpp:889 +#, c-format +msgid "No image found on RAR file %s" +msgstr "Ingen bild hittades i RAR-fil %s" + +#: src/gb/gbCheats.cpp:194 +#: src/gb/gbCheats.cpp:304 +msgid "Maximum number of cheats reached." +msgstr "Maximalt antal fusk nåddes." + +#: src/gb/gbCheats.cpp:200 +#, c-format +msgid "Invalid GameShark code: %s" +msgstr "Ogiltig GameShark-kod: %s" + +#: src/gb/gbCheats.cpp:310 +#, c-format +msgid "Invalid GameGenie code: %s" +msgstr "Ogiltig GameGenie-kod: %s" + +#: src/gb/gbCheats.cpp:355 +#, c-format +msgid "Invalid cheat to remove %d" +msgstr "Ogiltigt fusk att ta bort %d" + +#: src/gb/gbCodesCB.h:1285 +#: src/gb/gbCodes.h:1404 +#, c-format +msgid "Unknown opcode %02x at %04x" +msgstr "Okänd opcode %02x vid %04x" + +#: src/gb/GB.cpp:1761 +#: src/gb/GB.cpp:1785 +#: src/gb/GB.cpp:1810 +#: src/gb/GB.cpp:1842 +#: src/gb/GB.cpp:1866 +#, c-format +msgid "Failed to read complete save game %s (%d)" +msgstr "Misslyckades att läsa komplett sparat spel %s (%d)" + +#: src/gb/GB.cpp:1818 +#, c-format +msgid "Failed to read RTC from save game %s (continuing)" +msgstr "Misslyckades att läsa RTC från sparat spel %s (fortsätter)" + +#: src/gb/GB.cpp:2195 +#, c-format +msgid "Unsupported VisualBoy save game version %d" +msgstr "Ej stöd för sparat spel för VisualBoy version %d" + +#: src/gb/GB.cpp:2205 +#, c-format +msgid "Cannot load save game for %s. Playing %s" +msgstr "Kan inte läsa in sparat spel för %s. Spelar %s" + +#: src/gb/GB.cpp:2464 +#, c-format +msgid "Unsupported rom size %02x" +msgstr "Ej stöd för rom-storlek %02x" + +#: src/gb/GB.cpp:2476 +#, c-format +msgid "Unsupported ram size %02x" +msgstr "Ej stöd för ram-storlek %02x" + +#: src/gb/GB.cpp:2552 +#, c-format +msgid "Unknown cartridge type %02x" +msgstr "Okänd cartridge-typ %02x" + +#: src/gtk/joypadconfig.cpp:202 +#: src/gtk/joypadconfig.cpp:239 +#: src/gtk/joypadconfig.cpp:257 +msgid "" +msgstr "" + +#: src/gtk/main.cpp:61 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Försök med \"%s --help\" för mer information.\n" + +#: src/gtk/main.cpp:65 +#, c-format +msgid "Usage: %s [option ...] [file]\n" +msgstr "Användning: %s [flagga ...] [fil]\n" + +#: src/gtk/main.cpp:66 +msgid "" +"\n" +"Options:\n" +" --help Output this help.\n" +" -V, --version Output version information.\n" +msgstr "" +"\n" +"Flaggor:\n" +" --help Skriv ut denna hjälp.\n" +" -V, --version Skriv ut versionsinformation.\n" + +#: src/gtk/main.cpp:130 +#, c-format +msgid "VisualBoyAdvance version %s [GTK+]\n" +msgstr "VisualBoyAdvance version %s [GTK+]\n" + +#: src/gtk/vba.glade:7 +msgid "VBA" +msgstr "VBA" + +#: src/gtk/vba.glade:37 +msgid "_File" +msgstr "_Fil" + +#: src/gtk/vba.glade:46 +msgid "_Open..." +msgstr "_Öppna..." + +#: src/gtk/vba.glade:73 +msgid "_Load..." +msgstr "_Läs in..." + +#: src/gtk/vba.glade:82 +msgid "_Save..." +msgstr "_Spara..." + +#: src/gtk/vba.glade:91 +msgid "Loa_d game" +msgstr "Läs in &spel" + +#: src/gtk/vba.glade:100 +msgid "Most recent" +msgstr "Senaste" + +#: src/gtk/vba.glade:108 +msgid "Auto load most recent" +msgstr "Läs automatiskt in senaste" + +#: src/gtk/vba.glade:123 +#: src/gtk/vba.glade:240 +msgid "Slot1" +msgstr "Plats1" + +#: src/gtk/vba.glade:132 +#: src/gtk/vba.glade:249 +msgid "Slot2" +msgstr "Plats2" + +#: src/gtk/vba.glade:141 +#: src/gtk/vba.glade:258 +msgid "Slot3" +msgstr "Plats3" + +#: src/gtk/vba.glade:150 +#: src/gtk/vba.glade:267 +msgid "Slot4" +msgstr "Plats4" + +#: src/gtk/vba.glade:159 +#: src/gtk/vba.glade:276 +msgid "Slot5" +msgstr "Plats5" + +#: src/gtk/vba.glade:168 +#: src/gtk/vba.glade:285 +msgid "Slot6" +msgstr "Plats6" + +#: src/gtk/vba.glade:177 +#: src/gtk/vba.glade:294 +msgid "Slot7" +msgstr "Plats7" + +#: src/gtk/vba.glade:186 +#: src/gtk/vba.glade:303 +msgid "Slot8" +msgstr "Plats8" + +#: src/gtk/vba.glade:195 +#: src/gtk/vba.glade:312 +msgid "Slot9" +msgstr "Plats9" + +#: src/gtk/vba.glade:204 +#: src/gtk/vba.glade:321 +msgid "Slot10" +msgstr "Plats10" + +#: src/gtk/vba.glade:217 +msgid "S_ave game" +msgstr "Sp_ara spel" + +#: src/gtk/vba.glade:226 +msgid "Oldest slot" +msgstr "Äldsta platsen" + +#: src/gtk/vba.glade:340 +msgid "_Pause" +msgstr "_Paus" + +#: src/gtk/vba.glade:350 +#: src/gtk/vba.glade:374 +msgid "_Reset" +msgstr "Åte_rställ" + +#: src/gtk/vba.glade:365 +msgid "Rece_nt" +msgstr "Se_naste" + +#: src/gtk/vba.glade:382 +msgid "_Freeze" +msgstr "_Frys" + +#: src/gtk/vba.glade:407 +msgid "_Import" +msgstr "_Importera" + +#: src/gtk/vba.glade:416 +#: src/gtk/vba.glade:437 +msgid "_Battery file..." +msgstr "_Batterifil..." + +#: src/gtk/vba.glade:428 +msgid "E_xport" +msgstr "E_xportera" + +#: src/gtk/vba.glade:455 +msgid "Screen capt_ure..." +msgstr "Ta skärm_bild..." + +#: src/gtk/vba.glade:469 +msgid "_Close" +msgstr "_Stäng" + +#: src/gtk/vba.glade:489 +msgid "_Exit" +msgstr "_Avsluta" + +#: src/gtk/vba.glade:514 +msgid "_Options" +msgstr "_Inställningar" + +#: src/gtk/vba.glade:523 +msgid "_Frameskip" +msgstr "Hoppa över _bildrutor" + +#: src/gtk/vba.glade:532 +msgid "_Throttle" +msgstr "_Throttle" + +#: src/gtk/vba.glade:541 +msgid "_No throttle" +msgstr "_Ingen throttle" + +#: src/gtk/vba.glade:550 +#: src/gtk/vba.glade:1315 +msgid "25%" +msgstr "25%" + +#: src/gtk/vba.glade:560 +#: src/gtk/vba.glade:1324 +msgid "50%" +msgstr "50%" + +#: src/gtk/vba.glade:570 +#: src/gtk/vba.glade:1334 +msgid "100%" +msgstr "100%" + +#: src/gtk/vba.glade:580 +msgid "150%" +msgstr "150%" + +#: src/gtk/vba.glade:590 +#: src/gtk/vba.glade:1344 +msgid "200%" +msgstr "200%" + +#: src/gtk/vba.glade:600 +msgid "_Other..." +msgstr "_Annan..." + +#: src/gtk/vba.glade:620 +#: src/gtk/vba.glade:981 +#: src/gtk/vba.glade:1415 +msgid "_Automatic" +msgstr "_Automatisk" + +#: src/gtk/vba.glade:629 +msgid "_0" +msgstr "_0" + +#: src/gtk/vba.glade:639 +#: src/gtk/vba.glade:1753 +msgid "_1" +msgstr "_1" + +#: src/gtk/vba.glade:649 +#: src/gtk/vba.glade:1762 +msgid "_2" +msgstr "_2" + +#: src/gtk/vba.glade:659 +#: src/gtk/vba.glade:1772 +msgid "_3" +msgstr "_3" + +#: src/gtk/vba.glade:669 +#: src/gtk/vba.glade:1782 +msgid "_4" +msgstr "_4" + +#: src/gtk/vba.glade:679 +msgid "_5" +msgstr "_5" + +#: src/gtk/vba.glade:689 +msgid "_6" +msgstr "_6" + +#: src/gtk/vba.glade:699 +msgid "_7" +msgstr "_7" + +#: src/gtk/vba.glade:709 +msgid "_8" +msgstr "_8" + +#: src/gtk/vba.glade:719 +msgid "_9" +msgstr "_9" + +#: src/gtk/vba.glade:733 +msgid "_Video" +msgstr "_Video" + +#: src/gtk/vba.glade:742 +msgid "_1x" +msgstr "_1x" + +#: src/gtk/vba.glade:751 +msgid "_2x" +msgstr "_2x" + +#: src/gtk/vba.glade:761 +msgid "_3x" +msgstr "_3x" + +#: src/gtk/vba.glade:771 +msgid "_4x" +msgstr "_4x" + +#: src/gtk/vba.glade:781 +msgid "_5x" +msgstr "_5x" + +#: src/gtk/vba.glade:791 +msgid "_6x" +msgstr "_6x" + +#: src/gtk/vba.glade:807 +msgid "_Layers" +msgstr "_Lager" + +#: src/gtk/vba.glade:816 +msgid "BG0" +msgstr "BG0" + +#: src/gtk/vba.glade:826 +msgid "BG1" +msgstr "BG1" + +#: src/gtk/vba.glade:836 +msgid "BG2" +msgstr "BG2" + +#: src/gtk/vba.glade:846 +msgid "BG3" +msgstr "BG3" + +#: src/gtk/vba.glade:856 +msgid "OBJ" +msgstr "OBJ" + +#: src/gtk/vba.glade:866 +msgid "WIN0" +msgstr "WIN0" + +#: src/gtk/vba.glade:876 +msgid "WIN1" +msgstr "WIN1" + +#: src/gtk/vba.glade:886 +msgid "OBJWIN" +msgstr "OBJWIN" + +#: src/gtk/vba.glade:904 +msgid "_Emulator" +msgstr "_Emulator" + +#: src/gtk/vba.glade:913 +msgid "Directories..." +msgstr "Kataloger..." + +#: src/gtk/vba.glade:921 +msgid "Pause when inactive window" +msgstr "Pausa när fönstret är inaktivt" + +#: src/gtk/vba.glade:930 +msgid "Show speed" +msgstr "Visa hastighet" + +#: src/gtk/vba.glade:939 +#: src/gtk/vba.glade:1030 +msgid "None" +msgstr "Ingen" + +#: src/gtk/vba.glade:948 +msgid "Percentage" +msgstr "Procent" + +#: src/gtk/vba.glade:958 +msgid "Detailed" +msgstr "Detaljerad" + +#: src/gtk/vba.glade:972 +msgid "Save type" +msgstr "Typ av sparning" + +#: src/gtk/vba.glade:990 +msgid "EEPROM" +msgstr "EEPROM" + +#: src/gtk/vba.glade:1000 +msgid "SRAM" +msgstr "SRAM" + +#: src/gtk/vba.glade:1010 +msgid "Flash" +msgstr "Flash" + +#: src/gtk/vba.glade:1020 +msgid "EEPROM+Sensor" +msgstr "EEPROM+Sensor" + +#: src/gtk/vba.glade:1046 +msgid "Flash 64K" +msgstr "Flash 64K" + +#: src/gtk/vba.glade:1055 +msgid "Flash 128K" +msgstr "Flash 128K" + +#: src/gtk/vba.glade:1075 +msgid "_Select BIOS file..." +msgstr "_Välj BIOS-fil..." + +#: src/gtk/vba.glade:1083 +msgid "_Use BIOS file" +msgstr "_Använd BIOS-fil" + +#: src/gtk/vba.glade:1098 +msgid "Screenshot format" +msgstr "Format för skärmbild" + +#: src/gtk/vba.glade:1107 +msgid "_PNG" +msgstr "_PNG" + +#: src/gtk/vba.glade:1116 +msgid "_BMP" +msgstr "_BMP" + +#: src/gtk/vba.glade:1134 +msgid "_Sound" +msgstr "_Ljud" + +#: src/gtk/vba.glade:1143 +msgid "O_ff" +msgstr "_Av" + +#: src/gtk/vba.glade:1152 +msgid "_Mute" +msgstr "_Tyst" + +#: src/gtk/vba.glade:1162 +msgid "_On" +msgstr "_På" + +#: src/gtk/vba.glade:1178 +msgid "Echo" +msgstr "Eko" + +#: src/gtk/vba.glade:1187 +msgid "Low pass filter" +msgstr "Lågpassfilter" + +#: src/gtk/vba.glade:1196 +msgid "Reverse stereo" +msgstr "Omvänd stereo" + +#: src/gtk/vba.glade:1211 +msgid "Channel _1" +msgstr "Kanal _1" + +#: src/gtk/vba.glade:1220 +msgid "Channel _2" +msgstr "Kanal _2" + +#: src/gtk/vba.glade:1229 +msgid "Channel _3" +msgstr "Kanal _3" + +#: src/gtk/vba.glade:1238 +msgid "Channel _4" +msgstr "Kanal _4" + +#: src/gtk/vba.glade:1247 +msgid "Channel _A" +msgstr "Kanal _A" + +#: src/gtk/vba.glade:1256 +msgid "Channel _B" +msgstr "Kanal _B" + +#: src/gtk/vba.glade:1271 +msgid "11 _Khz" +msgstr "11 _Khz" + +#: src/gtk/vba.glade:1280 +msgid "22 K_hz" +msgstr "22 K_hz" + +#: src/gtk/vba.glade:1290 +msgid "44 Kh_z" +msgstr "44 Kh_z" + +#: src/gtk/vba.glade:1306 +msgid "_Volume" +msgstr "_Volym" + +#: src/gtk/vba.glade:1354 +msgid "300%" +msgstr "300%" + +#: src/gtk/vba.glade:1364 +msgid "400%" +msgstr "400%" + +#: src/gtk/vba.glade:1382 +msgid "_Gameboy" +msgstr "_Gameboy" + +#: src/gtk/vba.glade:1391 +msgid "_Border" +msgstr "_Ram" + +#: src/gtk/vba.glade:1400 +msgid "_Printer" +msgstr "_Skrivare" + +#: src/gtk/vba.glade:1424 +msgid "_GBA" +msgstr "_GBA" + +#: src/gtk/vba.glade:1434 +msgid "_CGB/GBC" +msgstr "_CGB/GBC" + +#: src/gtk/vba.glade:1444 +msgid "_SGB" +msgstr "_SGB" + +#: src/gtk/vba.glade:1454 +msgid "SGB_2" +msgstr "SGB_2" + +#: src/gtk/vba.glade:1464 +msgid "G_B" +msgstr "G_B" + +#: src/gtk/vba.glade:1478 +msgid "F_ilter" +msgstr "F_ilter" + +#: src/gtk/vba.glade:1487 +msgid "Interframe _blending" +msgstr "Interframe _blending" + +#: src/gtk/vba.glade:1496 +#: src/gtk/vba.glade:1535 +msgid "_None" +msgstr "_Ingen" + +#: src/gtk/vba.glade:1505 +msgid "_Smart" +msgstr "_Smart" + +#: src/gtk/vba.glade:1515 +#: src/gtk/vba.glade:1594 +msgid "_Motion Blur" +msgstr "_Motion Blur" + +#: src/gtk/vba.glade:1544 +msgid "_TV Mode" +msgstr "_TV-format" + +#: src/gtk/vba.glade:1554 +msgid "_2xSaI" +msgstr "_2xSaI" + +#: src/gtk/vba.glade:1564 +msgid "_Super 2xSaI" +msgstr "_Super 2xSaI" + +#: src/gtk/vba.glade:1574 +msgid "Super _Eagle" +msgstr "Super _Eagle" + +#: src/gtk/vba.glade:1584 +msgid "_Pixelate" +msgstr "_Pixelate" + +#: src/gtk/vba.glade:1604 +msgid "_AdvanceMAME 2x" +msgstr "_AdvanceMAME 2x" + +#: src/gtk/vba.glade:1614 +msgid "S_imple 2x" +msgstr "S_imple 2x" + +#: src/gtk/vba.glade:1624 +msgid "Bilinea_r" +msgstr "Bilinjä_r" + +#: src/gtk/vba.glade:1634 +msgid "Bilinear Pl_us" +msgstr "Bilinjär Pl_us" + +#: src/gtk/vba.glade:1644 +msgid "S_canlines" +msgstr "S_canlines" + +#: src/gtk/vba.glade:1654 +msgid "h_q2x" +msgstr "h_q2x" + +#: src/gtk/vba.glade:1664 +msgid "_lq2x" +msgstr "_lq2x" + +#: src/gtk/vba.glade:1680 +msgid "_Disable MMX" +msgstr "_Stäng av MMX" + +#: src/gtk/vba.glade:1693 +msgid "_Joypad" +msgstr "_Kontroller" + +#: src/gtk/vba.glade:1702 +msgid "_Configure" +msgstr "_Konfigurera" + +#: src/gtk/vba.glade:1711 +msgid "_1..." +msgstr "_1..." + +#: src/gtk/vba.glade:1719 +msgid "_2..." +msgstr "_2..." + +#: src/gtk/vba.glade:1727 +msgid "_3..." +msgstr "_3..." + +#: src/gtk/vba.glade:1735 +msgid "_4..." +msgstr "_4..." + +#: src/gtk/vba.glade:1798 +msgid "_Autofire" +msgstr "_Autoskjut" + +#: src/gtk/vba.glade:1807 +msgid "_A" +msgstr "_A" + +#: src/gtk/vba.glade:1817 +msgid "_B" +msgstr "_B" + +#: src/gtk/vba.glade:1827 +msgid "_L" +msgstr "_L" + +#: src/gtk/vba.glade:1837 +msgid "_R" +msgstr "_R" + +#: src/gtk/vba.glade:1859 +msgid "_Tools" +msgstr "Verk_tyg" + +#: src/gtk/vba.glade:1868 +msgid "_GDB" +msgstr "_GDB" + +#: src/gtk/vba.glade:1877 +msgid "_Wait connection..." +msgstr "_Vänta på anslutning..." + +#: src/gtk/vba.glade:1885 +msgid "_Load and wait..." +msgstr "_Läs in och vänta..." + +#: src/gtk/vba.glade:1893 +msgid "_Break" +msgstr "_Bryt" + +#: src/gtk/vba.glade:1901 +msgid "_Disconnect" +msgstr "_Koppla ned" + +#: src/gtk/vba.glade:1917 +msgid "_Help" +msgstr "_Hjälp" + +#: src/gtk/vba.glade:1926 +msgid "_About" +msgstr "_Om" + +#: src/gtk/vba.glade:1967 +msgid "About VBA" +msgstr "Om VBA" + +#: src/gtk/vba.glade:2054 +msgid "An emulator for Gameboy(TM) and GameboyAdvance(TM)." +msgstr "En emulator för Gameboy(TM) och GameboyAdvance(TM)." + +#: src/gtk/vba.glade:2076 +msgid "Special thanks to Yann Parmentier aka \"kohai\" for the icons." +msgstr "Speciellt tack till Yann Parmentier aka \"kohai\" för ikonerna." + +#: src/gtk/vba.glade:2098 +msgid "Copyright (C) 2004 Forgotten and the VBA development team" +msgstr "Copyright (C) 2004 Forgotten och utvecklingslaget av VBA" + +#: src/gtk/vba.glade:2120 +msgid "Throttle" +msgstr "Throttle" + +#: src/gtk/vba.glade:2191 +msgid "Throttle : " +msgstr "Throttle : " + +#: src/gtk/vba.glade:2231 +msgid " %" +msgstr " %" + +#: src/gtk/vba.glade:2262 +msgid "Directories" +msgstr "Kataloger" + +#: src/gtk/vba.glade:2328 +msgid "GBA roms : " +msgstr "GBA-rom : " + +#: src/gtk/vba.glade:2358 +#: src/gtk/vba.glade:2511 +#: src/gtk/vba.glade:2612 +#: src/gtk/vba.glade:2713 +#: src/gtk/vba.glade:2790 +#: src/gtk/vba.glade:2921 +#: src/gtk/vba.glade:3207 +#: src/gtk/vba.glade:3229 +#: src/gtk/vba.glade:3251 +#: src/gtk/vba.glade:3273 +#: src/gtk/vba.glade:3295 +#: src/gtk/vba.glade:3317 +#: src/gtk/vba.glade:3339 +#: src/gtk/vba.glade:3361 +#: src/gtk/vba.glade:3383 +#: src/gtk/vba.glade:3405 +#: src/gtk/vba.glade:3427 +msgid "*" +msgstr "*" + +#: src/gtk/vba.glade:2429 +msgid "GB roms : " +msgstr "GB-rom : " + +#: src/gtk/vba.glade:2481 +msgid "Batteries : " +msgstr "Batterier : " + +#: src/gtk/vba.glade:2582 +msgid "Saves : " +msgstr "Sparningar : " + +#: src/gtk/vba.glade:2683 +msgid "Captures : " +msgstr "Skärmbilder : " + +#: src/gtk/vba.glade:2841 +msgid "Joypad config" +msgstr "Konfigurera kontroller" + +#: src/gtk/vba.glade:2937 +msgid "Down : " +msgstr "Ner : " + +#: src/gtk/vba.glade:2961 +msgid "Left : " +msgstr "Vänster : " + +#: src/gtk/vba.glade:2985 +msgid "Right : " +msgstr "Höger : " + +#: src/gtk/vba.glade:3009 +msgid "Button A : " +msgstr "Knapp A : " + +#: src/gtk/vba.glade:3033 +msgid "Button B : " +msgstr "Knapp B : " + +#: src/gtk/vba.glade:3057 +msgid "Button L : " +msgstr "Knapp L : " + +#: src/gtk/vba.glade:3081 +msgid "Button R : " +msgstr "Knapp R : " + +#: src/gtk/vba.glade:3105 +msgid "Select : " +msgstr "Välj : " + +#: src/gtk/vba.glade:3129 +msgid "Start : " +msgstr "Start : " + +#: src/gtk/vba.glade:3153 +msgid "Speed : " +msgstr "Hastighet : " + +#: src/gtk/vba.glade:3177 +msgid "Capture : " +msgstr "Skärmbild : " + +#: src/gtk/vba.glade:3443 +msgid "Up : " +msgstr "Upp : " + +#: src/gtk/vba.glade:3477 +msgid "TCP port" +msgstr "TCP-port" + +#: src/gtk/vba.glade:3548 +msgid "Port : " +msgstr "Port : " + +#: src/gtk/windowcallbacks.cpp:80 +#: src/gtk/windowcallbacks.cpp:94 +msgid "Load game" +msgstr "Läs in spel" + +#: src/gtk/windowcallbacks.cpp:109 +#: src/gtk/windowcallbacks.cpp:163 +msgid "VisualBoyAdvance save game" +msgstr "Sparat VisualBoyAdvance-spel" + +#: src/gtk/windowcallbacks.cpp:131 +#: src/gtk/windowcallbacks.cpp:146 +msgid "Save game" +msgstr "Spara spel" + +#: src/gtk/windowcallbacks.cpp:181 +#: src/gtk/windowcallbacks.cpp:466 +#: src/gtk/windowcallbacks.cpp:585 +msgid "File already exists. Overwrite it?" +msgstr "Filen existerar redan. Skriva över den?" + +#: src/gtk/windowcallbacks.cpp:318 +#: src/gtk/windowcallbacks.cpp:332 +msgid "Import battery file" +msgstr "Importera batterifil" + +#: src/gtk/windowcallbacks.cpp:347 +#: src/gtk/windowcallbacks.cpp:424 +msgid "Battery file" +msgstr "Batterifil" + +#: src/gtk/windowcallbacks.cpp:351 +#: src/gtk/windowcallbacks.cpp:428 +msgid "Flash save" +msgstr "Spara i Flash" + +#: src/gtk/windowcallbacks.cpp:362 +msgid "Importing a battery file will erase any saved games and reset the emulator. Do you want to continue?" +msgstr "Importera en batterifil kommer att radera alla sparade spel och återställa emulatorn. Vill du fortsätta?" + +#: src/gtk/windowcallbacks.cpp:380 +#, c-format +msgid "Failed to import battery file %s." +msgstr "Misslyckades att importera batterifil %s." + +#: src/gtk/windowcallbacks.cpp:392 +#: src/gtk/windowcallbacks.cpp:407 +msgid "Export battery file" +msgstr "Exportera batterifil" + +#: src/gtk/windowcallbacks.cpp:494 +#, c-format +msgid "Failed to export battery file %s." +msgstr "Misslyckades att exportera batterifil %s." + +#: src/gtk/windowcallbacks.cpp:506 +#: src/gtk/windowcallbacks.cpp:521 +msgid "Save screenshot" +msgstr "Spara skärmbild" + +#: src/gtk/windowcallbacks.cpp:538 +msgid "PNG image" +msgstr "PNG-bild" + +#: src/gtk/windowcallbacks.cpp:542 +msgid "BMP image" +msgstr "BMP-bild" + +#: src/gtk/windowcallbacks.cpp:824 +#: src/gtk/windowcallbacks.cpp:844 +msgid "Select directory" +msgstr "Välj katalog" + +#: src/gtk/windowcallbacks.cpp:872 +#: src/gtk/windowcallbacks.cpp:882 +msgid "Select BIOS file" +msgstr "Välj BIOS-fil" + +#: src/gtk/windowcallbacks.cpp:898 +msgid "All files" +msgstr "Alla filer" + +#: src/gtk/windowcallbacks.cpp:902 +msgid "Gameboy Advance BIOS" +msgstr "Gameboy Advance BIOS" + +#: src/gtk/windowcallbacks.cpp:1336 +msgid "Only GBA images are supported." +msgstr "Endast GBA-avbildningar stöds." + +#: src/gtk/window.cpp:1427 +#, c-format +msgid "Unknown file type %s" +msgstr "Okänd filtyp %s" + +#: src/gtk/window.cpp:1708 +#: src/gtk/window.cpp:1722 +msgid "Open" +msgstr "Öppna" + +#: src/gtk/window.cpp:1749 +msgid "All Gameboy Advance files" +msgstr "Alla Gameboy Advance-filer" + +#: src/gtk/window.cpp:1756 +msgid "Gameboy Advance files" +msgstr "Gameboy Advance-filer" + +#: src/gtk/window.cpp:1763 +msgid "Gameboy files" +msgstr "Gameboy-filer" + +#: src/gtk/window.cpp:1793 +msgid "Loaded battery" +msgstr "Läste in batteri" + +#: src/gtk/window.cpp:1812 +msgid "Saved battery" +msgstr "Sparade batteri" + +#: src/gtk/window.cpp:1870 +#: src/gtk/window.cpp:1917 +msgid "----/--/-- --:--:--" +msgstr "----/--/-- --:--:--" + +#: src/gtk/window.cpp:1902 +msgid "%Y/%m/%d %H:%M:%S" +msgstr "%Y/%m/%d %H:%M:%S" + +#: src/prof/prof.cpp:143 +msgid "No space for profiling buffer(s)\n" +msgstr "Inget utrymme för profilbuffert\n" + debian/patches/13_debugger_format.patch0000644000000000000000000000103512144742010015267 0ustar From: Etienne Millon Subject: Fix format string bug in debugging code --- a/src/sdl/debugger.cpp +++ b/src/sdl/debugger.cpp @@ -511,7 +511,7 @@ for(i = 0; i < t->enumeration->count; i++) { EnumMember *m = (EnumMember *)&t->enumeration->members[i]; if(value == m->value) { - printf(m->name); + printf("%s", m->name); return; } } @@ -2542,7 +2542,7 @@ /*extern*/ void debuggerOutput(char *s, u32 addr) { if(s) - printf(s); + printf("%s", s); else { char c; debian/patches/04_fix_gtk_with_DBKPT_SUPPORT.patch0000644000000000000000000000432111754227562017022 0ustar Author: Jose Carlos Medeiros Description: Enable console output (-DBKPT_SUPPORT). --- a/src/gtk/Makefile.am +++ b/src/gtk/Makefile.am @@ -5,6 +5,7 @@ noinst_LIBRARIES = libgba.a gvba_SOURCES = \ + debugger.cpp \ configfile.cpp \ configfile.h \ filters.cpp \ --- /dev/null +++ b/src/gtk/debugger.cpp @@ -0,0 +1,53 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include +#include + +#include "../GBA.h" +#include "../Port.h" +#include "../armdis.h" +#include "../elf.h" +#include "../exprNode.h" + +extern bool debugger; +extern int emulating; + +extern struct EmulatedSystem emulator; + +void debuggerBreakOnWrite(u32 *mem, u32 oldvalue, u32 value, int size) +{ + u32 address = 0; + if(mem >= (u32*)&workRAM[0] && mem <= (u32*)&workRAM[0x3ffff]) + address = 0x2000000 + ((unsigned long)mem - (unsigned long)&workRAM[0]); + else + address = 0x3000000 + ((unsigned long)mem - (unsigned long)&internalRAM[0]); + + if(size == 2) + printf("Breakpoint (on write) address %08x old:%08x new:%08x\n", + address, oldvalue, value); + else if(size == 1) + printf("Breakpoint (on write) address %08x old:%04x new:%04x\n", + address, (u16)oldvalue,(u16)value); + else + printf("Breakpoint (on write) address %08x old:%02x new:%02x\n", + address, (u8)oldvalue, (u8)value); + debugger = true; +} + debian/patches/09_deprecatedsigc++.patch0000644000000000000000000006216411754227565015271 0ustar Author: Kjang Gwreuung-Kuq Description: Inject deprecated libsigc++ code. From http://bugs.gentoo.org/215985 From ftp://ftp.uni-erlangen.de/pub/mirrors/gentoo/distfiles/visualboyadvance-1.7.2-deprecatedsigc++.patch.bz2 --- a/src/gtk/sigccompat.h +++ b/src/gtk/sigccompat.h @@ -20,7 +20,7 @@ #ifndef __VBA_SIGCCOMPAT_H__ #define __VBA_SIGCCOMPAT_H__ -#undef LIBSIGC_DISABLE_DEPRECATED +#define LIBSIGC_DISABLE_DEPRECATED #include #include @@ -28,9 +28,679 @@ #include #include -namespace SigC + +// From sigc++/bind.h +namespace SigC { + +template +inline ::sigc::bind_functor<-1, T_functor, + typename ::sigc::unwrap_reference::type> +bind(const T_functor& _A_functor, T_bound1 _A_b1) +{ return ::sigc::bind_functor<-1, T_functor, + typename ::sigc::unwrap_reference::type> + (_A_functor, _A_b1); +} + +template +inline ::sigc::bind_functor<-1, T_functor, + typename ::sigc::unwrap_reference::type, + typename ::sigc::unwrap_reference::type> +bind(const T_functor& _A_functor, T_bound1 _A_b1, T_bound2 _A_b2) +{ return ::sigc::bind_functor<-1, T_functor, + typename ::sigc::unwrap_reference::type, + typename ::sigc::unwrap_reference::type> + (_A_functor, _A_b1, _A_b2); +} + +template +inline ::sigc::bind_functor<-1, T_functor, + typename ::sigc::unwrap_reference::type, + typename ::sigc::unwrap_reference::type, + typename ::sigc::unwrap_reference::type> +bind(const T_functor& _A_functor, T_bound1 _A_b1, T_bound2 _A_b2,T_bound3 _A_b3) +{ return ::sigc::bind_functor<-1, T_functor, + typename ::sigc::unwrap_reference::type, + typename ::sigc::unwrap_reference::type, + typename ::sigc::unwrap_reference::type> + (_A_functor, _A_b1, _A_b2, _A_b3); +} + +} + +// From sigc++/connection.h +namespace SigC { + +/** Convinience class for safe disconnection. + * Iterators must not be used beyond the lifetime of the list + * they work on. A connection object can be created from a + * slot list iterator and may safely be used to disconnect + * the referred slot at any time (disconnect()). If the slot + * has already been destroyed, disconnect() does nothing. empty() or + * operator bool() can be used to test whether the connection is + * still active. The connection can be blocked (block(), unblock()). + * + * This is possible because the connection object gets notified + * when the referred slot dies (notify()). + * + * @deprecated Use sigc::connection instead. + * @ingroup compat + */ +typedef ::sigc::connection Connection; + +} + +// From sigc++/slot.h +namespace SigC { + +// SlotN +/** Converts an arbitrary functor to a unified type which is opaque. + * Slot0 itself is a functor or to be more precise a closure. It contains + * a single, arbitrary functor (or closure) that is executed in operator()(). + * + * The template arguments determine the function signature of operator()(): + * - @e T_return The return type of operator()(). + * + * To use simply assign the slot to the desired functor. If the functor + * is not compatible with the parameter list defined with the template + * arguments compiler errors are triggered. When called the slot + * will invoke the functor with minimal copies. + * block() and unblock() can be used to block the functor's invocation + * from operator()() temporarily. + * + * @par Example: + * @code + * #include + * void foo(int) {} + * SigC::Slot1 s = SigC::slot(&foo); + * s(19); + * @endcode + * + * @deprecated Use the unnumbered template sigc::slot instead. + * @ingroup compat + */ +template +class Slot0 + : public ::sigc::slot +{ +public: + typedef ::sigc::slot parent_type; + + /// Constructs an empty slot. + Slot0() {} + + /** Constructs a slot from an arbitrary functor. + * @param _A_func The desired functor the new slot should be assigned to. + */ + template + Slot0(const T_functor& _A_func) + : ::sigc::slot(_A_func) {} + + /** Constructs a slot, copying an existing one. + * @param src The existing slot to copy. + */ + Slot0(const parent_type& src) + : parent_type(src) {} + + /** Overrides this slot making a copy from another slot. + * @param src The slot from which to make a copy. + * @return @p this. + */ + Slot0& operator=(const parent_type& src) + { parent_type::operator=(src); return *this; } +}; + +/** Converts an arbitrary functor to a unified type which is opaque. + * Slot1 itself is a functor or to be more precise a closure. It contains + * a single, arbitrary functor (or closure) that is executed in operator()(). + * + * The template arguments determine the function signature of operator()(): + * - @e T_return The return type of operator()(). + * - @e T_arg1 Argument type used in the definition of operator()(). + * + * To use simply assign the slot to the desired functor. If the functor + * is not compatible with the parameter list defined with the template + * arguments compiler errors are triggered. When called the slot + * will invoke the functor with minimal copies. + * block() and unblock() can be used to block the functor's invocation + * from operator()() temporarily. + * + * @par Example: + * @code + * #include + * void foo(int) {} + * SigC::Slot1 s = SigC::slot(&foo); + * s(19); + * @endcode + * + * @deprecated Use the unnumbered template sigc::slot instead. + * @ingroup compat + */ +template +class Slot1 + : public ::sigc::slot +{ +public: + typedef ::sigc::slot parent_type; + + /// Constructs an empty slot. + Slot1() {} + + /** Constructs a slot from an arbitrary functor. + * @param _A_func The desired functor the new slot should be assigned to. + */ + template + Slot1(const T_functor& _A_func) + : ::sigc::slot(_A_func) {} + + /** Constructs a slot, copying an existing one. + * @param src The existing slot to copy. + */ + Slot1(const parent_type& src) + : parent_type(src) {} + + /** Overrides this slot making a copy from another slot. + * @param src The slot from which to make a copy. + * @return @p this. + */ + Slot1& operator=(const parent_type& src) + { parent_type::operator=(src); return *this; } +}; + +/** Converts an arbitrary functor to a unified type which is opaque. + * Slot2 itself is a functor or to be more precise a closure. It contains + * a single, arbitrary functor (or closure) that is executed in operator()(). + * + * The template arguments determine the function signature of operator()(): + * - @e T_return The return type of operator()(). + * - @e T_arg1 Argument type used in the definition of operator()(). + * - @e T_arg2 Argument type used in the definition of operator()(). + * + * To use simply assign the slot to the desired functor. If the functor + * is not compatible with the parameter list defined with the template + * arguments compiler errors are triggered. When called the slot + * will invoke the functor with minimal copies. + * block() and unblock() can be used to block the functor's invocation + * from operator()() temporarily. + * + * @par Example: + * @code + * #include + * void foo(int) {} + * SigC::Slot1 s = SigC::slot(&foo); + * s(19); + * @endcode + * + * @deprecated Use the unnumbered template sigc::slot instead. + * @ingroup compat + */ +template +class Slot2 + : public ::sigc::slot +{ +public: + typedef ::sigc::slot parent_type; + + /// Constructs an empty slot. + Slot2() {} + + /** Constructs a slot from an arbitrary functor. + * @param _A_func The desired functor the new slot should be assigned to. + */ + template + Slot2(const T_functor& _A_func) + : ::sigc::slot(_A_func) {} + + /** Constructs a slot, copying an existing one. + * @param src The existing slot to copy. + */ + Slot2(const parent_type& src) + : parent_type(src) {} + + /** Overrides this slot making a copy from another slot. + * @param src The slot from which to make a copy. + * @return @p this. + */ + Slot2& operator=(const parent_type& src) + { parent_type::operator=(src); return *this; } +}; + +/** Converts an arbitrary functor to a unified type which is opaque. + * Slot3 itself is a functor or to be more precise a closure. It contains + * a single, arbitrary functor (or closure) that is executed in operator()(). + * + * The template arguments determine the function signature of operator()(): + * - @e T_return The return type of operator()(). + * - @e T_arg1 Argument type used in the definition of operator()(). + * - @e T_arg2 Argument type used in the definition of operator()(). + * - @e T_arg3 Argument type used in the definition of operator()(). + * + * To use simply assign the slot to the desired functor. If the functor + * is not compatible with the parameter list defined with the template + * arguments compiler errors are triggered. When called the slot + * will invoke the functor with minimal copies. + * block() and unblock() can be used to block the functor's invocation + * from operator()() temporarily. + * + * @par Example: + * @code + * #include + * void foo(int) {} + * SigC::Slot1 s = SigC::slot(&foo); + * s(19); + * @endcode + * + * @deprecated Use the unnumbered template sigc::slot instead. + * @ingroup compat + */ +template +class Slot3 + : public ::sigc::slot +{ +public: + typedef ::sigc::slot parent_type; + + /// Constructs an empty slot. + Slot3() {} + + /** Constructs a slot from an arbitrary functor. + * @param _A_func The desired functor the new slot should be assigned to. + */ + template + Slot3(const T_functor& _A_func) + : ::sigc::slot(_A_func) {} + + /** Constructs a slot, copying an existing one. + * @param src The existing slot to copy. + */ + Slot3(const parent_type& src) + : parent_type(src) {} + + /** Overrides this slot making a copy from another slot. + * @param src The slot from which to make a copy. + * @return @p this. + */ + Slot3& operator=(const parent_type& src) + { parent_type::operator=(src); return *this; } +}; + +/** Converts an arbitrary functor to a unified type which is opaque. + * Slot4 itself is a functor or to be more precise a closure. It contains + * a single, arbitrary functor (or closure) that is executed in operator()(). + * + * The template arguments determine the function signature of operator()(): + * - @e T_return The return type of operator()(). + * - @e T_arg1 Argument type used in the definition of operator()(). + * - @e T_arg2 Argument type used in the definition of operator()(). + * - @e T_arg3 Argument type used in the definition of operator()(). + * - @e T_arg4 Argument type used in the definition of operator()(). + * + * To use simply assign the slot to the desired functor. If the functor + * is not compatible with the parameter list defined with the template + * arguments compiler errors are triggered. When called the slot + * will invoke the functor with minimal copies. + * block() and unblock() can be used to block the functor's invocation + * from operator()() temporarily. + * + * @par Example: + * @code + * #include + * void foo(int) {} + * SigC::Slot1 s = SigC::slot(&foo); + * s(19); + * @endcode + * + * @deprecated Use the unnumbered template sigc::slot instead. + * @ingroup compat + */ +template +class Slot4 + : public ::sigc::slot +{ +public: + typedef ::sigc::slot parent_type; + + /// Constructs an empty slot. + Slot4() {} + + /** Constructs a slot from an arbitrary functor. + * @param _A_func The desired functor the new slot should be assigned to. + */ + template + Slot4(const T_functor& _A_func) + : ::sigc::slot(_A_func) {} + + /** Constructs a slot, copying an existing one. + * @param src The existing slot to copy. + */ + Slot4(const parent_type& src) + : parent_type(src) {} + + /** Overrides this slot making a copy from another slot. + * @param src The slot from which to make a copy. + * @return @p this. + */ + Slot4& operator=(const parent_type& src) + { parent_type::operator=(src); return *this; } +}; + +/** Converts an arbitrary functor to a unified type which is opaque. + * Slot5 itself is a functor or to be more precise a closure. It contains + * a single, arbitrary functor (or closure) that is executed in operator()(). + * + * The template arguments determine the function signature of operator()(): + * - @e T_return The return type of operator()(). + * - @e T_arg1 Argument type used in the definition of operator()(). + * - @e T_arg2 Argument type used in the definition of operator()(). + * - @e T_arg3 Argument type used in the definition of operator()(). + * - @e T_arg4 Argument type used in the definition of operator()(). + * - @e T_arg5 Argument type used in the definition of operator()(). + * + * To use simply assign the slot to the desired functor. If the functor + * is not compatible with the parameter list defined with the template + * arguments compiler errors are triggered. When called the slot + * will invoke the functor with minimal copies. + * block() and unblock() can be used to block the functor's invocation + * from operator()() temporarily. + * + * @par Example: + * @code + * #include + * void foo(int) {} + * SigC::Slot1 s = SigC::slot(&foo); + * s(19); + * @endcode + * + * @deprecated Use the unnumbered template sigc::slot instead. + * @ingroup compat + */ +template +class Slot5 + : public ::sigc::slot +{ +public: + typedef ::sigc::slot parent_type; + + /// Constructs an empty slot. + Slot5() {} + + /** Constructs a slot from an arbitrary functor. + * @param _A_func The desired functor the new slot should be assigned to. + */ + template + Slot5(const T_functor& _A_func) + : ::sigc::slot(_A_func) {} + + /** Constructs a slot, copying an existing one. + * @param src The existing slot to copy. + */ + Slot5(const parent_type& src) + : parent_type(src) {} + + /** Overrides this slot making a copy from another slot. + * @param src The slot from which to make a copy. + * @return @p this. + */ + Slot5& operator=(const parent_type& src) + { parent_type::operator=(src); return *this; } +}; + +/** Converts an arbitrary functor to a unified type which is opaque. + * Slot6 itself is a functor or to be more precise a closure. It contains + * a single, arbitrary functor (or closure) that is executed in operator()(). + * + * The template arguments determine the function signature of operator()(): + * - @e T_return The return type of operator()(). + * - @e T_arg1 Argument type used in the definition of operator()(). + * - @e T_arg2 Argument type used in the definition of operator()(). + * - @e T_arg3 Argument type used in the definition of operator()(). + * - @e T_arg4 Argument type used in the definition of operator()(). + * - @e T_arg5 Argument type used in the definition of operator()(). + * - @e T_arg6 Argument type used in the definition of operator()(). + * + * To use simply assign the slot to the desired functor. If the functor + * is not compatible with the parameter list defined with the template + * arguments compiler errors are triggered. When called the slot + * will invoke the functor with minimal copies. + * block() and unblock() can be used to block the functor's invocation + * from operator()() temporarily. + * + * @par Example: + * @code + * #include + * void foo(int) {} + * SigC::Slot1 s = SigC::slot(&foo); + * s(19); + * @endcode + * + * @deprecated Use the unnumbered template sigc::slot instead. + * @ingroup compat + */ +template +class Slot6 + : public ::sigc::slot +{ +public: + typedef ::sigc::slot parent_type; + + /// Constructs an empty slot. + Slot6() {} + + /** Constructs a slot from an arbitrary functor. + * @param _A_func The desired functor the new slot should be assigned to. + */ + template + Slot6(const T_functor& _A_func) + : ::sigc::slot(_A_func) {} + + /** Constructs a slot, copying an existing one. + * @param src The existing slot to copy. + */ + Slot6(const parent_type& src) + : parent_type(src) {} + + /** Overrides this slot making a copy from another slot. + * @param src The slot from which to make a copy. + * @return @p this. + */ + Slot6& operator=(const parent_type& src) + { parent_type::operator=(src); return *this; } +}; + +/** Converts an arbitrary functor to a unified type which is opaque. + * Slot7 itself is a functor or to be more precise a closure. It contains + * a single, arbitrary functor (or closure) that is executed in operator()(). + * + * The template arguments determine the function signature of operator()(): + * - @e T_return The return type of operator()(). + * - @e T_arg1 Argument type used in the definition of operator()(). + * - @e T_arg2 Argument type used in the definition of operator()(). + * - @e T_arg3 Argument type used in the definition of operator()(). + * - @e T_arg4 Argument type used in the definition of operator()(). + * - @e T_arg5 Argument type used in the definition of operator()(). + * - @e T_arg6 Argument type used in the definition of operator()(). + * - @e T_arg7 Argument type used in the definition of operator()(). + * + * To use simply assign the slot to the desired functor. If the functor + * is not compatible with the parameter list defined with the template + * arguments compiler errors are triggered. When called the slot + * will invoke the functor with minimal copies. + * block() and unblock() can be used to block the functor's invocation + * from operator()() temporarily. + * + * @par Example: + * @code + * #include + * void foo(int) {} + * SigC::Slot1 s = SigC::slot(&foo); + * s(19); + * @endcode + * + * @deprecated Use the unnumbered template sigc::slot instead. + * @ingroup compat + */ +template +class Slot7 + : public ::sigc::slot { +public: + typedef ::sigc::slot parent_type; + + /// Constructs an empty slot. + Slot7() {} + + /** Constructs a slot from an arbitrary functor. + * @param _A_func The desired functor the new slot should be assigned to. + */ + template + Slot7(const T_functor& _A_func) + : ::sigc::slot(_A_func) {} + + /** Constructs a slot, copying an existing one. + * @param src The existing slot to copy. + */ + Slot7(const parent_type& src) + : parent_type(src) {} + + /** Overrides this slot making a copy from another slot. + * @param src The slot from which to make a copy. + * @return @p this. + */ + Slot7& operator=(const parent_type& src) + { parent_type::operator=(src); return *this; } +}; + + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +/* gcc 3.2 reports a strange conflict between SigC::slot() and sigc::slot<> + * when "using namespace SigC" and later using a slot(obj,func) overload + * without the prefix "SigC::". Probably a compiler bug. I will investigate. + * + * This ugly hack avoids the error: + */ +// #define slot(...) make_slot(__VA_ARGS__) /* only works for gcc */ +#endif + + +// slot() +/** Creates a functor of type SigC::Slot0 that wraps an existing non-member function. + * + * @param _A_func Pointer to function that should be wrapped. + * @return Functor that executes _A_func on invokation. + * + * @deprecated Use sigc::ptr_fun() instead. + * @ingroup compat + */ +template +inline Slot0 +slot(T_return (*_A_func)()) +{ return Slot0(_A_func); } + +/** Creates a functor of type SigC::Slot1 that wraps an existing non-member function. + * + * @param _A_func Pointer to function that should be wrapped. + * @return Functor that executes _A_func on invokation. + * + * @deprecated Use sigc::ptr_fun() instead. + * @ingroup compat + */ +template +inline Slot1 +slot(T_return (*_A_func)(T_arg1)) +{ return Slot1(_A_func); } + +/** Creates a functor of type SigC::Slot2 that wraps an existing non-member function. + * + * @param _A_func Pointer to function that should be wrapped. + * @return Functor that executes _A_func on invokation. + * + * @deprecated Use sigc::ptr_fun() instead. + * @ingroup compat + */ +template +inline Slot2 +slot(T_return (*_A_func)(T_arg1,T_arg2)) +{ return Slot2(_A_func); } + +/** Creates a functor of type SigC::Slot3 that wraps an existing non-member function. + * + * @param _A_func Pointer to function that should be wrapped. + * @return Functor that executes _A_func on invokation. + * + * @deprecated Use sigc::ptr_fun() instead. + * @ingroup compat + */ +template +inline Slot3 +slot(T_return (*_A_func)(T_arg1,T_arg2,T_arg3)) +{ return Slot3(_A_func); } + +/** Creates a functor of type SigC::Slot4 that wraps an existing non-member function. + * + * @param _A_func Pointer to function that should be wrapped. + * @return Functor that executes _A_func on invokation. + * + * @deprecated Use sigc::ptr_fun() instead. + * @ingroup compat + */ +template +inline Slot4 +slot(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4)) +{ return Slot4(_A_func); } + +/** Creates a functor of type SigC::Slot5 that wraps an existing non-member function. + * + * @param _A_func Pointer to function that should be wrapped. + * @return Functor that executes _A_func on invokation. + * + * @deprecated Use sigc::ptr_fun() instead. + * @ingroup compat + */ +template +inline Slot5 +slot(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5)) +{ return Slot5(_A_func); } + +/** Creates a functor of type SigC::Slot6 that wraps an existing non-member function. + * + * @param _A_func Pointer to function that should be wrapped. + * @return Functor that executes _A_func on invokation. + * + * @deprecated Use sigc::ptr_fun() instead. + * @ingroup compat + */ +template +inline Slot6 +slot(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6)) +{ return Slot6(_A_func); } + +/** Creates a functor of type SigC::Slot7 that wraps an existing non-member function. + * + * @param _A_func Pointer to function that should be wrapped. + * @return Functor that executes _A_func on invokation. + * + * @deprecated Use sigc::ptr_fun() instead. + * @ingroup compat + */ +template +inline Slot7 +slot(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7)) +{ return Slot7(_A_func); } + + + +} + +// From sigc++/object.h +namespace SigC { + +// Object +typedef ::sigc::trackable Object; + +} + +namespace SigC +{ template inline Slot0 slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)() ) debian/patches/01_use_dot_dir.patch0000644000000000000000000000641011754227560014450 0ustar Author: Jose Carlos Medeiros Description: Use a .vba dir to store all screen captures, save states and batteries. --- a/src/sdl/SDL.cpp +++ b/src/sdl/SDL.cpp @@ -177,6 +177,10 @@ char captureDir[2048]; char saveDir[2048]; char batteryDir[2048]; +char* homeDir = NULL; + +/* Directory within homedir to use for default save location. */ +#define DOT_DIR ".vba" static char *rewindMemory = NULL; static int rewindPos = 0; @@ -888,11 +892,10 @@ return f; } - char *home = getenv("HOME"); - - if(home != NULL) { - fprintf(stderr, "Searching home directory: %s\n", home); - sprintf(path, "%s%c%s", home, FILE_SEP, name); + if(homeDir) { + fprintf(stderr, "Searching home directory: %s%c%s\n", homeDir, FILE_SEP, + DOT_DIR); + sprintf(path, "%s%c%s%c%s", homeDir, FILE_SEP, DOT_DIR, FILE_SEP, name); f = fopen(path, "r"); if(f != NULL) return f; @@ -1356,6 +1359,8 @@ if(saveDir[0]) sprintf(stateName, "%s/%s%d.sgm", saveDir, sdlGetFilename(filename), num+1); + else if (homeDir) + sprintf(stateName, "%s/%s/%s%d.sgm", homeDir, DOT_DIR, sdlGetFilename(filename), num + 1); else sprintf(stateName,"%s%d.sgm", filename, num+1); @@ -1375,6 +1380,8 @@ if(saveDir[0]) sprintf(stateName, "%s/%s%d.sgm", saveDir, sdlGetFilename(filename), num+1); + else if (homeDir) + sprintf(stateName, "%s/%s/%s%d.sgm", homeDir, DOT_DIR, sdlGetFilename(filename), num + 1); else sprintf(stateName,"%s%d.sgm", filename, num+1); @@ -1393,6 +1400,8 @@ if(batteryDir[0]) sprintf(buffer, "%s/%s.sav", batteryDir, sdlGetFilename(filename)); + else if (homeDir) + sprintf(buffer, "%s/%s/%s.sav", homeDir, DOT_DIR, sdlGetFilename(filename)); else sprintf(buffer, "%s.sav", filename); @@ -1407,6 +1416,8 @@ if(batteryDir[0]) sprintf(buffer, "%s/%s.sav", batteryDir, sdlGetFilename(filename)); + else if (homeDir) + sprintf(buffer, "%s/%s/%s.sav", homeDir, DOT_DIR, sdlGetFilename(filename)); else sprintf(buffer, "%s.sav", filename); @@ -1947,6 +1958,7 @@ int main(int argc, char **argv) { + char buf[1024]; fprintf(stderr, "VisualBoyAdvance version %s [SDL]\n", VERSION); arg0 = argv[0]; @@ -1957,12 +1969,19 @@ ipsname[0] = 0; int op = -1; + struct stat s; frameSkip = 2; gbBorderOn = 0; parseDebug = true; + homeDir = getenv("HOME"); + snprintf(buf, 1024, "%s/%s", homeDir, DOT_DIR); + /* Make dot dir if not existent */ + if (stat(buf, &s) == -1 || !S_ISDIR(s.st_mode)) + mkdir(buf, 0755); + sdlReadPreferences(); sdlPrintUsage = 0; @@ -2907,6 +2926,8 @@ if(captureFormat) { if(captureDir[0]) sprintf(buffer, "%s/%s%02d.bmp", captureDir, sdlGetFilename(filename), a); + else if (homeDir) + sprintf(buffer, "%s/%s/%s%02d.bmp", homeDir, DOT_DIR, sdlGetFilename(filename), a); else sprintf(buffer, "%s%02d.bmp", filename, a); @@ -2914,6 +2935,8 @@ } else { if(captureDir[0]) sprintf(buffer, "%s/%s%02d.png", captureDir, sdlGetFilename(filename), a); + else if (homeDir) + sprintf(buffer, "%s/%s/%s%02d.png", homeDir, DOT_DIR, sdlGetFilename(filename), a); else sprintf(buffer, "%s%02d.png", filename, a); emulator.emuWritePNG(buffer); debian/patches/07_update_autoconf_macros.patch0000644000000000000000000001632612144734670016710 0ustar Author: Jose Carlos Medeiros Description: Update autoconf macros --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ AUTOMAKE_OPTIONS = gnu dist-zip -CORE_SUBDIRS = m4 src win32 +CORE_SUBDIRS = m4 src win32 po EXTRA_SUBDIRS = po --- a/acinclude.m4 +++ b/acinclude.m4 @@ -8,7 +8,9 @@ dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS dnl -AC_DEFUN(AM_PATH_SDL, + +# serial 40 AC_PROG_LIBTOOL +AC_DEFUN([AM_PATH_SDL], [dnl dnl Get the cflags and libraries from the sdl-config script dnl @@ -184,7 +186,7 @@ ACTION-IF-NOT-FOUND]]]) dnl Test for SMPEG, and define SMPEG_CFLAGS and SMPEG_LIBS dnl -AC_DEFUN(AM_PATH_SMPEG, +AC_DEFUN([AM_PATH_SMPEG], [dnl dnl Get the cflags and libraries from the smpeg-config script dnl @@ -388,8 +390,7 @@ ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. -# serial 40 AC_PROG_LIBTOOL -AC_DEFUN(AC_PROG_LIBTOOL, +AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl # Save cache, so that ltconfig can load it @@ -419,7 +420,7 @@ exec 5>>./config.log ]) -AC_DEFUN(AC_LIBTOOL_SETUP, +AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.13)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl @@ -499,16 +500,16 @@ ]) # AC_LIBTOOL_DLOPEN - enable checks for dlopen support -AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) +AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's -AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) # AC_ENABLE_SHARED - implement the --enable-shared flag # Usage: AC_ENABLE_SHARED[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. -AC_DEFUN(AC_ENABLE_SHARED, [dnl +AC_DEFUN([AC_ENABLE_SHARED], [dnl define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(shared, changequote(<<, >>)dnl @@ -534,14 +535,14 @@ ]) # AC_DISABLE_SHARED - set the default shared flag to --disable-shared -AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no)]) # AC_ENABLE_STATIC - implement the --enable-static flag # Usage: AC_ENABLE_STATIC[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. -AC_DEFUN(AC_ENABLE_STATIC, [dnl +AC_DEFUN([AC_ENABLE_STATIC], [dnl define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(static, changequote(<<, >>)dnl @@ -567,7 +568,7 @@ ]) # AC_DISABLE_STATIC - set the default static flag to --disable-static -AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no)]) @@ -575,7 +576,7 @@ # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. -AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl +AC_DEFUN([AC_ENABLE_FAST_INSTALL], [dnl define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(fast-install, changequote(<<, >>)dnl @@ -601,11 +602,11 @@ ]) # AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install -AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no)]) # AC_PROG_LD - find the path to the GNU or non-GNU linker -AC_DEFUN(AC_PROG_LD, +AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) @@ -675,7 +676,7 @@ AC_PROG_LD_GNU ]) -AC_DEFUN(AC_PROG_LD_GNU, +AC_DEFUN([AC_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then @@ -686,7 +687,7 @@ ]) # AC_PROG_NM - find the path to a BSD-compatible name lister -AC_DEFUN(AC_PROG_NM, +AC_DEFUN([AC_PROG_NM], [AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(ac_cv_path_NM, [if test -n "$NM"; then @@ -720,7 +721,7 @@ ]) # AC_CHECK_LIBM - check for math library -AC_DEFUN(AC_CHECK_LIBM, +AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case "$lt_target" in @@ -747,7 +748,7 @@ # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. -AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case "$enable_ltdl_convenience" in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes @@ -768,7 +769,7 @@ # not flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, main, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then @@ -789,13 +790,13 @@ ]) dnl old names -AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl -AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl -AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl -AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl -AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl -AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl -AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl +AC_DEFUN([AM_PROG_LIBTOOL], [indir([AC_PROG_LIBTOOL])])dnl +AC_DEFUN([AM_ENABLE_SHARED], [indir([AC_ENABLE_SHARED], $@)])dnl +AC_DEFUN([AM_ENABLE_STATIC], [indir([AC_ENABLE_STATIC], $@)])dnl +AC_DEFUN([AM_DISABLE_SHARED], [indir([AC_DISABLE_SHARED], $@)])dnl +AC_DEFUN([AM_DISABLE_STATIC], [indir([AC_DISABLE_STATIC], $@)])dnl +AC_DEFUN([AM_PROG_LD], [indir([AC_PROG_LD])])dnl +AC_DEFUN([AM_PROG_NM], [indir([AC_PROG_NM])])dnl dnl This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL])dnl --- a/configure.in +++ b/configure.in @@ -54,6 +54,7 @@ dnl Checks for programs. AC_PROG_CC +AM_PROG_CC_C_O AC_PROG_YACC AM_PROG_LEX AC_PROG_CXX @@ -142,7 +143,7 @@ ALL_LINGUAS="fr sv pt_BR" AM_GNU_GETTEXT(external) AC_CHECK_HEADERS(libintl.h) - GETTEXT_PACKAGE=vba-1.8.0 + GETTEXT_PACKAGE=vba AC_SUBST(GETTEXT_PACKAGE) PKG_CHECK_MODULES(GTKMM, gtkmm-$gtk_version >= 2.0.0 libglademm-$gtk_version >= 2.1.0) --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -30,8 +30,7 @@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ debian/patches/12_vba-linux-sdl.patch0000644000000000000000000003025011756373671014645 0ustar Author: Alphard Origin: http://sourceforge.net/tracker/index.php?func=detail&aid=1611621&group_id=63889&atid=505531 Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=456501 --- a/src/gtk/system.cpp +++ b/src/gtk/system.cpp @@ -58,12 +58,31 @@ // Sound stuff // -const int iSoundSamples = 2048; -const int iSoundTotalLen = iSoundSamples * 4; -static u8 auiSoundBuffer[iSoundTotalLen]; -static int iSoundLen; -static SDL_cond * pstSoundCond; -static SDL_mutex * pstSoundMutex; +const int sdlSoundSamples = 2048; +const int sdlSoundAlign = 4; +const int sdlSoundCapacity = sdlSoundSamples * 4; +const int sdlSoundTotalLen = sdlSoundCapacity + sdlSoundAlign; +static u8 sdlSoundBuffer[sdlSoundTotalLen]; +static int sdlSoundRPos; +static int sdlSoundWPos; +static SDL_cond *sdlSoundCond; +static SDL_mutex *sdlSoundMutex; + +static inline int soundBufferFree() +{ + int ret = sdlSoundRPos - sdlSoundWPos - sdlSoundAlign; + if (ret < 0) + ret += sdlSoundTotalLen; + return ret; +} + +static inline int soundBufferUsed() +{ + int ret = sdlSoundWPos - sdlSoundRPos; + if (ret < 0) + ret += sdlSoundTotalLen; + return ret; +} inline VBA::Window * GUI() { @@ -130,79 +149,69 @@ SDL_PauseAudio(0); } - bool bWait = true; - while (bWait && ! speedup && GUI()->iGetThrottle() == 0) - { - SDL_mutexP(pstSoundMutex); - if (iSoundLen < iSoundTotalLen) - { - bWait = false; + int remain = soundBufferLen; + const u8 *wave = reinterpret_cast(soundFinalWave); + if (remain <= 0) + return; + SDL_mutexP(sdlSoundMutex); + int n; + while (remain >= (n = soundBufferFree())) { + const int nAvail = ((sdlSoundTotalLen - sdlSoundWPos) + sdlSoundTotalLen) % sdlSoundTotalLen; + if (n >= nAvail) { + memcpy(&sdlSoundBuffer[sdlSoundWPos], wave, nAvail); + sdlSoundWPos = 0; + wave += nAvail; + remain -= nAvail; + n -= nAvail; } - SDL_mutexV(pstSoundMutex); - } - - int iLen = soundBufferLen; - int iCopied = 0; - if (iSoundLen + iLen >= iSoundTotalLen) - { - iCopied = iSoundTotalLen - iSoundLen; - memcpy(&auiSoundBuffer[iSoundLen], soundFinalWave, iCopied); - - iSoundLen = iSoundTotalLen; - SDL_CondSignal(pstSoundCond); - - bWait = true; - if (! speedup && GUI()->iGetThrottle() == 0) - { - while(bWait) - { - SDL_mutexP(pstSoundMutex); - if (iSoundLen < iSoundTotalLen) - { - bWait = false; - } - SDL_mutexV(pstSoundMutex); - } - - memcpy(auiSoundBuffer, ((u8 *)soundFinalWave) + iCopied, - soundBufferLen - iCopied); - - iSoundLen = soundBufferLen - iCopied; + if (n > 0) { + memcpy(&sdlSoundBuffer[sdlSoundWPos], wave, n); + sdlSoundWPos = (sdlSoundWPos + n) % sdlSoundTotalLen; + wave += n; + remain -= n; } - else - { - memcpy(auiSoundBuffer, ((u8 *)soundFinalWave) + iCopied, - soundBufferLen); + if (!emulating || speedup || GUI()->iGetThrottle() != 0) { + SDL_mutexV(sdlSoundMutex); + return; } + SDL_CondWait(sdlSoundCond, sdlSoundMutex); } - else - { - memcpy(&auiSoundBuffer[iSoundLen], soundFinalWave, soundBufferLen); - iSoundLen += soundBufferLen; + const int nAvail = ((sdlSoundTotalLen - sdlSoundWPos) + sdlSoundTotalLen) % sdlSoundTotalLen; + if (remain >= nAvail) { + memcpy(&sdlSoundBuffer[sdlSoundWPos], wave, nAvail); + sdlSoundWPos = 0; + wave += nAvail; + remain -= nAvail; + } + if (remain > 0) { + memcpy(&sdlSoundBuffer[sdlSoundWPos], wave, remain); + sdlSoundWPos = (sdlSoundWPos + remain) % sdlSoundTotalLen; } + SDL_mutexV(sdlSoundMutex); } -static void vSoundCallback(void * _pvUserData, u8 * _puiStream, int _iLen) +static void soundCallback(void *, u8 *stream, int len) { - if (! emulating) - { + if (len <= 0 || !emulating) return; + SDL_mutexP(sdlSoundMutex); + const int nAvail = soundBufferUsed(); + if (len > nAvail) + len = nAvail; + const int nAvail2 = ((sdlSoundTotalLen - sdlSoundRPos) + sdlSoundTotalLen) % sdlSoundTotalLen; + if (len >= nAvail2) { + memcpy(stream, &sdlSoundBuffer[sdlSoundRPos], nAvail2); + sdlSoundRPos = 0; + stream += nAvail2; + len -= nAvail2; + } + if (len > 0) { + memcpy(stream, &sdlSoundBuffer[sdlSoundRPos], len); + sdlSoundRPos = (sdlSoundRPos + len) % sdlSoundTotalLen; + stream += len; } - - SDL_mutexP(pstSoundMutex); - if (! speedup && GUI()->iGetThrottle() == 0) - { - while (iSoundLen < iSoundTotalLen && emulating) - { - SDL_CondWait(pstSoundCond, pstSoundMutex); - } - } - if (emulating) - { - memcpy(_puiStream, auiSoundBuffer, _iLen); - } - iSoundLen = 0; - SDL_mutexV(pstSoundMutex); + SDL_CondSignal(sdlSoundCond); + SDL_mutexV(sdlSoundMutex); } bool systemSoundInit() @@ -227,8 +236,8 @@ stAudio.format = AUDIO_S16SYS; stAudio.channels = 2; - stAudio.samples = iSoundSamples; - stAudio.callback = vSoundCallback; + stAudio.samples = sdlSoundSamples; + stAudio.callback = soundCallback; stAudio.userdata = NULL; if (SDL_OpenAudio(&stAudio, NULL) < 0) @@ -237,11 +246,11 @@ return false; } - pstSoundCond = SDL_CreateCond(); - pstSoundMutex = SDL_CreateMutex(); + sdlSoundCond = SDL_CreateCond(); + sdlSoundMutex = SDL_CreateMutex(); soundBufferTotalLen = soundBufferLen * 10; - iSoundLen = 0; + sdlSoundRPos = sdlSoundWPos = 0; systemSoundOn = true; return true; @@ -249,17 +258,17 @@ void systemSoundShutdown() { - SDL_mutexP(pstSoundMutex); + SDL_mutexP(sdlSoundMutex); int iSave = emulating; emulating = 0; - SDL_CondSignal(pstSoundCond); - SDL_mutexV(pstSoundMutex); + SDL_CondSignal(sdlSoundCond); + SDL_mutexV(sdlSoundMutex); - SDL_DestroyCond(pstSoundCond); - pstSoundCond = NULL; + SDL_DestroyCond(sdlSoundCond); + sdlSoundCond = NULL; - SDL_DestroyMutex(pstSoundMutex); - pstSoundMutex = NULL; + SDL_DestroyMutex(sdlSoundMutex); + sdlSoundMutex = NULL; SDL_CloseAudio(); --- a/src/sdl/SDL.cpp +++ b/src/sdl/SDL.cpp @@ -255,12 +255,31 @@ char screenMessageBuffer[21]; u32 screenMessageTime = 0; -// Patch #1382692 by deathpudding. -SDL_sem *sdlBufferLock = NULL; -SDL_sem *sdlBufferFull = NULL; -SDL_sem *sdlBufferEmpty = NULL; -u8 sdlBuffer[4096]; -int sdlSoundLen = 0; +const int sdlSoundSamples = 2048; +const int sdlSoundAlign = 4; +const int sdlSoundCapacity = sdlSoundSamples * 2; +const int sdlSoundTotalLen = sdlSoundCapacity + sdlSoundAlign; +static u8 sdlSoundBuffer[sdlSoundTotalLen]; +static int sdlSoundRPos; +static int sdlSoundWPos; +static SDL_cond *sdlSoundCond; +static SDL_mutex *sdlSoundMutex; + +static inline int soundBufferFree() +{ + int ret = sdlSoundRPos - sdlSoundWPos - sdlSoundAlign; + if (ret < 0) + ret += sdlSoundTotalLen; + return ret; +} + +static inline int soundBufferUsed() +{ + int ret = sdlSoundWPos - sdlSoundRPos; + if (ret < 0) + ret += sdlSoundTotalLen; + return ret; +} char *arg0; @@ -2945,72 +2964,76 @@ systemScreenMessage("Screen capture"); } -void soundCallback(void *,u8 *stream,int len) +static void soundCallback(void *, u8 *stream, int len) { - if (!emulating) + if (len <= 0 || !emulating) return; - - // Patch #1382692 by deathpudding. - /* since this is running in a different thread, speedup and - * throttle can change at any time; save the value so locks - * stay in sync */ - bool lock = (!speedup && !throttle) ? true : false; - - if (lock) - SDL_SemWait (sdlBufferFull); - - SDL_SemWait (sdlBufferLock); - memcpy (stream, sdlBuffer, len); - sdlSoundLen = 0; - SDL_SemPost (sdlBufferLock); - - if (lock) - SDL_SemPost (sdlBufferEmpty); + SDL_mutexP(sdlSoundMutex); + const int nAvail = soundBufferUsed(); + if (len > nAvail) + len = nAvail; + const int nAvail2 = ((sdlSoundTotalLen - sdlSoundRPos) + sdlSoundTotalLen) % sdlSoundTotalLen; + if (len >= nAvail2) { + memcpy(stream, &sdlSoundBuffer[sdlSoundRPos], nAvail2); + sdlSoundRPos = 0; + stream += nAvail2; + len -= nAvail2; + } + if (len > 0) { + memcpy(stream, &sdlSoundBuffer[sdlSoundRPos], len); + sdlSoundRPos = (sdlSoundRPos + len) % sdlSoundTotalLen; + stream += len; + } + SDL_CondSignal(sdlSoundCond); + SDL_mutexV(sdlSoundMutex); } void systemWriteDataToSoundBuffer() { - // Patch #1382692 by deathpudding. - if (SDL_GetAudioStatus () != SDL_AUDIO_PLAYING) - SDL_PauseAudio (0); - - if ((sdlSoundLen + soundBufferLen) >= 2048*2) { - bool lock = (!speedup && !throttle) ? true : false; - - if (lock) - SDL_SemWait (sdlBufferEmpty); - - SDL_SemWait (sdlBufferLock); - int copied = 2048*2 - sdlSoundLen; - memcpy (sdlBuffer + sdlSoundLen, soundFinalWave, copied); - sdlSoundLen = 2048*2; - SDL_SemPost (sdlBufferLock); - - if (lock) { - SDL_SemPost (sdlBufferFull); - - /* wait for buffer to be dumped by soundCallback() */ - SDL_SemWait (sdlBufferEmpty); - SDL_SemPost (sdlBufferEmpty); - - SDL_SemWait (sdlBufferLock); - memcpy (sdlBuffer, ((u8 *)soundFinalWave) + copied, - soundBufferLen - copied); - sdlSoundLen = soundBufferLen - copied; - SDL_SemPost (sdlBufferLock); - } - else { - SDL_SemWait (sdlBufferLock); - memcpy (sdlBuffer, ((u8 *) soundFinalWave) + copied, soundBufferLen); - SDL_SemPost (sdlBufferLock); - } - } - else { - SDL_SemWait (sdlBufferLock); - memcpy (sdlBuffer + sdlSoundLen, soundFinalWave, soundBufferLen); - sdlSoundLen += soundBufferLen; - SDL_SemPost (sdlBufferLock); + if (SDL_GetAudioStatus() != SDL_AUDIO_PLAYING) + { + SDL_PauseAudio(0); } + + int remain = soundBufferLen; + const u8 *wave = reinterpret_cast(soundFinalWave); + if (remain <= 0) + return; + SDL_mutexP(sdlSoundMutex); + int n; + while (remain >= (n = soundBufferFree())) { + const int nAvail = ((sdlSoundTotalLen - sdlSoundWPos) + sdlSoundTotalLen) % sdlSoundTotalLen; + if (n >= nAvail) { + memcpy(&sdlSoundBuffer[sdlSoundWPos], wave, nAvail); + sdlSoundWPos = 0; + wave += nAvail; + remain -= nAvail; + n -= nAvail; + } + if (n > 0) { + memcpy(&sdlSoundBuffer[sdlSoundWPos], wave, n); + sdlSoundWPos = (sdlSoundWPos + n) % sdlSoundTotalLen; + wave += n; + remain -= n; + } + if (!emulating || speedup || throttle) { + SDL_mutexV(sdlSoundMutex); + return; + } + SDL_CondWait(sdlSoundCond, sdlSoundMutex); + } + const int nAvail = ((sdlSoundTotalLen - sdlSoundWPos) + sdlSoundTotalLen) % sdlSoundTotalLen; + if (remain >= nAvail) { + memcpy(&sdlSoundBuffer[sdlSoundWPos], wave, nAvail); + sdlSoundWPos = 0; + wave += nAvail; + remain -= nAvail; + } + if (remain > 0) { + memcpy(&sdlSoundBuffer[sdlSoundWPos], wave, remain); + sdlSoundWPos = (sdlSoundWPos + remain) % sdlSoundTotalLen; + } + SDL_mutexV(sdlSoundMutex); } bool systemSoundInit() @@ -3040,26 +3063,35 @@ fprintf(stderr,"Failed to open audio: %s\n", SDL_GetError()); return false; } - soundBufferTotalLen = soundBufferLen*10; - // Patch #1382692 by deathpudding. - sdlBufferLock = SDL_CreateSemaphore (1); - sdlBufferFull = SDL_CreateSemaphore (0); - sdlBufferEmpty = SDL_CreateSemaphore (1); - sdlSoundLen = 0; + + sdlSoundCond = SDL_CreateCond(); + sdlSoundMutex = SDL_CreateMutex(); + + soundBufferTotalLen = soundBufferLen * 10; + sdlSoundRPos = sdlSoundWPos = 0; systemSoundOn = true; + return true; } void systemSoundShutdown() { - // Patch #1382692 by deathpudding. - SDL_CloseAudio (); //TODO: fix freeze - SDL_DestroySemaphore (sdlBufferLock); - SDL_DestroySemaphore (sdlBufferFull); - SDL_DestroySemaphore (sdlBufferEmpty); - sdlBufferLock = NULL; - sdlBufferFull = NULL; - sdlBufferEmpty = NULL; + SDL_mutexP(sdlSoundMutex); + int iSave = emulating; + emulating = 0; + SDL_CondSignal(sdlSoundCond); + SDL_mutexV(sdlSoundMutex); + + SDL_DestroyCond(sdlSoundCond); + sdlSoundCond = NULL; + + SDL_DestroyMutex(sdlSoundMutex); + sdlSoundMutex = NULL; + + SDL_CloseAudio(); + + emulating = iSave; + systemSoundOn = false; } void systemSoundPause() debian/compat0000644000000000000000000000000212143561516010370 0ustar 9 debian/rules0000755000000000000000000000175712144742010010253 0ustar #!/usr/bin/make -f export DEB_BUILD_MAINT_OPTIONS = hardening=-all,+fortify,+relro,+format export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed %: dh $@ override_dh_auto_configure: aclocal autoconf automake -a -c dh_auto_configure -- --sysconfdir=/etc --enable-gtk=2.4 --without-mmx override_dh_auto_build: for i in $$(ls po/*.po | sed 's/.po//'); do \ msgfmt -o $$i.gmo $$i.po; \ done dh_auto_build override_dh_installman: help2man src/sdl/VisualBoyAdvance \ -n VisualBoyAdvance -s 1 -N \ -o $(CURDIR)/debian/VisualBoyAdvance.1 sed -i -e 's/src\/sdl\///' $(CURDIR)/debian/VisualBoyAdvance.1 dh_installman override_dh_installchangelogs: cat ChangeLog ChangeLog.1.7.1 ChangeLog.1.7 ChangeLog.1.5.1 > debian/ChangeLog dh_installchangelogs clean: dh_testdir dh_testroot # Add here commands to clean up after the build process. [ ! -f Makefile ] || $(MAKE) clean find -name "Makefile" -delete find -name "Makefile.in" -delete find -type d -name ".deps" | xargs rm -rf; dh_clean debian/watch0000644000000000000000000000021311754232500010212 0ustar # watch control file for uscan version=3 opts="dversionmangle=s/\.dfsg//" \ http://sf.net/vba/VisualBoyAdvance-src-([\d+\.]+|\d+)\.tar\.gz debian/VisualBoyAdvance-gtk-32x32.xpm0000644000000000000000000001375711754216400014472 0ustar /* XPM */ static char * stock_vba_wm_32_xpm[] = { "32 32 243 2", " c None", ". c #302F30", "+ c #2B2B2B", "@ c #191919", "# c #181818", "$ c #232426", "% c #486D9E", "& c #5075A7", "* c #516D98", "= c #232323", "- c #24292E", "; c #6DA9EB", "> c #7AAFF7", ", c #6CA5F4", "' c #6DA2E7", ") c #6F95CA", "! c #839CC3", "~ c #8D9EBC", "{ c #2F2F2F", "] c #18191B", "^ c #608BBA", "/ c #87BDFD", "( c #79ADF7", "_ c #8ABAFB", ": c #98C5FD", "< c #A1CAFB", "[ c #9FC2F0", "} c #87A0C5", "| c #8591A8", "1 c #1E2023", "2 c #476285", "3 c #8DC4FE", "4 c #7EB2F7", "5 c #8DBCF8", "6 c #9DC8FC", "7 c #B8D8FF", "8 c #CFE3FF", "9 c #BCD6FB", "0 c #90ACD1", "a c #7A88A4", "b c #171A1D", "c c #374457", "d c #84BBF7", "e c #89BEFC", "f c #88B9F4", "g c #A3CAFC", "h c #BEDAFF", "i c #D8E8FF", "j c #C8DEFD", "k c #9AC0F1", "l c #77859C", "m c #1E1E1E", "n c #191B1E", "o c #242A37", "p c #81ACDD", "q c #95C7FE", "r c #87BAF9", "s c #98C4FD", "t c #A9CDFD", "u c #C1DCFF", "v c #B4D4FE", "w c #A1C8FC", "x c #718EB9", "y c #2E2E2E", "z c #18191A", "A c #1B202A", "B c #6B8CB7", "C c #94C5FE", "D c #94C0FB", "E c #95BFF9", "F c #A9CDF9", "G c #A6CCFD", "H c #A4CCFF", "I c #97C3FC", "J c #7CA5E0", "K c #5D749F", "L c #171B21", "M c #485C7B", "N c #8DBFFC", "O c #92C2FD", "P c #92BFFA", "Q c #95C0F8", "R c #93BFFB", "S c #94C1FE", "T c #88BAFD", "U c #75ACF5", "V c #64799B", "W c #1B1B1B", "X c #18181A", "Y c #373F4D", "Z c #81B4F0", "` c #95C6FE", " . c #8EBEFD", ".. c #89B9FB", "+. c #80B2FC", "@. c #88B9FD", "#. c #82B8FE", "$. c #70ACF8", "%. c #4B668C", "&. c #2E2F2E", "*. c #1C1D20", "=. c #6A8AB4", "-. c #7CA8E0", ";. c #7AA8E2", ">. c #74A4E0", ",. c #6998D6", "'. c #6894CC", "). c #5A8ECC", "!. c #5279A9", "~. c #3A465A", "{. c #3A3B39", "]. c #232527", "^. c #333841", "/. c #2C323D", "(. c #262D3A", "_. c #202734", ":. c #1F2632", "<. c #1C222D", "[. c #1B1F28", "}. c #1E2024", "|. c #292A2A", "1. c #373638", "2. c #323032", "3. c #1C1D1E", "4. c #191A1D", "5. c #181B1E", "6. c #212326", "7. c #201F20", "8. c #242323", "9. c #272726", "0. c #242424", "a. c #564141", "b. c #313130", "c. c #1E1E1F", "d. c #1F1F1F", "e. c #292828", "f. c #302E2E", "g. c #3C3839", "h. c #383232", "i. c #373332", "j. c #2B2828", "k. c #1D1D1C", "l. c #532322", "m. c #780202", "n. c #3B3434", "o. c #595455", "p. c #5A585B", "q. c #424040", "r. c #363636", "s. c #3A3939", "t. c #474646", "u. c #663436", "v. c #682325", "w. c #6E4446", "x. c #5C1818", "y. c #361B1A", "z. c #631010", "A. c #5E1919", "B. c #323030", "C. c #585256", "D. c #757174", "E. c #87858A", "F. c #686468", "G. c #484344", "H. c #484445", "I. c #585254", "J. c #7D2B30", "K. c #7E2A2A", "L. c #633D3E", "M. c #771D1E", "N. c #211E1E", "O. c #292726", "P. c #3B3636", "Q. c #292627", "R. c #3F3C3D", "S. c #5C565A", "T. c #6F6A70", "U. c #7A7880", "V. c #78797E", "W. c #292929", "X. c #272727", "Y. c #656066", "Z. c #494244", "`. c #3B3638", " + c #333132", ".+ c #332F30", "++ c #1B1A1A", "@+ c #1C1C1C", "#+ c #222020", "$+ c #2D2A2B", "%+ c #4C4648", "&+ c #6C676C", "*+ c #555458", "=+ c #4F4F4F", "-+ c #1D1D1D", ";+ c #262727", ">+ c #58565C", ",+ c #464243", "'+ c #3C393A", ")+ c #2C2A2B", "!+ c #191818", "~+ c #353032", "{+ c #574F52", "]+ c #484548", "^+ c #474A49", "/+ c #4F4E53", "(+ c #3D3C3D", "_+ c #212121", ":+ c #383234", "<+ c #343132", "[+ c #464848", "}+ c #313131", "|+ c #1F1F20", "1+ c #474649", "2+ c #262526", "3+ c #444647", "4+ c #444145", "5+ c #252525", "6+ c #434444", "7+ c #626464", "8+ c #4E4A50", "9+ c #282626", "0+ c #3E3F3F", "a+ c #525353", "b+ c #504B52", "c+ c #292829", "d+ c #1A1A1A", "e+ c #201F1E", "f+ c #3E3E3E", "g+ c #424141", "h+ c #595458", "i+ c #322F2F", "j+ c #232222", "k+ c #3C3C3B", "l+ c #282828", "m+ c #343233", "n+ c #2C2C2B", "o+ c #2B2B2A", "p+ c #222222", "q+ c #202020", "r+ c #3C3C3D", "s+ c #333333", "t+ c #2B2A29", " ", " ", " . + ", " @ # $ % & * ", " = # - ; > , ' ) ! ~ ", " { # ] ^ / ( _ : < [ } | ", " # 1 2 3 4 5 6 7 8 9 0 a ", " # b c d e f g h i j k l ", " m n o p q r s t u v w x ", " y z A B C D E F G H I J K ", " # L M N O P Q R S T U V ", " W X Y Z ` ...+.@.#.$.%. ", " &.# *.=.-.;.>.,.'.).!.~. ", " {.# # ].^./.(._.:.<.[.}.|. ", " m 1.2.m 3.4.5.6.$ 7.8.9.0.a. ", " b.c.W d.= e.f.g.h.i.j.k.# l.m.n.o. ", " p.q.r.s.t.u.v.w.x.@ # # y.z.A.B.C.D.E. ", " 0.F.G.H.I.J.K.L.M.N.# # # O.P.Q.R.S.T.U.V. ", " W.X.Y.Z.`. +.+8.++# # # # # @+#+$+%+&+*+=+ ", " -+;+>+,+'+)+# # # # # # # # !+~+{+]+^+ ", " # 0./+(+_+# # # # # # # # ++:+<+[+ ", " }+# |+1+2+# # # # # # # # # d.3+ ", " 0.# @+4+5+# # # # # # # m 6+7+ ", " m # W 8+9+# # # # # -+0+a+ ", " # # @+b+c+d+# # e+f+g+ ", " r.# # @+h+i+# j+k+s. ", " l+# # @ m+n+r.o+ ", " p+# # q+r+q+ ", " @+# s+y ", " @ t+ ", " ", " "}; debian/visualboyadvance-gtk.menu0000644000000000000000000000027411754216400014201 0ustar ?package(visualboyadvance-gtk):needs="X11" section="Applications/Emulators"\ title="VisualBoyAdvance" command="/usr/bin/gvba"\ icon="/usr/share/pixmaps/VisualBoyAdvance-gtk-32x32.xpm" debian/README.source0000644000000000000000000000053011754216400011343 0ustar Getting the upstream source --------------------------- The current version, 1.8.0, can be fetched from upstream CVS with the following commands: cvs -d:pserver:anonymous@vba.cvs.sourceforge.net:/cvsroot/vba login cvs -z3 -d:pserver:anonymous@vba.cvs.sourceforge.net:/cvsroot/vba co -P VisualBoyAdvance The password field can be left blank. debian/clean0000644000000000000000000000023512144742010010166 0ustar aclocal.m4 config.guess config.log config.status config.sub configure debian/ChangeLog debian/VisualBoyAdvance.1 po/*.gmo po/POTFILES po/stamp-po po/vba.pot debian/visualboyadvance.install0000644000000000000000000000024312144251060014107 0ustar usr/bin/VisualBoyAdvance usr/share/VisualBoyAdvance/vba-64.png usr/share/VisualBoyAdvance/vba.glade usr/share/locale/*/LC_MESSAGES/vba.mo etc/VisualBoyAdvance.cfg debian/visualboyadvance.manpages0000644000000000000000000000003211754216400014235 0ustar debian/VisualBoyAdvance.1 debian/copyright0000644000000000000000000000263512144251041011121 0ustar This package was debianized by Joshua Kwan on Tue, 17 Feb 2004 00:53:49 -0800. It was downloaded from: http://sourceforge.net/projects/vba Upstream Author: Forgotten , Sébastien Guignot Copyright: Copyright (C) 1999-2003 Forgotten Copyright (C) 2004 Forgotten and the VBA development team Copyright (C) 2004-2006 VBA development team Copyright (C) 1998 Gilles Vollant Copyright (C) 2002 Ben Parnell Copyright (C) 1999-2003 Andrea Mazzoleni Copyright (C) 1995-2002 Jean-loup Gailly This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. On Debian systems, the complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'. debian/dirs0000644000000000000000000000000511754216400010045 0ustar etc/ debian/docs0000644000000000000000000000002411754216400010035 0ustar AUTHORS NEWS README debian/source/0000755000000000000000000000000011754502727010500 5ustar debian/source/format0000644000000000000000000000001411754227557011713 0ustar 3.0 (quilt) debian/control0000644000000000000000000000376412144737623010614 0ustar Source: visualboyadvance Section: otherosfs Priority: optional Maintainer: Debian Games Team Uploaders: Etienne Millon Build-Depends: automake, autotools-dev, debhelper (>= 9), docbook-to-man, help2man, libglademm-2.4-dev, libgtkmm-2.4-dev, libpng-dev, libsdl1.2-dev, libtool, libx11-dev, libxt-dev, nasm [i386 kfreebsd-i386 hurd-i386 lpia], x11proto-core-dev, zlib1g-dev Standards-Version: 3.9.4 Homepage: http://sourceforge.net/projects/vba Vcs-Git: git://anonscm.debian.org/pkg-games/visualboyadvance.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-games/visualboyadvance.git Package: visualboyadvance Architecture: any Depends: ${misc:Depends}, ${shlibs:Depends} Suggests: joy2key Description: full featured Game Boy Advance emulator VisualBoyAdvance is a Game Boy Advance emulator that works with many ROMs that are publically available. It features save states (like those that are available in ZSNES), full screen support, joystick support, the all-important 'speedup emulation' key for impatient gamers, and a lot more. . It also contains many useful tools for Game Boy Advance developers, such as powerful GDB and gprof integration. . This package contains a version of VisualBoyAdvance compiled with the original GUI-less SDL interface. Package: visualboyadvance-gtk Architecture: any Depends: visualboyadvance (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends} Description: GTK+ front-end to VisualBoyAdvance emulator VisualBoyAdvance is a Game Boy Advance emulator that works with many ROMs that are publically available. It features save states (like those that are available in ZSNES), full screen support, joystick support, the all-important 'speedup emulation' key for impatient gamers, and a lot more. . It also contains many useful tools for Game Boy Advance developers, such as powerful GDB and gprof integration. . This package contains a version of VisualBoyAdvance with GTK+ support. debian/changelog0000644000000000000000000002204212144742010011033 0ustar visualboyadvance (1.8.0.dfsg-2) unstable; urgency=low * Switch to dh short form: - Bump dh compatibility to 9 - Enable build flags support - Enable hardening * Bump S-V to 3.9.4 (no changes needed). * New patches: - correct a format string bug. - don't regenerate vba.pot and *.po (fixes FTBFS if building twice). * Suggest joy2key for joypad support. (Closes: #706721) * Add Keywords entry to desktop file. * Canonicalize Vcs-* fields. -- Etienne Millon Wed, 15 May 2013 13:58:15 +0200 visualboyadvance (1.8.0.dfsg-1) unstable; urgency=low [ Etienne Millon ] * Team upload. * Acknowledge NMU, thank you Julien ! * Uploaders: - Add myself. - Remove Evgeni Golov (per request). - Remove Nick Ellery (mail bounced). * Switch to 3.0 (quilt) format. - Bump debhelper compatibility level to 7. * debian/rules : - Add --as-needed to linker flags. - Add build-{arch,indep} targets. - Use "find -delete" instead of "xargs rm -f". * debian/control : - Build-Depend on libpng-dev instead of libpng12-dev (Closes: #662538). - Bump Standards-Version to 3.9.3 (no changes needed). * debian/copyright : - remove 2xSaImmx.asm copyright information as it is not present anymore. - link to GPL-2 instead of the GPL symlink in common-licenses. * New patches : - fix FTBFS with zlib. (Closes: #663943). Thanks to Peter Green. - fix FTBFS with libpng 1.5 (Closes: #649804). Thanks to Nobuhiro Iwamatsu. - fix sound with SDL (Closes: #456501). Thanks to Alphard. * debian/watch : mangle "dfsg" part. [ Evgeni Golov ] * Remove Ola Lundqvist from Uploaders. -- Etienne Millon Mon, 21 May 2012 22:49:18 +0200 visualboyadvance (1.8.0.dfsg-0.1) unstable; urgency=low * Non-maintainer upload. * Drop src/i386/2xSaImmx.asm from the tarball, it doesn't allow commercial use. Pass --without-mmx to configure (closes: #607598). * debian/rules sets $(confflags) based on DEB_{HOST,BUILD}_GNU_TYPE, use it. -- Julien Cristau Thu, 06 Jan 2011 19:19:18 +0100 visualboyadvance (1.8.0-6) unstable; urgency=low [ Nick Ellery ] * Add debian/README.source to explain where to get upstream source. [ Evgeni Golov ] * Add 09_deprecatedsigc++.dpatch from Gentoo to fix FTBFS with recent libsigc++. Closes: #569461 * debian/control: + Add myself to Uploaders. + Wrap Build-Depends. + Standards-Version: 3.8.4. -- Evgeni Golov Thu, 18 Mar 2010 11:38:37 +0100 visualboyadvance (1.8.0-5) unstable; urgency=low * debian/control: - Change maintainer to pkg-games (Closes: #529682). - Add myself to uploaders. - Change section to otherosfs - Change obsolete build-dep on x-dev to x11proto-core-dev (Closes: #515400) - Add lpia build-depends on nasm for Ubuntu. - Update vba-gtk description to mention GTK+ support (Closes: #498553). - Change priority to optional (LP: #381131). - Update standards-version to 3.8.2, no changes necessary. - Drop the 'a' from the start of both short descriptions. - Use (= {$binary:Version}) for vba-gtk dependency on vba. - Add Vcs* headers for pkg-games git. * debian/copyright: - Add missing copyright holders. - Change license to mention acceptable later versions of GPL. * debian/rules: - Remove unnecessary comments. - Pass --host/--build conditionally for autotools/automake - Don't overwrite CFLAGS. - Install vba-gtk files through visualboyadvance-gtk.install rather than in install. - Don't pollute .diff.gz with config.* files. * debian/patches/* - Add missing dpatch descriptions. * Add desktop file from Ubuntu, thanks Dennis Craven (Closes: #481479). * Rename xpm icon in debian/ to VisualBoyAdvance-gtk-32x32.xpm. * Drop unnecessary po/vba.pot. * Revert changes in po/fr.po. -- Nick Ellery Wed, 15 Jul 2009 15:03:38 -0700 visualboyadvance (1.8.0-4) unstable; urgency=low * debian/control: - Bump Standards-Version: 3.7.3. - Added Homepage header. - Solved spelling error GTK to GTK+ in gtk binary description. - Build-Depends standard gcc/g++. (Closes: #463303) * Added 08_gvba_load_gb_rom.dpatch to solve segmentation fault. Thanks to Javier Serrano Polo . (Closes: #452796) * debian/copyright: - Updated with 2xSaImmx.asm license. (Closes: #441978) * Updated debian/visualboyadvance-gtk.menu with Applications section. -- Jose Carlos Medeiros Tue, 25 Mar 2008 01:10:31 -0300 visualboyadvance (1.8.0-3) unstable; urgency=low * visualboyadvance-gtk Depends on visualboyadvance (>= 1.8.0-2). (Closes: #434724) -- Jose Carlos Medeiros Thu, 09 Aug 2007 11:04:30 -0300 visualboyadvance (1.8.0-2) unstable; urgency=low * Updated and re-added 02_amd64_build_fix dpatch. (Closes: #425196) * Solved FTBFS on kfreebsd-i386, added build-dep on nasm. (Closes: #403029) * With 1.8.0 version, a buffer overflow bug was solved. (Closes: #384804) * Separated GTK version in another package. (Closes: #371239) - Created a gvba.1 man file. - Changed .menu file to this new package. * Added help2man, to always generate a updated vba man file. (Closes: #404837) -- Jose Carlos Medeiros Tue, 29 May 2007 15:45:31 -0300 visualboyadvance (1.8.0-1) unstable; urgency=low * New upstream release * Bump Standards-Version: 3.7.2. * Added libcairomm-1.0-dev build-dependence. * Updated debian/watch file. * Created 06_old_2xSaImmx_asm.dpatch with old 2xSaImmx.asm file, because new file doesnt works. * Build depends on g++-4.1 instead of g++, Policy Manual, sec 4.2. * Solved bug that remove previous screenshots. (Closes: #267645) -- Jose Carlos Medeiros Wed, 6 Dec 2006 20:53:24 -0200 visualboyadvance (1.7.2-6) unstable; urgency=low * Changed C/C++ Optmization to 0 (-O0)., now VBA compiles with >= g++4.0. (closes: #334235) * Changed build-depends and rules to make VBA build with >= g++4.0. * Added autotools-dev as build-dependence. * Removed unused debian/post{inst|rm} files. * Enable Console Output (-DBKPT_SUPPORT), added 04_fix_gtk_with_DBKPT_SUPPORT patch. (closes: #260031) * Removed debian/compat and set DH_COMPAT var in debian/rules. * Updated to DH_COMPAT=5 * Added Brazilian Portuguese po translation. Thanks to Jose Carlos Medeiros -- Jose Carlos Medeiros Mon, 13 Mar 2006 18:17:00 -0300 visualboyadvance (1.7.2-5) unstable; urgency=low * Added Swedish po translation, thanks to Daniel Nylander . (closes: #343223) * Added g++-3.3 as build-depends, and updated rules to compile with g++-3.3.(closes: #334235) -- Jose Carlos Medeiros Fri, 3 Feb 2006 16:55:52 -0200 visualboyadvance (1.7.2-4.1) unstable; urgency=low * Non-maintainer upload. * Replace build-dependency on xlibs-dev with an explicit build-dependency on each required package. (Closes: #346989) -- Steinar H. Gunderson Sat, 21 Jan 2006 13:18:31 +0100 visualboyadvance (1.7.2-4) unstable; urgency=low * New maintainer. (closes: #313135) * Added suport to GTK+ GUI front-end. (closes: #257316) * Correct download address in the copyright file and added debian/watch file. * Added debian/docs file. * Deleted README.Debian, this file has not important information. * Added menu, postinst, postrm and VisualBoyAdvance-32x32.xpm files in debian directory. * Updated all debian/rules file. -- Jose Carlos Medeiros Tue, 11 Oct 2005 11:45:38 -0300 visualboyadvance (1.7.2-3) unstable; urgency=low * QA upload. * Added kfreebsd-i386 to the list of architectures that build-depend on nasm. -- Aurelien Jarno Sun, 9 Oct 2005 12:34:28 +0200 visualboyadvance (1.7.2-2) unstable; urgency=medium * Orphaning this package, but I'll clean up as much as I can now. * Define BKPT_SUPPORT to allow console output for debugging. * Do create ~/.vba if it doesn't exist. closes: #316109 * Apply patch from Andreas Jochens to fix build on AMD64. closes: #300786 * Correct the address of the FSF in the copyright file. -- Joshua Kwan Sun, 9 Oct 2005 01:41:35 -0700 visualboyadvance (1.7.2-1) unstable; urgency=low * New comaintainer (from upstream) Sébastien Guignot. * Joshua Kwan - Move into main. VBA is not just any old emulator, but also a powerful debugger. - Change description to suit. - Patch work: + 01_use_dot_dir: be like ZSNES and use a .vba dir to store all screen captures, save states and batteries * Sébastien Guignot - New upstream release 1.7.2. -- Joshua Kwan Thu, 1 Apr 2004 19:45:08 -0500 visualboyadvance (1.7.1-1) unstable; urgency=low * Initial release (closes: #172929) * Wrote a SGML manpage for VisualBoyAdvance binary. -- Joshua Kwan Tue, 17 Feb 2004 16:48:54 -0800 debian/visualboyadvance.links0000644000000000000000000000015211754216400013565 0ustar usr/bin/VisualBoyAdvance usr/bin/vba usr/share/man/man1/VisualBoyAdvance.1.gz usr/share/man/man1/vba.1.gz