all repos — mgba @ e2e48a1c5830562c876b7959698bdefec91a8468

mGBA Game Boy Advance Emulator

Merge branch 'master' (early part) into medusa
Vicki Pfau vi@endrift.com
Fri, 28 Jun 2019 17:14:00 -0700
commit

e2e48a1c5830562c876b7959698bdefec91a8468

parent

342ace070a4360d77df9a96ec20b7d8a4dabd2cc

M CHANGESCHANGES

@@ -22,6 +22,7 @@ 0.8.0: (Future)

Features: - Improved logging configuration - One-Player BattleChip/Progress/Beast Link Gate support + - Add Game Boy Color palettes for original Game Boy games Bugfixes: - GBA: All IRQs have 7 cycle delay (fixes mgba.io/i/539, mgba.io/i/1208) - GBA: Reset now reloads multiboot ROMs

@@ -35,6 +36,17 @@ - Qt: Fix audio context holding onto closed game controller

- Switch: Fix gyroscope orientation (fixes mgba.io/i/1300) - GBA SIO: Prevent writing read-only multiplayer bits - Qt: Fix color picking in sprite view (fixes mgba.io/i/1307) + - GB: Fix crash when accessing SRAM if no save loaded and cartridge has no SRAM + - Python: Fix crash when deleting files owned by library + - Python: Make sure GB link object isn't GC'd before GB object + - GBA DMA: Fix Display Start DMAs + - GBA DMA: Fix DMA start/end timing + - Qt: Fix window icon on X11 + - GB, GBA Serialize: Fix loading two states in a row + - GBA Video: Fix enabling layers in non-tile modes (fixes mgba.io/i/1317) + - Qt: Fix quick load recent accidentally saving (fixes mgba.io/i/1309) + - GBA: Fix video timing when skipping BIOS (fixes mgba.io/i/1318) + - 3DS: Work around menu freezing (fixes mgba.io/i/1294) Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash

@@ -42,6 +54,7 @@ - GB Memory: Support running from blocked memory

- Qt: Don't unload ROM immediately if it crashes - GBA Video: Improve sprite cycle counting (fixes mgba.io/i/1274) - Debugger: Add breakpoint and watchpoint listing + - Qt: Updated Italian translation (by Vecna) 0.7.0: (2019-01-26) Features:
M include/mgba/core/interface.hinclude/mgba/core/interface.h

@@ -32,6 +32,7 @@ #define M_G8(X) (((((X) >> 2) & 0xF8) * 0x21) >> 5)

#define M_B8(X) (((((X) >> 7) & 0xF8) * 0x21) >> 5) #define M_RGB5_TO_BGR8(X) ((M_R5(X) << 3) | (M_G5(X) << 11) | (M_B5(X) << 19)) +#define M_RGB5_TO_RGB8(X) ((M_R5(X) << 19) | (M_G5(X) << 11) | (M_B5(X) << 3)) #define M_RGB8_TO_BGR5(X) ((((X) & 0xF8) >> 3) | (((X) & 0xF800) >> 6) | (((X) & 0xF80000) >> 9)) #define M_RGB8_TO_RGB5(X) ((((X) & 0xF8) << 7) | (((X) & 0xF800) >> 6) | (((X) & 0xF80000) >> 19))
M include/mgba/internal/gb/overrides.hinclude/mgba/internal/gb/overrides.h

@@ -22,6 +22,7 @@ };

struct Configuration; bool GBOverrideFind(const struct Configuration*, struct GBCartridgeOverride* override); +bool GBOverrideColorFind(struct GBCartridgeOverride* override); void GBOverrideSave(struct Configuration*, const struct GBCartridgeOverride* override); struct GB;
M src/feature/gui/gui-runner.csrc/feature/gui/gui-runner.c

@@ -548,6 +548,10 @@ ++frames;

runner->params.drawStart(); runner->drawFrame(runner, true); runner->params.drawEnd(); +#ifdef _3DS + // XXX: Why does this fix #1294? + usleep(1000); +#endif GUIPollInput(&runner->params, 0, &keys); } if (runner->unpaused) {
M src/gb/core.csrc/gb/core.c

@@ -220,6 +220,7 @@ mCoreConfigCopyValue(&core->config, config, "gbc.bios");

mCoreConfigCopyValue(&core->config, config, "gb.model"); mCoreConfigCopyValue(&core->config, config, "sgb.model"); mCoreConfigCopyValue(&core->config, config, "cgb.model"); + mCoreConfigCopyValue(&core->config, config, "useCgbColors"); mCoreConfigCopyValue(&core->config, config, "allowOpposingDirections"); int fakeBool = 0;

@@ -371,10 +372,13 @@ GBVideoAssociateRenderer(&gb->video, &gbcore->renderer.d);

} if (gb->memory.rom) { + int doColorOverride = 0; + mCoreConfigGetIntValue(&core->config, "useCgbColors", &doColorOverride); + struct GBCartridgeOverride override; const struct GBCartridge* cart = (const struct GBCartridge*) &gb->memory.rom[0x100]; override.headerCrc32 = doCrc32(cart, sizeof(*cart)); - if (GBOverrideFind(gbcore->overrides, &override)) { + if (GBOverrideFind(gbcore->overrides, &override) || (doColorOverride && GBOverrideColorFind(&override))) { GBOverrideApply(gb, &override); } }
M src/gb/gb.csrc/gb/gb.c

@@ -202,7 +202,7 @@ }

if (gb->memory.sram == (void*) -1) { gb->memory.sram = NULL; } - } else { + } else if (size) { uint8_t* newSram = anonymousMemoryMap(size); if (gb->memory.sram) { if (size > gb->sramSize) {
M src/gb/overrides.csrc/gb/overrides.c

@@ -11,6 +11,482 @@

#include <mgba-util/configuration.h> #include <mgba-util/crc32.h> +#define PAL_ENTRY(A, B, C, D) \ + 0xFF000000 | M_RGB5_TO_RGB8(A), \ + 0xFF000000 | M_RGB5_TO_RGB8(B), \ + 0xFF000000 | M_RGB5_TO_RGB8(C), \ + 0xFF000000 | M_RGB5_TO_RGB8(D) + +#define PAL0 PAL_ENTRY(0x7FFF, 0x32BF, 0x00D0, 0x0000) +#define PAL1 PAL_ENTRY(0x639F, 0x4279, 0x15B0, 0x04CB) +#define PAL2 PAL_ENTRY(0x7FFF, 0x6E31, 0x454A, 0x0000) +#define PAL3 PAL_ENTRY(0x7FFF, 0x1BEF, 0x0200, 0x0000) +#define PAL4 PAL_ENTRY(0x7FFF, 0x421F, 0x1CF2, 0x0000) +#define PAL5 PAL_ENTRY(0x7FFF, 0x5294, 0x294A, 0x0000) +#define PAL6 PAL_ENTRY(0x7FFF, 0x03FF, 0x012F, 0x0000) +#define PAL7 PAL_ENTRY(0x7FFF, 0x03EF, 0x01D6, 0x0000) +#define PAL8 PAL_ENTRY(0x7FFF, 0x42B5, 0x3DC8, 0x0000) +#define PAL9 PAL_ENTRY(0x7E74, 0x03FF, 0x0180, 0x0000) +#define PAL10 PAL_ENTRY(0x67FF, 0x77AC, 0x1A13, 0x2D6B) +#define PAL11 PAL_ENTRY(0x7ED6, 0x4BFF, 0x2175, 0x0000) +#define PAL12 PAL_ENTRY(0x53FF, 0x4A5F, 0x7E52, 0x0000) +#define PAL13 PAL_ENTRY(0x4FFF, 0x7ED2, 0x3A4C, 0x1CE0) +#define PAL14 PAL_ENTRY(0x03ED, 0x7FFF, 0x255F, 0x0000) +#define PAL15 PAL_ENTRY(0x036A, 0x021F, 0x03FF, 0x7FFF) +#define PAL16 PAL_ENTRY(0x7FFF, 0x01DF, 0x0112, 0x0000) +#define PAL17 PAL_ENTRY(0x231F, 0x035F, 0x00F2, 0x0009) +#define PAL18 PAL_ENTRY(0x7FFF, 0x03EA, 0x011F, 0x0000) +#define PAL19 PAL_ENTRY(0x299F, 0x001A, 0x000C, 0x0000) +#define PAL20 PAL_ENTRY(0x7FFF, 0x027F, 0x001F, 0x0000) +#define PAL21 PAL_ENTRY(0x7FFF, 0x03E0, 0x0206, 0x0120) +#define PAL22 PAL_ENTRY(0x7FFF, 0x7EEB, 0x001F, 0x7C00) +#define PAL23 PAL_ENTRY(0x7FFF, 0x3FFF, 0x7E00, 0x001F) +#define PAL24 PAL_ENTRY(0x7FFF, 0x03FF, 0x001F, 0x0000) +#define PAL25 PAL_ENTRY(0x03FF, 0x001F, 0x000C, 0x0000) +#define PAL26 PAL_ENTRY(0x7FFF, 0x033F, 0x0193, 0x0000) +#define PAL27 PAL_ENTRY(0x0000, 0x4200, 0x037F, 0x7FFF) +#define PAL28 PAL_ENTRY(0x7FFF, 0x7E8C, 0x7C00, 0x0000) +#define PAL29 PAL_ENTRY(0x7FFF, 0x1BEF, 0x6180, 0x0000) +#define PAL30 PAL_ENTRY(0x7C00, 0x7FFF, 0x3FFF, 0x7E00) +#define PAL31 PAL_ENTRY(0x7FFF, 0x7FFF, 0x7E8C, 0x7C00) +#define PAL32 PAL_ENTRY(0x0000, 0x7FFF, 0x421F, 0x1CF2) + +#define PALETTE(X, Y, Z) { PAL ## X, PAL ## Y, PAL ## Z } + +static const struct GBCartridgeOverride _colorOverrides[] = { + // Adventures of Lolo (Europe) + { 0xFBE65286, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 3) }, + + // Alleyway (World) + { 0xCBAA161B, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 9, 9) }, + + // Arcade Classic No. 1 - Asteroids & Missile Command (USA, Europe) + { 0x309FDB70, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 4) }, + + // Arcade Classic No. 3 - Galaga & Galaxian (USA) + { 0xE13EF629, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(27, 27, 27) }, + + // Arcade Classic No. 4 - Defender & Joust (USA, Europe) + { 0x5C8B229D, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 3) }, + + // Balloon Kid (USA, Europe) + { 0xEC3438FA, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(20, 20, 20) }, + + // Baseball (World) + { 0xE02904BD, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(15, 31, 4) }, + + // Battle Arena Toshinden (USA) + { 0xA2C3DF62, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 3) }, + + // Battletoads in Ragnarok's World (Europe) + { 0x51B259CF, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 3, 3) }, + + // Chessmaster, The (DMG-EM) (Europe) + { 0x96A68366, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 28) }, + + // David Crane's The Rescue of Princess Blobette Starring A Boy and His Blob (Europe) + { 0x6413F5E2, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 3, 28) }, + + // Donkey Kong (Japan, USA) + { 0xA777EE2F, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(20, 4, 4) }, + + // Donkey Kong (World) (Rev A) + { 0xC8F8ACDA, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(20, 4, 4) }, + + // Donkey Kong Land (Japan) + { 0x2CA7EEF3, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(2, 17, 22) }, + + // Donkey Kong Land (USA, Europe) + { 0x0D3E401D, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(13, 17, 4) }, + + // Donkey Kong Land 2 (USA, Europe) + { 0x07ED9445, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(2, 17, 22) }, + + // Donkey Kong Land III (USA, Europe) + { 0xCA01A31C, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(2, 17, 22) }, + + // Donkey Kong Land III (USA, Europe) (Rev A) + { 0x6805BA1E, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(2, 17, 22) }, + + // Dr. Mario (World) + { 0xA3C2C1E9, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(28, 28, 4) }, + + // Dr. Mario (World) (Rev A) + { 0x69975661, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(28, 28, 4) }, + + // Dr. Mario (World) (Beta) + { 0x22E55535, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 19, 30) }, + + // Dynablaster (Europe) + { 0xD9D0211F, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 28) }, + + // F-1 Race (World) + { 0x8434CB2C, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // F-1 Race (World) (Rev A) + { 0xBA63383B, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // Game & Watch Gallery (Europe) + { 0x4A43B8B9, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(7, 4, 4) }, + + // Game & Watch Gallery (USA) + { 0xBD0736D4, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(7, 4, 4) }, + + // Game & Watch Gallery (USA) (Rev A) + { 0xA969B4F0, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(7, 4, 4) }, + + // Game Boy Camera Gold (USA) + { 0x83947EC8, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 3, 4) }, + + // Game Boy Gallery (Japan) + { 0xDC3C3642, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(7, 4, 4) }, + + // Game Boy Gallery - 5 Games in One (Europe) + { 0xD83E3F82, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // Game Boy Gallery 2 (Australia) + { 0x6C477A30, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(7, 4, 4) }, + + // Game Boy Gallery 2 (Japan) + { 0xC5AAAFDA, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(7, 4, 4) }, + + // Game Boy Wars (Japan) + { 0x03E3ED72, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(8, 16, 22) }, + + // Golf (World) + { 0x885C242D, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 4) }, + + // Hoshi no Kirby (Japan) + { 0x4AA02A13, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 19, 30) }, + + // Hoshi no Kirby (Japan) (Rev A) + { 0x88D03280, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 19, 30) }, + + // Hoshi no Kirby 2 (Japan) + { 0x58B7A321, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 19, 30) }, + + // James Bond 007 (USA, Europe) + { 0x7DDEB68E, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(29, 4, 29) }, + + // Kaeru no Tame ni Kane wa Naru (Japan) + { 0x7F805941, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(2, 4, 2) }, + + // Kid Icarus - Of Myths and Monsters (USA, Europe) + { 0x5D93DB0F, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(2, 4, 4) }, + + // Killer Instinct (USA, Europe) + { 0x117043A9, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(2, 4, 0) }, + + // King of Fighters '95, The (USA) + { 0x0F81CC70, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 3) }, + + // King of the Zoo (Europe) + { 0xB492FB51, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 28) }, + + // Kirby no Block Ball (Japan) + { 0x4203B79F, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 19, 30) }, + + // Kirby no Kirakira Kids (Japan) + { 0x74C3A937, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // Kirby no Pinball (Japan) + { 0x89239AED, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 19, 19) }, + + // Kirby's Block Ball (USA, Europe) + { 0xCE8B1B18, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 19, 30) }, + + // Kirby's Dream Land (USA, Europe) + { 0x302017CC, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 19, 30) }, + + // Kirby's Dream Land 2 (USA, Europe) + { 0xF6C9E5A8, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 19, 30) }, + + // Kirby's Pinball Land (USA, Europe) + { 0x9C4AA9D8, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(9, 19, 19) }, + + // Kirby's Star Stacker (USA, Europe) + { 0xC1B481CA, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // Legend of Zelda, The - Link's Awakening (Canada) + { 0x9F54D47B, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 21, 28) }, + + // Legend of Zelda, The - Link's Awakening (France) + { 0x441D7FAD, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 21, 28) }, + + // Legend of Zelda, The - Link's Awakening (Germany) + { 0x838D65D6, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 21, 28) }, + + // Legend of Zelda, The - Link's Awakening (USA, Europe) (Rev A) + { 0x24CAAB4D, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 21, 28) }, + + // Legend of Zelda, The - Link's Awakening (USA, Europe) (Rev B) + { 0xBCBB6BDB, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 21, 28) }, + + // Legend of Zelda, The - Link's Awakening (USA, Europe) + { 0x9A193109, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 21, 28) }, + + // Magnetic Soccer (Europe) + { 0x6735A1F5, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 28) }, + + // Mario & Yoshi (Europe) + { 0xEC14B007, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(18, 4, 4) }, + + // Mario no Picross (Japan) + { 0x602C2371, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // Mario's Picross (USA, Europe) + { 0x725BBFF6, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // Mega Man - Dr. Wily's Revenge (Europe) + { 0xB2FE1EDB, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 3) }, + + // Mega Man II (Europe) + { 0xC5EE1580, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 3) }, + + // Mega Man III (Europe) + { 0x88249B90, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 3) }, + + // Metroid II - Return of Samus (World) + { 0xBDCCC648, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(28, 25, 3) }, + + // Moguranya (Japan) + { 0x41C1D13C, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(8, 16, 16) }, + + // Mole Mania (USA, Europe) + { 0x32E8EEA3, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(8, 16, 16) }, + + // Mystic Quest (Europe) + { 0x8DC57012, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 28) }, + + // Mystic Quest (France) + { 0x09728780, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 28) }, + + // Mystic Quest (Germany) + { 0x6F8568A8, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 28) }, + + // Nigel Mansell's World Championship Racing (Europe) + { 0xAC2D636D, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // Nintendo World Cup (USA, Europe) + { 0xB43E44C1, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 4) }, + + // Othello (Europe) + { 0x45F34317, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 28) }, + + // Pac-In-Time (Europe) + { 0x8C608574, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(29, 4, 28) }, + + // Picross 2 (Japan) + { 0xBA91DDD8, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // Pinocchio (Europe) + { 0x849C74C0, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(2, 2, 17) }, + + // Play Action Football (USA) + { 0x2B703514, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 4) }, + + // Pocket Bomberman (Europe) + { 0x9C5E0D5E, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(2, 17, 17) }, + + // Pocket Camera (Japan) (Rev A) + { 0x211A85AC, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(26, 26, 26) }, + + // Pocket Monsters - Aka (Japan) + { 0x29D07340, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 3, 4) }, + + // Pocket Monsters - Aka (Japan) (Rev A) + { 0x6BB566EC, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 3, 4) }, + + // Pocket Monsters - Ao (Japan) + { 0x65EF364B, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(28, 4, 28) }, + + // Pocket Monsters - Midori (Japan) + { 0x923D46DD, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(29, 4, 29) }, + + // Pocket Monsters - Midori (Japan) (Rev A) + { 0x6C926BFF, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(29, 4, 29) }, + + // Pocket Monsters - Pikachu (Japan) + { 0xF52AD7C1, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(24, 24, 24) }, + + // Pocket Monsters - Pikachu (Japan) (Rev A) + { 0x0B54FAEB, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(24, 24, 24) }, + + // Pocket Monsters - Pikachu (Japan) (Rev B) + { 0x9A161366, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(24, 24, 24) }, + + // Pocket Monsters - Pikachu (Japan) (Rev C) + { 0x8E1C14E4, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(24, 24, 24) }, + + // Pokemon - Blaue Edition (Germany) + { 0x6C3587F2, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(28, 4, 28) }, + + // Pokemon - Blue Version (USA, Europe) + { 0x28323CE0, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(28, 4, 28) }, + + // Pokemon - Edicion Azul (Spain) + { 0x93FCE15B, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(28, 4, 28) }, + + // Pokemon - Edicion Roja (Spain) + { 0xFD20BB1C, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 3, 4) }, + + // Pokemon - Red Version (USA, Europe) + { 0xCC25454F, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 3, 4) }, + + // Pokemon - Rote Edition (Germany) + { 0xE5DD23CE, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 3, 4) }, + + // Pokemon - Version Bleue (France) + { 0x98BFEC5A, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(28, 4, 28) }, + + // Pokemon - Version Rouge (France) + { 0x1D6D8022, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 3, 4) }, + + // Pokemon - Versione Blu (Italy) + { 0x7864DECC, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(28, 4, 28) }, + + // Pokemon - Versione Rossa (Italy) + { 0xFE2A3F93, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 3, 4) }, + + // QIX (World) + { 0x5EECB346, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(24, 24, 22) }, + + // Radar Mission (Japan) + { 0xD03B1A15, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(8, 16, 8) }, + + // Radar Mission (USA, Europe) + { 0xCEDD9FEB, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(8, 16, 8) }, + + // Soccer (Europe) + { 0xB0274CDA, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(14, 31, 0) }, + + // SolarStriker (World) + { 0x981620E7, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(27, 27, 27) }, + + // Space Invaders (Europe) + { 0x3B032784, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(27, 27, 27) }, + + // Space Invaders (USA) + { 0x63A767E2, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(27, 27, 27) }, + + // Star Wars (USA, Europe) (Rev A) + { 0x44CE17EE, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 3, 28) }, + + // Street Fighter II (USA) + { 0xC512D0B1, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 3) }, + + // Street Fighter II (USA, Europe) (Rev A) + { 0x79E16545, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 3) }, + + // Super Donkey Kong GB (Japan) + { 0x940D4974, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(13, 17, 4) }, + + // Super Mario Land (World) + { 0x6C0ACA9F, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(11, 32, 32) }, + + // Super Mario Land (World) (Rev A) + { 0xCA117ACC, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(11, 32, 32) }, + + // Super Mario Land 2 - 6 Golden Coins (USA, Europe) (Rev A) + { 0x423E09E6, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(10, 16, 28) }, + + // Super Mario Land 2 - 6 Golden Coins (USA, Europe) (Rev B) + { 0x445A0358, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(10, 16, 28) }, + + // Super Mario Land 2 - 6 Golden Coins (USA, Europe) + { 0xDE2960A1, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(10, 16, 28) }, + + // Super Mario Land 2 - 6-tsu no Kinka (Japan) + { 0xD47CED78, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(10, 16, 28) }, + + // Super Mario Land 2 - 6-tsu no Kinka (Japan) (Rev A) + { 0xA4B4F9F9, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(10, 16, 28) }, + + // Super Mario Land 2 - 6-tsu no Kinka (Japan) (Rev B) + { 0x5842F25D, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(10, 16, 28) }, + + // Super R.C. Pro-Am (USA, Europe) + { 0x8C39B1C8, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 28, 3) }, + + // Tennis (World) + { 0xD2BEBF08, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(14, 31, 0) }, + + // Tetris (World) + { 0xE906C6A6, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(24, 24, 24) }, + + // Tetris (World) (Rev A) + { 0x4674B43F, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(24, 24, 24) }, + + // Tetris 2 (USA) + { 0x687505F1, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(24, 24, 22) }, + + // Tetris 2 (USA, Europe) + { 0x6761459F, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(24, 24, 22) }, + + // Tetris Attack (USA) + { 0x00E9474B, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(18, 18, 22) }, + + // Tetris Blast (USA, Europe) + { 0xDDDEEEDE, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(20, 20, 20) }, + + // Tetris Attack (USA, Europe) (Rev A) + { 0x6628C535, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(18, 18, 22) }, + + // Tetris Flash (Japan) + { 0xED669A78, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(24, 24, 22) }, + + // Top Rank Tennis (USA) + { 0xA6497CC0, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(14, 31, 0) }, + + // Top Ranking Tennis (Europe) + { 0x62C12E05, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(14, 31, 0) }, + + // Toy Story (Europe) + { 0x67066E28, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 4) }, + + // Vegas Stakes (USA, Europe) + { 0x80CB217F, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(3, 4, 28) }, + + // Wario Land - Super Mario Land 3 (World) + { 0xF1EA10E9, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(8, 16, 22) }, + + // Wario Land II (USA, Europe) + { 0xD56A50A1, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(8, 0, 28) }, + + // Wave Race (USA, Europe) + { 0x52A6E4CC, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(28, 4, 23) }, + + // X (Japan) + { 0xFED4C47F, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(5, 5, 5) }, + + // Yakuman (Japan) + { 0x40604F17, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // Yakuman (Japan) (Rev A) + { 0x2959ACFC, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(0, 0, 0) }, + + // Yoshi (USA) + { 0xAB1605B9, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(18, 4, 4) }, + + // Yoshi no Cookie (Japan) + { 0x841753DA, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(20, 20, 22) }, + + // Yoshi no Panepon (Japan) + { 0xAA1AD903, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(18, 18, 22) }, + + // Yoshi no Tamago (Japan) + { 0xD4098A6B, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(18, 4, 4) }, + + // Yoshi's Cookie (USA, Europe) + { 0x940EDD87, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(20, 20, 22) }, + + // Zelda no Densetsu - Yume o Miru Shima (Japan) + { 0x259C9A82, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 21, 28) }, + + // Zelda no Densetsu - Yume o Miru Shima (Japan) (Rev A) + { 0x61F269CD, GB_MODEL_AUTODETECT, GB_MBC_AUTODETECT, PALETTE(4, 21, 28) }, +}; + static const struct GBCartridgeOverride _overrides[] = { // Pokemon Spaceworld 1997 demo { 0x232a067d, GB_MODEL_AUTODETECT, GB_MBC3_RTC, { 0 } }, // Gold (debug)

@@ -20,6 +496,17 @@ { 0xa61856bd, GB_MODEL_AUTODETECT, GB_MBC3_RTC, { 0 } }, // Silver (non-debug)

{ 0, 0, 0, { 0 } } }; + +bool GBOverrideColorFind(struct GBCartridgeOverride* override) { + int i; + for (i = 0; _colorOverrides[i].headerCrc32; ++i) { + if (override->headerCrc32 == _colorOverrides[i].headerCrc32) { + memcpy(override->gbColors, _colorOverrides[i].gbColors, sizeof(override->gbColors)); + return true; + } + } + return false; +} bool GBOverrideFind(const struct Configuration* config, struct GBCartridgeOverride* override) { override->model = GB_MODEL_AUTODETECT;
M src/gb/serialize.csrc/gb/serialize.c

@@ -138,7 +138,7 @@ }

if (error) { return false; } - gb->timing.root = NULL; + mTimingClear(&gb->timing); LOAD_32LE(gb->timing.masterCycles, 0, &state->masterCycles); gb->cpu->a = state->cpu.a;
M src/gba/dma.csrc/gba/dma.c

@@ -182,7 +182,7 @@ } else {

dma->nextCount = 0; bool noRepeat = !GBADMARegisterIsRepeat(dma->reg); noRepeat |= GBADMARegisterGetTiming(dma->reg) == GBA_DMA_TIMING_NOW; - noRepeat |= memory->activeDMA == 3 && GBADMARegisterGetTiming(dma->reg) == GBA_DMA_TIMING_CUSTOM; + noRepeat |= memory->activeDMA == 3 && GBADMARegisterGetTiming(dma->reg) == GBA_DMA_TIMING_CUSTOM && gba->video.vcount == VIDEO_VERTICAL_PIXELS + 1; if (noRepeat) { dma->reg = GBADMARegisterClearEnable(dma->reg);

@@ -237,9 +237,6 @@ int32_t cycles = 2;

gba->cpuBlocked = true; if (info->count == info->nextCount) { - if (sourceRegion < REGION_CART0 || destRegion < REGION_CART0) { - cycles += 2; - } if (width == 4) { cycles += memory->waitstatesNonseq32[sourceRegion] + memory->waitstatesNonseq32[destRegion]; } else {

@@ -302,6 +299,9 @@ info->nextSource = source;

info->nextDest = dest; if (!wordsRemaining) { info->nextCount |= 0x80000000; + if (sourceRegion < REGION_CART0 || destRegion < REGION_CART0) { + info->when += 2; + } } GBADMAUpdate(gba); }
M src/gba/gba.csrc/gba/gba.c

@@ -254,7 +254,8 @@ cpu->gprs[ARM_PC] = BASE_CART0;

} else { cpu->gprs[ARM_PC] = BASE_WORKING_RAM; } - gba->memory.io[REG_VCOUNT >> 1] = 0x7E; + gba->video.vcount = 0x7D; + gba->memory.io[REG_VCOUNT >> 1] = 0x7D; gba->memory.io[REG_POSTFLG >> 1] = 1; ARMWritePC(cpu); }
M src/gba/renderers/video-software.csrc/gba/renderers/video-software.c

@@ -774,7 +774,8 @@ int wasActive = renderer->bg[bg].enabled;

if (!active) { renderer->bg[bg].enabled = 0; } else if (!wasActive && active) { - if (renderer->nextY == 0) { + if (renderer->nextY == 0 || GBARegisterDISPCNTGetMode(renderer->dispcnt) > 2) { + // TODO: Investigate in more depth how switching background works in different modes renderer->bg[bg].enabled = 4; } else { renderer->bg[bg].enabled = 1;
M src/gba/serialize.csrc/gba/serialize.c

@@ -132,7 +132,7 @@ }

if (error) { return false; } - gba->timing.root = NULL; + mTimingClear(&gba->timing); LOAD_32(gba->timing.masterCycles, 0, &state->masterCycles); size_t i;
M src/platform/python/mgba/core.pysrc/platform/python/mgba/core.py

@@ -186,11 +186,17 @@ return bool(self._core.loadROM(self._core, vfile.handle))

@protected def load_bios(self, vfile, id=0): - return bool(self._core.loadBIOS(self._core, vfile.handle, id)) + res = bool(self._core.loadBIOS(self._core, vfile.handle, id)) + if res: + vfile._claimed = True + return res @protected def load_save(self, vfile): - return bool(self._core.loadSave(self._core, vfile.handle)) + res = bool(self._core.loadSave(self._core, vfile.handle)) + if res: + vfile._claimed = True + return res @protected def load_temporary_save(self, vfile):
M src/platform/python/mgba/gb.pysrc/platform/python/mgba/gb.py

@@ -27,6 +27,7 @@ self._native = ffi.cast("struct GB*", native.board)

self.sprites = GBObjs(self) self.cpu = LR35902Core(self._core.cpu) self.memory = None + self._link = None @needs_reset def _init_cache(self, cache):

@@ -43,10 +44,13 @@ super(GB, self)._load()

self.memory = GBMemory(self._core) def attach_sio(self, link): + self._link = link lib.GBSIOSetDriver(ffi.addressof(self._native.sio), link._native) def __del__(self): - lib.GBSIOSetDriver(ffi.addressof(self._native.sio), ffi.NULL) + if self._link: + lib.GBSIOSetDriver(ffi.addressof(self._native.sio), ffi.NULL) + self._link = None create_callback("GBSIOPythonDriver", "init")
M src/platform/python/mgba/vfs.pysrc/platform/python/mgba/vfs.py

@@ -112,11 +112,16 @@ class VFile:

def __init__(self, vf, _no_gc=None): self.handle = vf self._no_gc = _no_gc + self._claimed = False def __del__(self): - self.close() + if not self._claimed: + self.close() def close(self): + if self._claimed: + return False + self._claimed = True return bool(self.handle.close(self.handle)) def seek(self, offset, whence):
M src/platform/qt/BattleChipView.cppsrc/platform/qt/BattleChipView.cpp

@@ -5,17 +5,31 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this

* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "BattleChipView.h" +#include "ConfigController.h" #include "CoreController.h" +#include "GBAApp.h" +#include "ShortcutController.h" +#include "Window.h" +#include <QtAlgorithms> #include <QFile> +#include <QFontMetrics> +#include <QMessageBox> +#include <QMultiMap> +#include <QResource> +#include <QSettings> #include <QStringList> using namespace QGBA; -BattleChipView::BattleChipView(std::shared_ptr<CoreController> controller, QWidget* parent) - : QDialog(parent) +BattleChipView::BattleChipView(std::shared_ptr<CoreController> controller, Window* window, QWidget* parent) + : QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint) , m_controller(controller) + , m_window(window) { + QResource::registerResource(GBAApp::dataDir() + "/chips.rcc", "/exe"); + QResource::registerResource(ConfigController::configDir() + "/chips.rcc", "/exe"); + m_ui.setupUi(this); char title[9];

@@ -25,6 +39,13 @@ title[8] = '\0';

core->getGameCode(core, title); QString qtitle(title); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) + int size = QFontMetrics(QFont()).height() / ((int) ceil(devicePixelRatioF()) * 12); +#else + int size = QFontMetrics(QFont()).height() / (devicePixelRatio() * 12); +#endif + m_ui.chipList->setIconSize(m_ui.chipList->iconSize() * size); + m_ui.chipList->setGridSize(m_ui.chipList->gridSize() * size); connect(m_ui.chipId, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), m_ui.inserted, [this]() { m_ui.inserted->setChecked(Qt::Unchecked);

@@ -34,7 +55,13 @@ m_ui.chipId->setValue(m_chipIndexToId[id]);

}); connect(m_ui.inserted, &QAbstractButton::toggled, this, &BattleChipView::insertChip); + connect(m_ui.insert, &QAbstractButton::clicked, this, &BattleChipView::reinsert); + connect(m_ui.add, &QAbstractButton::clicked, this, &BattleChipView::addChip); + connect(m_ui.remove, &QAbstractButton::clicked, this, &BattleChipView::removeChip); connect(controller.get(), &CoreController::stopping, this, &QWidget::close); + connect(m_ui.save, &QAbstractButton::clicked, this, &BattleChipView::saveDeck); + connect(m_ui.load, &QAbstractButton::clicked, this, &BattleChipView::loadDeck); + connect(m_ui.buttonBox->button(QDialogButtonBox::Reset), &QAbstractButton::clicked, m_ui.chipList, &QListWidget::clear); connect(m_ui.gateBattleChip, &QAbstractButton::toggled, this, [this](bool on) { if (on) {

@@ -56,6 +83,16 @@ }

} }); + connect(m_controller.get(), &CoreController::frameAvailable, this, &BattleChipView::advanceFrameCounter); + + connect(m_ui.chipList, &QListWidget::itemClicked, this, [this](QListWidgetItem* item) { + QVariant chip = item->data(Qt::UserRole); + bool blocked = m_ui.chipId->blockSignals(true); + m_ui.chipId->setValue(chip.toInt()); + m_ui.chipId->blockSignals(blocked); + reinsert(); + }); + m_controller->attachBattleChipGate(); setFlavor(4); if (qtitle.startsWith("AGB-B4B") || qtitle.startsWith("AGB-B4W") || qtitle.startsWith("AGB-BR4") || qtitle.startsWith("AGB-BZ3")) {

@@ -77,6 +114,9 @@ loadChipNames(flavor);

} void BattleChipView::insertChip(bool inserted) { + bool blocked = m_ui.inserted->blockSignals(true); + m_ui.inserted->setChecked(inserted); + m_ui.inserted->blockSignals(blocked); if (inserted) { m_controller->setBattleChipId(m_ui.chipId->value()); } else {

@@ -84,16 +124,53 @@ m_controller->setBattleChipId(0);

} } +void BattleChipView::reinsert() { + if (m_ui.inserted->isChecked()) { + insertChip(false); + m_next = true; + m_frameCounter = UNINSERTED_TIME; + } else { + insertChip(true); + } + m_window->setWindowState(m_window->windowState() & ~Qt::WindowActive); + m_window->setWindowState(m_window->windowState() | Qt::WindowActive); +} + +void BattleChipView::addChip() { + int insertedChip = m_ui.chipId->value(); + if (insertedChip < 1) { + return; + } + addChipId(insertedChip); +} + +void BattleChipView::addChipId(int id) { + QListWidgetItem* add = new QListWidgetItem(m_chipIdToName[id]); + add->setData(Qt::UserRole, id); + QString path = QString(":/exe/exe%1/%2.png").arg(m_flavor).arg(id, 3, 10, QLatin1Char('0')); + if (!QFile(path).exists()) { + path = QString(":/exe/exe%1/placeholder.png").arg(m_flavor); + } + add->setIcon(QPixmap(path).scaled(m_ui.chipList->iconSize())); + m_ui.chipList->addItem(add); +} + +void BattleChipView::removeChip() { + qDeleteAll(m_ui.chipList->selectedItems()); +} + void BattleChipView::loadChipNames(int flavor) { QStringList chipNames; chipNames.append(tr("(None)")); m_chipIndexToId.clear(); + m_chipIdToName.clear(); if (flavor == GBA_FLAVOR_BEAST_LINK_GATE_US) { flavor = GBA_FLAVOR_BEAST_LINK_GATE; } + m_flavor = flavor; - QFile file(QString(":/res/chip-names-%1.txt").arg(flavor)); + QFile file(QString(":/exe/exe%1/chip-names.txt").arg(flavor)); file.open(QIODevice::ReadOnly | QIODevice::Text); int id = 0; while (true) {

@@ -105,10 +182,71 @@ ++id;

if (line.trimmed().isEmpty()) { continue; } + QString name = QString::fromUtf8(line).trimmed(); m_chipIndexToId[chipNames.length()] = id; - chipNames.append(QString::fromUtf8(line).trimmed()); + m_chipIdToName[id] = name; + chipNames.append(name); } m_ui.chipName->clear(); m_ui.chipName->addItems(chipNames); -}+} + +void BattleChipView::advanceFrameCounter() { + if (m_frameCounter == 0) { + insertChip(m_next); + } + if (m_frameCounter >= 0) { + --m_frameCounter; + } +} + +void BattleChipView::saveDeck() { + QString filename = GBAApp::app()->getSaveFileName(this, tr("Select deck file"), tr(("BattleChip deck file (*.deck)"))); + if (filename.isEmpty()) { + return; + } + + QStringList deck; + for (int i = 0; i < m_ui.chipList->count(); ++i) { + deck.append(m_ui.chipList->item(i)->data(Qt::UserRole).toString()); + } + + QSettings ini(filename, QSettings::IniFormat); + ini.clear(); + ini.beginGroup("BattleChipDeck"); + ini.setValue("version", m_flavor); + ini.setValue("deck", deck.join(',')); + ini.sync(); +} + +void BattleChipView::loadDeck() { + QString filename = GBAApp::app()->getOpenFileName(this, tr("Select deck file"), tr(("BattleChip deck file (*.deck)"))); + if (filename.isEmpty()) { + return; + } + + QSettings ini(filename, QSettings::IniFormat); + ini.beginGroup("BattleChipDeck"); + int flavor = ini.value("version").toInt(); + if (flavor != m_flavor) { + QMessageBox* error = new QMessageBox(this); + error->setIcon(QMessageBox::Warning); + error->setStandardButtons(QMessageBox::Ok); + error->setWindowTitle(tr("Incompatible deck")); + error->setText(tr("The selected deck is not compatible with this Chip Gate")); + error->setAttribute(Qt::WA_DeleteOnClose); + error->show(); + return; + } + + m_ui.chipList->clear(); + QStringList deck = ini.value("deck").toString().split(','); + for (const auto& item : deck) { + bool ok; + int id = item.toInt(&ok); + if (ok) { + addChipId(id); + } + } +}
M src/platform/qt/BattleChipView.hsrc/platform/qt/BattleChipView.h

@@ -16,25 +16,45 @@

namespace QGBA { class CoreController; +class Window; class BattleChipView : public QDialog { Q_OBJECT public: - BattleChipView(std::shared_ptr<CoreController> controller, QWidget* parent = nullptr); + BattleChipView(std::shared_ptr<CoreController> controller, Window* window, QWidget* parent = nullptr); ~BattleChipView(); public slots: void setFlavor(int); void insertChip(bool); + void reinsert(); + +private slots: + void advanceFrameCounter(); + void addChip(); + void addChipId(int); + void removeChip(); + + void saveDeck(); + void loadDeck(); private: + static const int UNINSERTED_TIME = 10; + void loadChipNames(int); Ui::BattleChipView m_ui; QMap<int, int> m_chipIndexToId; + QMap<int, QString> m_chipIdToName; std::shared_ptr<CoreController> m_controller; + int m_flavor; + + int m_frameCounter = -1; + bool m_next = false; + + Window* m_window; }; -}+}
M src/platform/qt/BattleChipView.uisrc/platform/qt/BattleChipView.ui

@@ -6,90 +6,275 @@ <property name="geometry">

<rect> <x>0</x> <y>0</y> - <width>426</width> - <height>278</height> + <width>630</width> + <height>722</height> </rect> </property> <property name="windowTitle"> <string>BattleChip Gate</string> </property> - <layout class="QFormLayout" name="formLayout"> - <item row="5" column="1"> - <widget class="QCheckBox" name="inserted"> - <property name="text"> - <string>Inserted</string> + <layout class="QVBoxLayout" name="verticalLayout" stretch="1,0,0,0,0,0"> + <item> + <widget class="QListWidget" name="chipList"> + <property name="acceptDrops"> + <bool>true</bool> </property> - </widget> - </item> - <item row="4" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Chip ID</string> + <property name="dragEnabled"> + <bool>true</bool> </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Chip name</string> + <property name="dragDropMode"> + <enum>QAbstractItemView::InternalMove</enum> </property> - </widget> - </item> - <item row="4" column="1"> - <widget class="QSpinBox" name="chipId"> - <property name="maximum"> - <number>65535</number> + <property name="defaultDropAction"> + <enum>Qt::MoveAction</enum> + </property> + <property name="iconSize"> + <size> + <width>56</width> + <height>48</height> + </size> + </property> + <property name="movement"> + <enum>QListView::Static</enum> + </property> + <property name="isWrapping" stdset="0"> + <bool>true</bool> + </property> + <property name="resizeMode"> + <enum>QListView::Adjust</enum> + </property> + <property name="gridSize"> + <size> + <width>120</width> + <height>72</height> + </size> + </property> + <property name="viewMode"> + <enum>QListView::IconMode</enum> + </property> + <property name="uniformItemSizes"> + <bool>false</bool> + </property> + <property name="selectionRectVisible"> + <bool>true</bool> </property> </widget> </item> - <item row="3" column="1"> - <widget class="QComboBox" name="chipName"/> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="1,0"> + <item> + <layout class="QFormLayout" name="formLayout_4"> + <item row="0" column="1"> + <widget class="QComboBox" name="chipName"/> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Chip name</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QPushButton" name="insert"> + <property name="text"> + <string>Insert</string> + </property> + </widget> + </item> + </layout> </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Gate type</string> - </property> - </widget> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QPushButton" name="save"> + <property name="text"> + <string>Save</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="load"> + <property name="text"> + <string>Load</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="add"> + <property name="text"> + <string>Add</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="remove"> + <property name="text"> + <string>Remove</string> + </property> + </widget> + </item> + </layout> </item> - <item row="1" column="1"> - <widget class="QRadioButton" name="gateProgress"> - <property name="text"> - <string>Progress &amp;Gate</string> - </property> - <attribute name="buttonGroup"> - <string notr="true">gate</string> - </attribute> + <item> + <widget class="QWidget" name="advanced" native="true"> + <property name="visible"> + <bool>false</bool> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <layout class="QFormLayout" name="formLayout_2"> + <item row="1" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Gate type</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QRadioButton" name="gateBattleChip"> + <property name="text"> + <string>Ba&amp;ttleChip Gate</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QRadioButton" name="gateProgress"> + <property name="text"> + <string>Progress &amp;Gate</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QRadioButton" name="gateBeastLink"> + <property name="text"> + <string>Beast &amp;Link Gate</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <layout class="QFormLayout" name="formLayout_5"> + <item row="1" column="1"> + <widget class="QCheckBox" name="inserted"> + <property name="text"> + <string>Inserted</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="chipId"> + <property name="maximum"> + <number>65535</number> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Chip ID</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> </widget> </item> - <item row="0" column="1"> - <widget class="QRadioButton" name="gateBattleChip"> + <item> + <widget class="QCheckBox" name="showAdvanced"> <property name="text"> - <string>Ba&amp;ttleChip Gate</string> + <string>Show advanced</string> </property> - <property name="checked"> - <bool>true</bool> - </property> - <attribute name="buttonGroup"> - <string notr="true">gate</string> - </attribute> </widget> </item> - <item row="2" column="1"> - <widget class="QRadioButton" name="gateBeastLink"> - <property name="text"> - <string>Beast &amp;Link Gate</string> - </property> - <attribute name="buttonGroup"> - <string notr="true">gate</string> - </attribute> - </widget> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Close|QDialogButtonBox::Reset</set> + </property> + </widget> + </item> + </layout> </item> </layout> </widget> <resources/> - <connections/> - <buttongroups> - <buttongroup name="gate"/> - </buttongroups> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>BattleChipView</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>416</x> + <y>690</y> + </hint> + <hint type="destinationlabel"> + <x>314</x> + <y>360</y> + </hint> + </hints> + </connection> + <connection> + <sender>showAdvanced</sender> + <signal>toggled(bool)</signal> + <receiver>advanced</receiver> + <slot>setVisible(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>109</x> + <y>34</y> + </hint> + <hint type="destinationlabel"> + <x>396</x> + <y>654</y> + </hint> + </hints> + </connection> + <connection> + <sender>chipList</sender> + <signal>indexesMoved(QModelIndexList)</signal> + <receiver>chipList</receiver> + <slot>doItemsLayout()</slot> + <hints> + <hint type="sourcelabel"> + <x>314</x> + <y>203</y> + </hint> + <hint type="destinationlabel"> + <x>314</x> + <y>203</y> + </hint> + </hints> + </connection> + </connections> </ui>
M src/platform/qt/ConfigController.cppsrc/platform/qt/ConfigController.cpp

@@ -112,6 +112,8 @@ m_opts.suspendScreensaver = true;

m_opts.lockAspectRatio = true; mCoreConfigLoad(&m_config); mCoreConfigLoadDefaults(&m_config, &m_opts); + mCoreConfigSetDefaultIntValue(&m_config, "sgb.borders", 1); + mCoreConfigSetDefaultIntValue(&m_config, "useCgbColors", 1); mCoreConfigMap(&m_config, &m_opts); }
M src/platform/qt/SettingsView.cppsrc/platform/qt/SettingsView.cpp

@@ -357,6 +357,7 @@ saveSetting("sgb.borders", m_ui.sgbBorders);

saveSetting("ds.bios7", m_ui.dsBios7); saveSetting("ds.bios9", m_ui.dsBios9); saveSetting("ds.firmware", m_ui.dsFirmware); + saveSetting("useCgbColors", m_ui.useCgbColors); saveSetting("useBios", m_ui.useBios); saveSetting("skipBios", m_ui.skipBios); saveSetting("audioBuffers", m_ui.audioBufferSize);

@@ -497,6 +498,7 @@ loadSetting("sgb.borders", m_ui.sgbBorders, true);

loadSetting("ds.bios7", m_ui.dsBios7); loadSetting("ds.bios9", m_ui.dsBios9); loadSetting("ds.firmware", m_ui.dsFirmware); + loadSetting("useCgbColors", m_ui.useCgbColors, true); loadSetting("useBios", m_ui.useBios); loadSetting("skipBios", m_ui.skipBios); loadSetting("audioBuffers", m_ui.audioBufferSize);
M src/platform/qt/SettingsView.uisrc/platform/qt/SettingsView.ui

@@ -87,7 +87,7 @@ </item>

<item row="1" column="1"> <widget class="QStackedWidget" name="stackedWidget"> <property name="currentIndex"> - <number>5</number> + <number>0</number> </property> <widget class="QWidget" name="av"> <layout class="QFormLayout" name="formLayout">

@@ -1295,7 +1295,7 @@ <layout class="QVBoxLayout" name="verticalLayout">

<item> <widget class="QTableView" name="loggingView"> <attribute name="horizontalHeaderDefaultSectionSize"> - <number>0</number> + <number>77</number> </attribute> <attribute name="horizontalHeaderMinimumSectionSize"> <number>0</number>

@@ -1620,28 +1620,28 @@ </widget>

</item> </layout> </item> - <item row="7" column="1"> + <item row="8" column="1"> <widget class="QCheckBox" name="sgbBorders"> <property name="text"> <string>Super Game Boy borders</string> </property> </widget> </item> - <item row="8" column="0" colspan="2"> + <item row="9" column="0" colspan="2"> <widget class="Line" name="line_11"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> - <item row="9" column="0"> + <item row="10" column="0"> <widget class="QLabel" name="label_27"> <property name="text"> <string>Camera driver:</string> </property> </widget> </item> - <item row="9" column="1"> + <item row="10" column="1"> <widget class="QComboBox" name="cameraDriver"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">

@@ -1742,6 +1742,13 @@ <item row="6" column="0">

<widget class="QLabel" name="label_70"> <property name="text"> <string>Default sprite colors 2:</string> + </property> + </widget> + </item> + <item row="7" column="1"> + <widget class="QCheckBox" name="useCgbColors"> + <property name="text"> + <string>Use GBC colors in GB games</string> </property> </widget> </item>
M src/platform/qt/Window.cppsrc/platform/qt/Window.cpp

@@ -107,6 +107,7 @@ updateTitle();

m_logo.setDevicePixelRatio(m_screenWidget->devicePixelRatio()); m_logo = m_logo; // Free memory left over in old pixmap + setWindowIcon(m_logo); #if defined(M_CORE_GBA) float i = 2;

@@ -1165,7 +1166,7 @@ m_platformActions.append(qMakePair(quickLoad, SUPPORT_GB | SUPPORT_GBA));

addControlledAction(quickLoadMenu, quickLoad, "quickLoad"); QAction* quickSave = new QAction(tr("Save recent"), quickSaveMenu); - connect(quickLoad, &QAction::triggered, [this] { + connect(quickSave, &QAction::triggered, [this] { m_controller->saveState(); }); m_gameActions.append(quickSave);

@@ -1433,7 +1434,7 @@ #endif

#ifdef M_CORE_GBA QAction* bcGate = new QAction(tr("BattleChip Gate..."), emulationMenu); - connect(bcGate, &QAction::triggered, openControllerTView<BattleChipView>()); + connect(bcGate, &QAction::triggered, openControllerTView<BattleChipView>(this)); addControlledAction(emulationMenu, bcGate, "bcGate"); m_platformActions.append(qMakePair(bcGate, SUPPORT_GBA)); m_gameActions.append(bcGate);
M src/platform/qt/resources.qrcsrc/platform/qt/resources.qrc

@@ -1,11 +1,17 @@

- <!DOCTYPE RCC><RCC version="1.0"> +<!DOCTYPE RCC> +<RCC version="1.0"> <qresource> - <file>../../../res/medusa-bg.jpg</file> - <file>../../../res/patrons.txt</file> - <file>../../../res/no-cam.png</file> - <file>input/default-profiles.ini</file> - <file>../../../res/chip-names-4.txt</file> - <file>../../../res/chip-names-5.txt</file> - <file>../../../res/chip-names-6.txt</file> + <file>../../../res/medusa-bg.jpg</file> + <file>../../../res/patrons.txt</file> + <file>../../../res/no-cam.png</file> + <file>input/default-profiles.ini</file> </qresource> - </RCC> + <qresource prefix="/exe"> + <file alias="exe4/chip-names.txt">../../../res/exe4/chip-names.txt</file> + <file alias="exe4/placeholder.png">../../../res/exe4/placeholder.png</file> + <file alias="exe5/chip-names.txt">../../../res/exe5/chip-names.txt</file> + <file alias="exe5/placeholder.png">../../../res/exe5/placeholder.png</file> + <file alias="exe6/chip-names.txt">../../../res/exe6/chip-names.txt</file> + <file alias="exe6/placeholder.png">../../../res/exe6/placeholder.png</file> + </qresource> +</RCC>
M src/platform/qt/ts/medusa-emu-de.tssrc/platform/qt/ts/medusa-emu-de.ts

@@ -126,6 +126,79 @@ <translation>0x00 (00)</translation>

</message> </context> <context> + <name>BattleChipView</name> + <message> + <location filename="../BattleChipView.ui" line="14"/> + <source>BattleChip Gate</source> + <translation>BattleChip Gate</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="73"/> + <source>Chip name</source> + <translation>Chip-Name</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="82"/> + <source>Insert</source> + <translation>Einsetzen</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="93"/> + <source>Save</source> + <translation>Speichern</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="100"/> + <source>Load</source> + <translation>Laden</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="120"/> + <source>Add</source> + <translation>Hinzufügen</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="127"/> + <source>Remove</source> + <translation>Entfernen</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="144"/> + <source>Gate type</source> + <translation>Gate-Typ</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="151"/> + <source>Ba&amp;ttleChip Gate</source> + <translation>Ba&amp;ttleChip Gate</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="161"/> + <source>Progress &amp;Gate</source> + <translation>Progress &amp;Gate</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="168"/> + <source>Beast &amp;Link Gate</source> + <translation>Beast &amp;Link Gate</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="186"/> + <source>Inserted</source> + <translation>Eingesetzt</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="200"/> + <source>Chip ID</source> + <translation>Chip-ID</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="212"/> + <source>Show advanced</source> + <translation>Erweiterte Optionen anzeigen</translation> + </message> +</context> +<context> <name>CheatsView</name> <message> <location filename="../CheatsView.ui" line="14"/>

@@ -632,56 +705,56 @@ <translation>Ausrichtung festlegen:</translation>

</message> <message> <location filename="../MemoryView.ui" line="101"/> - <source>1 Byte</source> - <translation>1 Byte</translation> + <source>&amp;1 Byte</source> + <translation>&amp;1 Byte</translation> </message> <message> <location filename="../MemoryView.ui" line="124"/> - <source>2 Bytes</source> - <translation>2 Bytes</translation> + <source>&amp;2 Bytes</source> + <translation>&amp;2 Bytes</translation> </message> <message> <location filename="../MemoryView.ui" line="144"/> - <source>4 Bytes</source> - <translation>4 Bytes</translation> + <source>&amp;4 Bytes</source> + <translation>&amp;4 Bytes</translation> </message> <message> - <location filename="../MemoryView.ui" line="199"/> + <location filename="../MemoryView.ui" line="198"/> <source>Signed Integer:</source> <translation>Signed Integer:</translation> </message> <message> - <location filename="../MemoryView.ui" line="217"/> + <location filename="../MemoryView.ui" line="216"/> <source>String:</source> <translation>String:</translation> </message> <message> - <location filename="../MemoryView.ui" line="231"/> + <location filename="../MemoryView.ui" line="230"/> <source>Load TBL</source> <translation>TBL laden</translation> </message> <message> - <location filename="../MemoryView.ui" line="244"/> + <location filename="../MemoryView.ui" line="243"/> <source>Copy Selection</source> <translation>Auswahl kopieren</translation> </message> <message> - <location filename="../MemoryView.ui" line="251"/> + <location filename="../MemoryView.ui" line="250"/> <source>Paste</source> <translation>Einfügen</translation> </message> <message> - <location filename="../MemoryView.ui" line="271"/> + <location filename="../MemoryView.ui" line="270"/> <source>Save Selection</source> <translation>Auswahl speichern</translation> </message> <message> - <location filename="../MemoryView.ui" line="278"/> + <location filename="../MemoryView.ui" line="277"/> <source>Load</source> <translation>Laden</translation> </message> <message> - <location filename="../MemoryView.ui" line="181"/> + <location filename="../MemoryView.ui" line="180"/> <source>Unsigned Integer:</source> <translation>Unsigned Integer:</translation> </message>

@@ -1211,22 +1284,22 @@ </context>

<context> <name>QGBA::CoreController</name> <message> - <location filename="../CoreController.cpp" line="557"/> + <location filename="../CoreController.cpp" line="556"/> <source>Failed to open save file: %1</source> <translation>Fehler beim Öffnen der Speicherdatei: %1</translation> </message> <message> - <location filename="../CoreController.cpp" line="586"/> + <location filename="../CoreController.cpp" line="585"/> <source>Failed to open game file: %1</source> <translation>Fehler beim Öffnen der Spieldatei: %1</translation> </message> <message> - <location filename="../CoreController.cpp" line="651"/> + <location filename="../CoreController.cpp" line="650"/> <source>Failed to open snapshot file for reading: %1</source> <translation>Konnte Snapshot-Datei %1 nicht zum Lesen öffnen</translation> </message> <message> - <location filename="../CoreController.cpp" line="667"/> + <location filename="../CoreController.cpp" line="666"/> <source>Failed to open snapshot file for writing: %1</source> <translation>Konnte Snapshot-Datei %1 nicht zum Schreiben öffnen</translation> </message>

@@ -2760,39 +2833,88 @@ <translation>Speicherplatz %1</translation>

</message> </context> <context> + <name>QGBA::LogConfigModel</name> + <message> + <location filename="../LogConfigModel.cpp" line="79"/> + <location filename="../LogConfigModel.cpp" line="100"/> + <source>Default</source> + <translation>Standard</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="81"/> + <source>Fatal</source> + <translation>Kritisch</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="83"/> + <source>Error</source> + <translation>Fehler</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="85"/> + <source>Warning</source> + <translation>Warnung</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="87"/> + <source>Info</source> + <translation>Info</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="89"/> + <source>Debug</source> + <translation>Debug</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="91"/> + <source>Stub</source> + <translation>Stub</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="93"/> + <source>Game Error</source> + <translation>Spiel-Fehler</translation> + </message> +</context> +<context> <name>QGBA::LogController</name> <message> - <location filename="../LogController.cpp" line="65"/> + <location filename="../LogController.cpp" line="58"/> + <source>[%1] %2: %3</source> + <translation>[%1] %2: %3</translation> + </message> + <message> + <location filename="../LogController.cpp" line="133"/> <source>DEBUG</source> <translation>DEBUG</translation> </message> <message> - <location filename="../LogController.cpp" line="67"/> + <location filename="../LogController.cpp" line="135"/> <source>STUB</source> <translation>STUB</translation> </message> <message> - <location filename="../LogController.cpp" line="69"/> + <location filename="../LogController.cpp" line="137"/> <source>INFO</source> <translation>INFO</translation> </message> <message> - <location filename="../LogController.cpp" line="71"/> + <location filename="../LogController.cpp" line="139"/> <source>WARN</source> <translation>WARN</translation> </message> <message> - <location filename="../LogController.cpp" line="73"/> + <location filename="../LogController.cpp" line="141"/> <source>ERROR</source> <translation>ERROR</translation> </message> <message> - <location filename="../LogController.cpp" line="75"/> + <location filename="../LogController.cpp" line="143"/> <source>FATAL</source> <translation>FATAL</translation> </message> <message> - <location filename="../LogController.cpp" line="77"/> + <location filename="../LogController.cpp" line="145"/> <source>GAME ERROR</source> <translation>GAME ERROR</translation> </message>

@@ -2934,54 +3056,54 @@ </context>

<context> <name>QGBA::ObjView</name> <message> - <location filename="../ObjView.cpp" line="145"/> - <location filename="../ObjView.cpp" line="239"/> + <location filename="../ObjView.cpp" line="148"/> + <location filename="../ObjView.cpp" line="242"/> <source>0x%0</source> <translation>0x%0</translation> </message> <message> - <location filename="../ObjView.cpp" line="156"/> + <location filename="../ObjView.cpp" line="159"/> <source>Off</source> <translation>Aus</translation> </message> <message> - <location filename="../ObjView.cpp" line="161"/> + <location filename="../ObjView.cpp" line="164"/> <source>Normal</source> <translation>Normal</translation> </message> <message> - <location filename="../ObjView.cpp" line="164"/> + <location filename="../ObjView.cpp" line="167"/> <source>Trans</source> <translation>Trans</translation> </message> <message> - <location filename="../ObjView.cpp" line="167"/> + <location filename="../ObjView.cpp" line="170"/> <source>OBJWIN</source> <translation>OBJWIN</translation> </message> <message> - <location filename="../ObjView.cpp" line="170"/> + <location filename="../ObjView.cpp" line="173"/> <source>Invalid</source> <translation>Ungültig</translation> </message> <message> - <location filename="../ObjView.cpp" line="246"/> - <location filename="../ObjView.cpp" line="247"/> + <location filename="../ObjView.cpp" line="249"/> + <location filename="../ObjView.cpp" line="250"/> <source>N/A</source> <translation>N/A</translation> </message> <message> - <location filename="../ObjView.cpp" line="253"/> + <location filename="../ObjView.cpp" line="256"/> <source>Export sprite</source> <translation>Sprite exportieren</translation> </message> <message> - <location filename="../ObjView.cpp" line="254"/> + <location filename="../ObjView.cpp" line="257"/> <source>Portable Network Graphics (*.png)</source> <translation>Portable Network Graphics (*.png)</translation> </message> <message> - <location filename="../ObjView.cpp" line="257"/> + <location filename="../ObjView.cpp" line="260"/> <source>Failed to open output PNG file: %1</source> <translation>Fehler beim Öffnen der Ausgabe-PNG-Datei: %1</translation> </message>

@@ -3027,19 +3149,6 @@ <translation>Fehler beim Öffnen der Ausgabe-Palettendatei: %1</translation>

</message> </context> <context> - <name>QGBA::PrinterView</name> - <message> - <location filename="../PrinterView.cpp" line="35"/> - <source>Save Printout</source> - <translation>Ausdruck speichern</translation> - </message> - <message> - <location filename="../PrinterView.cpp" line="35"/> - <source>Portable Network Graphics (*.png)</source> - <translation>Portable Network Graphics (*.png)</translation> - </message> -</context> -<context> <name>QGBA::ROMInfo</name> <message> <location filename="../ROMInfo.cpp" line="44"/>

@@ -3065,59 +3174,59 @@ </context>

<context> <name>QGBA::SettingsView</name> <message> - <location filename="../SettingsView.cpp" line="142"/> - <location filename="../SettingsView.cpp" line="184"/> + <location filename="../SettingsView.cpp" line="144"/> + <location filename="../SettingsView.cpp" line="186"/> <source>Qt Multimedia</source> <translation>Qt Multimedia</translation> </message> <message> - <location filename="../SettingsView.cpp" line="149"/> + <location filename="../SettingsView.cpp" line="151"/> <source>SDL</source> <translation>SDL</translation> </message> <message> - <location filename="../SettingsView.cpp" line="157"/> + <location filename="../SettingsView.cpp" line="159"/> <source>Software (Qt)</source> <translation>Software (Qt)</translation> </message> <message> - <location filename="../SettingsView.cpp" line="163"/> + <location filename="../SettingsView.cpp" line="165"/> <source>OpenGL</source> <translation>OpenGL</translation> </message> <message> - <location filename="../SettingsView.cpp" line="170"/> + <location filename="../SettingsView.cpp" line="172"/> <source>OpenGL (force version 1.x)</source> <translation>OpenGL (erzwinge Version 1.x)</translation> </message> <message> - <location filename="../SettingsView.cpp" line="178"/> + <location filename="../SettingsView.cpp" line="180"/> <source>None (Still Image)</source> <translation>Keiner (Standbild)</translation> </message> <message> - <location filename="../SettingsView.cpp" line="259"/> + <location filename="../SettingsView.cpp" line="261"/> <source>Keyboard</source> <translation>Tastatur</translation> </message> <message> - <location filename="../SettingsView.cpp" line="268"/> + <location filename="../SettingsView.cpp" line="270"/> <source>Controllers</source> <translation>Gamepads</translation> </message> <message> - <location filename="../SettingsView.cpp" line="300"/> + <location filename="../SettingsView.cpp" line="314"/> <source>Shortcuts</source> <translation>Tastenkürzel</translation> </message> <message> - <location filename="../SettingsView.cpp" line="312"/> - <location filename="../SettingsView.cpp" line="322"/> + <location filename="../SettingsView.cpp" line="326"/> + <location filename="../SettingsView.cpp" line="336"/> <source>Shaders</source> <translation>Shader</translation> </message> <message> - <location filename="../SettingsView.cpp" line="329"/> + <location filename="../SettingsView.cpp" line="343"/> <source>Select BIOS</source> <translation>BIOS auswählen</translation> </message>

@@ -3176,7 +3285,7 @@ </context>

<context> <name>QGBA::Window</name> <message> - <location filename="../Window.cpp" line="274"/> + <location filename="../Window.cpp" line="277"/> <source>Game Boy Advance ROMs (%1)</source> <translation>Game Boy Advance-ROMs (%1)</translation> </message>

@@ -3191,73 +3300,73 @@ <source>Game Boy ROMs (%1)</source>

<translation>Game Boy-ROMs (%1)</translation> </message> <message> - <location filename="../Window.cpp" line="295"/> + <location filename="../Window.cpp" line="298"/> <source>All ROMs (%1)</source> <translation>Alle ROMs (%1)</translation> </message> <message> - <location filename="../Window.cpp" line="296"/> + <location filename="../Window.cpp" line="299"/> <source>%1 Video Logs (*.mvl)</source> <translation>%1 Video-Logs (*.mvl)</translation> </message> <message> - <location filename="../Window.cpp" line="311"/> + <location filename="../Window.cpp" line="314"/> <source>Archives (%1)</source> <translation>Archive (%1)</translation> </message> <message> - <location filename="../Window.cpp" line="316"/> - <location filename="../Window.cpp" line="324"/> - <location filename="../Window.cpp" line="351"/> + <location filename="../Window.cpp" line="319"/> + <location filename="../Window.cpp" line="327"/> + <location filename="../Window.cpp" line="354"/> <source>Select ROM</source> <translation>ROM auswählen</translation> </message> <message> - <location filename="../Window.cpp" line="359"/> + <location filename="../Window.cpp" line="362"/> <source>Game Boy Advance save files (%1)</source> <translation>Game Boy Advance-Speicherdateien (%1)</translation> </message> <message> - <location filename="../Window.cpp" line="360"/> - <location filename="../Window.cpp" line="421"/> - <location filename="../Window.cpp" line="428"/> + <location filename="../Window.cpp" line="363"/> + <location filename="../Window.cpp" line="424"/> + <location filename="../Window.cpp" line="431"/> <source>Select save</source> <translation>Speicherdatei wählen</translation> </message> <message> - <location filename="../Window.cpp" line="368"/> + <location filename="../Window.cpp" line="371"/> <source>mGBA savestate files (%1)</source> <translation>mGBA Savestate-Dateien (%1)</translation> </message> <message> - <location filename="../Window.cpp" line="370"/> - <location filename="../Window.cpp" line="375"/> + <location filename="../Window.cpp" line="373"/> + <location filename="../Window.cpp" line="378"/> <source>Select savestate</source> <translation>Savestate auswählen</translation> </message> <message> - <location filename="../Window.cpp" line="397"/> + <location filename="../Window.cpp" line="400"/> <source>Select patch</source> <translation>Patch wählen</translation> </message> <message> - <location filename="../Window.cpp" line="397"/> + <location filename="../Window.cpp" line="400"/> <source>Patches (*.ips *.ups *.bps)</source> <translation>Patches (*.ips *.ups *.bps)</translation> </message> <message> - <location filename="../Window.cpp" line="414"/> + <location filename="../Window.cpp" line="417"/> <source>Select image</source> <translation>Bild auswählen</translation> </message> <message> - <location filename="../Window.cpp" line="414"/> + <location filename="../Window.cpp" line="417"/> <source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source> <translation>Bild-Datei (*.png *.gif *.jpg *.jpeg);;Alle Dateien (*)</translation> </message> <message> - <location filename="../Window.cpp" line="421"/> - <location filename="../Window.cpp" line="428"/> + <location filename="../Window.cpp" line="424"/> + <location filename="../Window.cpp" line="431"/> <source>GameShark saves (*.sps *.xps)</source> <translation>GameShark-Speicherdaten (*.sps *.xps)</translation> </message>

@@ -3277,17 +3386,17 @@ <source>Select video log</source>

<translation>Video-Log auswählen</translation> </message> <message> - <location filename="../Window.cpp" line="453"/> + <location filename="../Window.cpp" line="456"/> <source>Video logs (*.mvl)</source> <translation>Video-Logs (*.mvl)</translation> </message> <message> - <location filename="../Window.cpp" line="799"/> + <location filename="../Window.cpp" line="810"/> <source>Crash</source> <translation>Absturz</translation> </message> <message> - <location filename="../Window.cpp" line="800"/> + <location filename="../Window.cpp" line="811"/> <source>The game has crashed with the following error: %1</source>

@@ -3296,508 +3405,513 @@

%1</translation> </message> <message> - <location filename="../Window.cpp" line="808"/> + <location filename="../Window.cpp" line="818"/> <source>Couldn&apos;t Load</source> <translation>Konnte nicht geladen werden</translation> </message> <message> - <location filename="../Window.cpp" line="809"/> + <location filename="../Window.cpp" line="819"/> <source>Could not load game. Are you sure it&apos;s in the correct format?</source> <translation>Konnte das Spiel nicht laden. Sind Sie sicher, dass es im korrekten Format vorliegt?</translation> </message> <message> - <location filename="../Window.cpp" line="822"/> + <location filename="../Window.cpp" line="832"/> <source>Unimplemented BIOS call</source> <translation>Nicht implementierter BIOS-Aufruf</translation> </message> <message> - <location filename="../Window.cpp" line="823"/> + <location filename="../Window.cpp" line="833"/> <source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source> <translation>Dieses Spiel verwendet einen BIOS-Aufruf, der nicht implementiert ist. Bitte verwenden Sie für die beste Spielerfahrung das offizielle BIOS.</translation> </message> <message> - <location filename="../Window.cpp" line="905"/> + <location filename="../Window.cpp" line="915"/> <source>Really make portable?</source> <translation>Portablen Modus wirklich aktivieren?</translation> </message> <message> - <location filename="../Window.cpp" line="906"/> + <location filename="../Window.cpp" line="916"/> <source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source> <translation>Diese Einstellung wird den Emulator so konfigurieren, dass er seine Konfiguration aus dem gleichen Verzeichnis wie die Programmdatei lädt. Möchten Sie fortfahren?</translation> </message> <message> - <location filename="../Window.cpp" line="914"/> + <location filename="../Window.cpp" line="924"/> <source>Restart needed</source> <translation>Neustart benötigt</translation> </message> <message> - <location filename="../Window.cpp" line="915"/> + <location filename="../Window.cpp" line="925"/> <source>Some changes will not take effect until the emulator is restarted.</source> <translation>Einige Änderungen werden erst übernommen, wenn der Emulator neu gestartet wurde.</translation> </message> <message> - <location filename="../Window.cpp" line="963"/> + <location filename="../Window.cpp" line="973"/> <source> - Player %1 of %2</source> <translation> - Spieler %1 von %2</translation> </message> <message> - <location filename="../Window.cpp" line="974"/> + <location filename="../Window.cpp" line="984"/> <source>%1 - %2</source> <translation>%1 - %2</translation> </message> <message> - <location filename="../Window.cpp" line="976"/> + <location filename="../Window.cpp" line="986"/> <source>%1 - %2 - %3</source> <translation>%1 - %2 - %3</translation> </message> <message> - <location filename="../Window.cpp" line="978"/> + <location filename="../Window.cpp" line="988"/> <source>%1 - %2 (%3 fps) - %4</source> <translation>%1 - %2 (%3 Bilder/Sekunde) - %4</translation> </message> <message> - <location filename="../Window.cpp" line="1014"/> + <location filename="../Window.cpp" line="1024"/> <source>&amp;File</source> <translation>&amp;Datei</translation> </message> <message> - <location filename="../Window.cpp" line="1017"/> + <location filename="../Window.cpp" line="1027"/> <source>Load &amp;ROM...</source> <translation>&amp;ROM laden...</translation> </message> <message> - <location filename="../Window.cpp" line="1020"/> + <location filename="../Window.cpp" line="1030"/> <source>Load ROM in archive...</source> <translation>ROM aus Archiv laden...</translation> </message> <message> - <location filename="../Window.cpp" line="1026"/> + <location filename="../Window.cpp" line="1036"/> <source>Load alternate save...</source> <translation>Alternative Speicherdatei laden...</translation> </message> <message> - <location filename="../Window.cpp" line="1031"/> + <location filename="../Window.cpp" line="1041"/> <source>Load temporary save...</source> <translation>Temporäre Speicherdatei laden...</translation> </message> <message> - <location filename="../Window.cpp" line="1036"/> + <location filename="../Window.cpp" line="1046"/> <source>Load &amp;patch...</source> <translation>&amp;Patch laden...</translation> </message> <message> - <location filename="../Window.cpp" line="1039"/> + <location filename="../Window.cpp" line="1049"/> <source>Boot BIOS</source> <translation>BIOS booten</translation> </message> <message> - <location filename="../Window.cpp" line="1046"/> + <location filename="../Window.cpp" line="1056"/> <source>Replace ROM...</source> <translation>ROM ersetzen...</translation> </message> <message> - <location filename="../Window.cpp" line="1048"/> + <location filename="../Window.cpp" line="1058"/> <source>ROM &amp;info...</source> <translation>ROM-&amp;Informationen...</translation> </message> <message> - <location filename="../Window.cpp" line="1053"/> + <location filename="../Window.cpp" line="1063"/> <source>Recent</source> <translation>Zuletzt verwendet</translation> </message> <message> - <location filename="../Window.cpp" line="1057"/> + <location filename="../Window.cpp" line="1067"/> <source>Make portable</source> <translation>Portablen Modus aktivieren</translation> </message> <message> - <location filename="../Window.cpp" line="1061"/> + <location filename="../Window.cpp" line="1071"/> <source>&amp;Load state</source> <translation>Savestate (aktueller Zustand) &amp;laden</translation> </message> <message> - <location filename="../Window.cpp" line="1062"/> + <location filename="../Window.cpp" line="1072"/> <source>F10</source> <translation>F10</translation> </message> <message> - <location filename="../Window.cpp" line="1068"/> + <location filename="../Window.cpp" line="1078"/> <source>Load state file...</source> <translation>Ssavestate-Datei laden...</translation> </message> <message> - <location filename="../Window.cpp" line="1074"/> + <location filename="../Window.cpp" line="1084"/> <source>&amp;Save state</source> <translation>Savestate (aktueller Zustand) &amp;speichern</translation> </message> <message> - <location filename="../Window.cpp" line="1075"/> + <location filename="../Window.cpp" line="1085"/> <source>Shift+F10</source> <translation>Umschalt+F10</translation> </message> <message> - <location filename="../Window.cpp" line="1081"/> + <location filename="../Window.cpp" line="1091"/> <source>Save state file...</source> <translation>Savestate-Datei speichern...</translation> </message> <message> - <location filename="../Window.cpp" line="1087"/> + <location filename="../Window.cpp" line="1097"/> <source>Quick load</source> <translation>Schnell laden</translation> </message> <message> - <location filename="../Window.cpp" line="1088"/> + <location filename="../Window.cpp" line="1098"/> <source>Quick save</source> <translation>Schnell speichern</translation> </message> <message> - <location filename="../Window.cpp" line="1092"/> + <location filename="../Window.cpp" line="1102"/> <source>Load recent</source> <translation>Lade zuletzt gespeicherten Savestate</translation> </message> <message> - <location filename="../Window.cpp" line="1100"/> + <location filename="../Window.cpp" line="1110"/> <source>Save recent</source> <translation>Speichere aktuellen Zustand</translation> </message> <message> - <location filename="../Window.cpp" line="1111"/> + <location filename="../Window.cpp" line="1121"/> <source>Undo load state</source> <translation>Laden des Savestate rückgängig machen</translation> </message> <message> - <location filename="../Window.cpp" line="1112"/> + <location filename="../Window.cpp" line="1122"/> <source>F11</source> <translation>F11</translation> </message> <message> - <location filename="../Window.cpp" line="1120"/> + <location filename="../Window.cpp" line="1130"/> <source>Undo save state</source> <translation>Speichern des Savestate rückgängig machen</translation> </message> <message> - <location filename="../Window.cpp" line="1121"/> + <location filename="../Window.cpp" line="1131"/> <source>Shift+F11</source> <translation>Umschalt+F11</translation> </message> <message> - <location filename="../Window.cpp" line="1134"/> - <location filename="../Window.cpp" line="1143"/> + <location filename="../Window.cpp" line="1144"/> + <location filename="../Window.cpp" line="1153"/> <source>State &amp;%1</source> <translation>Savestate &amp;%1</translation> </message> <message> - <location filename="../Window.cpp" line="1135"/> + <location filename="../Window.cpp" line="1145"/> <source>F%1</source> <translation>F%1</translation> </message> <message> - <location filename="../Window.cpp" line="1144"/> + <location filename="../Window.cpp" line="1154"/> <source>Shift+F%1</source> <translation>Umschalt+F%1</translation> </message> <message> - <location filename="../Window.cpp" line="1154"/> + <location filename="../Window.cpp" line="1164"/> <source>Load camera image...</source> <translation>Lade Kamerabild...</translation> </message> <message> - <location filename="../Window.cpp" line="1160"/> + <location filename="../Window.cpp" line="1170"/> <source>Import GameShark Save</source> <translation>Importiere GameShark-Speicherstand</translation> </message> <message> - <location filename="../Window.cpp" line="1166"/> + <location filename="../Window.cpp" line="1176"/> <source>Export GameShark Save</source> <translation>Exportiere GameShark-Speicherstand</translation> </message> <message> - <location filename="../Window.cpp" line="1174"/> + <location filename="../Window.cpp" line="1184"/> <source>New multiplayer window</source> <translation>Neues Multiplayer-Fenster</translation> </message> <message> - <location filename="../Window.cpp" line="1184"/> + <location filename="../Window.cpp" line="1194"/> <source>About</source> <translation>Über</translation> </message> <message> - <location filename="../Window.cpp" line="1189"/> + <location filename="../Window.cpp" line="1199"/> <source>E&amp;xit</source> <translation>&amp;Beenden</translation> </message> <message> - <location filename="../Window.cpp" line="1192"/> + <location filename="../Window.cpp" line="1202"/> <source>&amp;Emulation</source> <translation>&amp;Emulation</translation> </message> <message> - <location filename="../Window.cpp" line="1194"/> + <location filename="../Window.cpp" line="1204"/> <source>&amp;Reset</source> <translation>Zu&amp;rücksetzen</translation> </message> <message> - <location filename="../Window.cpp" line="1195"/> + <location filename="../Window.cpp" line="1205"/> <source>Ctrl+R</source> <translation>Strg+R</translation> </message> <message> - <location filename="../Window.cpp" line="1202"/> + <location filename="../Window.cpp" line="1212"/> <source>Sh&amp;utdown</source> <translation>Schli&amp;eßen</translation> </message> <message> - <location filename="../Window.cpp" line="1210"/> + <location filename="../Window.cpp" line="1220"/> <source>Yank game pak</source> <translation>Spielmodul herausziehen</translation> </message> <message> - <location filename="../Window.cpp" line="1220"/> + <location filename="../Window.cpp" line="1230"/> <source>&amp;Pause</source> <translation>&amp;Pause</translation> </message> <message> - <location filename="../Window.cpp" line="1223"/> + <location filename="../Window.cpp" line="1233"/> <source>Ctrl+P</source> <translation>Strg+P</translation> </message> <message> - <location filename="../Window.cpp" line="1236"/> + <location filename="../Window.cpp" line="1246"/> <source>&amp;Next frame</source> <translation>&amp;Nächstes Bild</translation> </message> <message> - <location filename="../Window.cpp" line="1237"/> + <location filename="../Window.cpp" line="1247"/> <source>Ctrl+N</source> <translation>Strg+N</translation> </message> <message> - <location filename="../Window.cpp" line="1254"/> + <location filename="../Window.cpp" line="1264"/> <source>Fast forward (held)</source> <translation>Schneller Vorlauf (gehalten)</translation> </message> <message> - <location filename="../Window.cpp" line="1256"/> + <location filename="../Window.cpp" line="1266"/> <source>&amp;Fast forward</source> <translation>Schneller &amp;Vorlauf</translation> </message> <message> - <location filename="../Window.cpp" line="1259"/> + <location filename="../Window.cpp" line="1269"/> <source>Shift+Tab</source> <translation>Umschalt+Tab</translation> </message> <message> - <location filename="../Window.cpp" line="1266"/> + <location filename="../Window.cpp" line="1276"/> <source>Fast forward speed</source> <translation>Vorlauf-Geschwindigkeit</translation> </message> <message> - <location filename="../Window.cpp" line="1271"/> + <location filename="../Window.cpp" line="1281"/> <source>Unbounded</source> <translation>Unbegrenzt</translation> </message> <message> - <location filename="../Window.cpp" line="1275"/> + <location filename="../Window.cpp" line="1285"/> <source>%0x</source> <translation>%0x</translation> </message> <message> - <location filename="../Window.cpp" line="1287"/> + <location filename="../Window.cpp" line="1297"/> <source>Rewind (held)</source> <translation>Zurückspulen (gehalten)</translation> </message> <message> - <location filename="../Window.cpp" line="1289"/> + <location filename="../Window.cpp" line="1299"/> <source>Re&amp;wind</source> <translation>Zur&amp;ückspulen</translation> </message> <message> - <location filename="../Window.cpp" line="1290"/> + <location filename="../Window.cpp" line="1300"/> <source>~</source> <translation>~</translation> </message> <message> - <location filename="../Window.cpp" line="1298"/> + <location filename="../Window.cpp" line="1308"/> <source>Step backwards</source> <translation>Schrittweiser Rücklauf</translation> </message> <message> - <location filename="../Window.cpp" line="1299"/> + <location filename="../Window.cpp" line="1309"/> <source>Ctrl+B</source> <translation>Strg+B</translation> </message> <message> - <location filename="../Window.cpp" line="1308"/> + <location filename="../Window.cpp" line="1318"/> <source>Sync to &amp;video</source> <translation>Mit &amp;Video synchronisieren</translation> </message> <message> - <location filename="../Window.cpp" line="1315"/> + <location filename="../Window.cpp" line="1325"/> <source>Sync to &amp;audio</source> <translation>Mit &amp;Audio synchronisieren</translation> </message> <message> - <location filename="../Window.cpp" line="1323"/> + <location filename="../Window.cpp" line="1333"/> <source>Solar sensor</source> <translation>Solar-Sensor</translation> </message> <message> - <location filename="../Window.cpp" line="1325"/> + <location filename="../Window.cpp" line="1335"/> <source>Increase solar level</source> <translation>Sonnen-Level erhöhen</translation> </message> <message> - <location filename="../Window.cpp" line="1329"/> + <location filename="../Window.cpp" line="1339"/> <source>Decrease solar level</source> <translation>Sonnen-Level verringern</translation> </message> <message> - <location filename="../Window.cpp" line="1333"/> + <location filename="../Window.cpp" line="1343"/> <source>Brightest solar level</source> <translation>Hellster Sonnen-Level</translation> </message> <message> - <location filename="../Window.cpp" line="1337"/> + <location filename="../Window.cpp" line="1347"/> <source>Darkest solar level</source> <translation>Dunkelster Sonnen-Level</translation> </message> <message> - <location filename="../Window.cpp" line="1343"/> + <location filename="../Window.cpp" line="1353"/> <source>Brightness %1</source> <translation>Helligkeit %1</translation> </message> <message> - <location filename="../Window.cpp" line="1350"/> + <location filename="../Window.cpp" line="1373"/> + <source>BattleChip Gate...</source> + <translation>BattleChip Gate...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1380"/> <source>Audio/&amp;Video</source> <translation>Audio/&amp;Video</translation> </message> <message> - <location filename="../Window.cpp" line="1352"/> + <location filename="../Window.cpp" line="1382"/> <source>Frame size</source> <translation>Bildgröße</translation> </message> <message> - <location filename="../Window.cpp" line="1355"/> + <location filename="../Window.cpp" line="1385"/> <source>%1x</source> <translation>%1x</translation> </message> <message> - <location filename="../Window.cpp" line="1383"/> + <location filename="../Window.cpp" line="1413"/> <source>Toggle fullscreen</source> <translation>Vollbildmodus umschalten</translation> </message> <message> - <location filename="../Window.cpp" line="1386"/> + <location filename="../Window.cpp" line="1416"/> <source>Lock aspect ratio</source> <translation>Seitenverhältnis korrigieren</translation> </message> <message> - <location filename="../Window.cpp" line="1398"/> + <location filename="../Window.cpp" line="1428"/> <source>Force integer scaling</source> <translation>Pixelgenaue Skalierung (Integer scaling)</translation> </message> <message> - <location filename="../Window.cpp" line="1418"/> + <location filename="../Window.cpp" line="1448"/> <source>Frame&amp;skip</source> <translation>Frame&amp;skip</translation> </message> <message> - <location filename="../Window.cpp" line="1431"/> + <location filename="../Window.cpp" line="1461"/> <source>Mute</source> <translation>Stummschalten</translation> </message> <message> - <location filename="../Window.cpp" line="1438"/> + <location filename="../Window.cpp" line="1468"/> <source>FPS target</source> <translation>Bildwiederholrate</translation> </message> <message> - <location filename="../Window.cpp" line="1461"/> + <location filename="../Window.cpp" line="1491"/> <source>Take &amp;screenshot</source> <translation>&amp;Screenshot erstellen</translation> </message> <message> - <location filename="../Window.cpp" line="1462"/> + <location filename="../Window.cpp" line="1492"/> <source>F12</source> <translation>F12</translation> </message> <message> - <location filename="../Window.cpp" line="1471"/> + <location filename="../Window.cpp" line="1501"/> <source>Record output...</source> <translation>Ausgabe aufzeichen...</translation> </message> <message> - <location filename="../Window.cpp" line="1478"/> + <location filename="../Window.cpp" line="1508"/> <source>Record GIF...</source> <translation>GIF aufzeichen...</translation> </message> <message> - <location filename="../Window.cpp" line="1483"/> + <location filename="../Window.cpp" line="1513"/> <source>Record video log...</source> <translation>Video-Log aufzeichnen...</translation> </message> <message> - <location filename="../Window.cpp" line="1488"/> + <location filename="../Window.cpp" line="1518"/> <source>Stop video log</source> <translation>Video-Log beenden</translation> </message> <message> - <location filename="../Window.cpp" line="1496"/> + <location filename="../Window.cpp" line="1361"/> <source>Game Boy Printer...</source> <translation>Game Boy Printer...</translation> </message> <message> - <location filename="../Window.cpp" line="1508"/> + <location filename="../Window.cpp" line="1526"/> <source>Video layers</source> <translation>Video-Ebenen</translation> </message> <message> - <location filename="../Window.cpp" line="1511"/> + <location filename="../Window.cpp" line="1529"/> <source>Audio channels</source> <translation>Audio-Kanäle</translation> </message> <message> - <location filename="../Window.cpp" line="1514"/> + <location filename="../Window.cpp" line="1532"/> <source>Adjust layer placement...</source> <translation>Lage der Bildebenen anpassen...</translation> </message> <message> - <location filename="../Window.cpp" line="1519"/> + <location filename="../Window.cpp" line="1537"/> <source>&amp;Tools</source> <translation>&amp;Werkzeuge</translation> </message> <message> - <location filename="../Window.cpp" line="1521"/> + <location filename="../Window.cpp" line="1539"/> <source>View &amp;logs...</source> <translation>&amp;Logs ansehen...</translation> </message> <message> - <location filename="../Window.cpp" line="1525"/> + <location filename="../Window.cpp" line="1543"/> <source>Game &amp;overrides...</source> <translation>Spiel-&amp;Überschreibungen...</translation> </message> <message> - <location filename="../Window.cpp" line="1539"/> + <location filename="../Window.cpp" line="1557"/> <source>Game &amp;Pak sensors...</source> <translation>Game &amp;Pak-Sensoren...</translation> </message> <message> - <location filename="../Window.cpp" line="1552"/> + <location filename="../Window.cpp" line="1570"/> <source>&amp;Cheats...</source> <translation>&amp;Cheats...</translation> </message> <message> - <location filename="../Window.cpp" line="1564"/> + <location filename="../Window.cpp" line="1582"/> <source>Open debugger console...</source> <translation>Debugger-Konsole öffnen...</translation> </message> <message> - <location filename="../Window.cpp" line="1570"/> + <location filename="../Window.cpp" line="1588"/> <source>Start &amp;GDB server...</source> <translation>&amp;GDB-Server starten...</translation> </message> <message> - <location filename="../Window.cpp" line="1558"/> + <location filename="../Window.cpp" line="1576"/> <source>Settings...</source> <translation>Einstellungen...</translation> </message>

@@ -3822,42 +3936,42 @@ <source>Select folder</source>

<translation>Ordner auswählen</translation> </message> <message> - <location filename="../Window.cpp" line="1022"/> + <location filename="../Window.cpp" line="1032"/> <source>Add folder to library...</source> <translation>Ordner zur Bibliothek hinzufügen...</translation> </message> <message> - <location filename="../Window.cpp" line="1410"/> + <location filename="../Window.cpp" line="1440"/> <source>Bilinear filtering</source> <translation>Bilineare Filterung</translation> </message> <message> - <location filename="../Window.cpp" line="1446"/> + <location filename="../Window.cpp" line="1476"/> <source>Native (59.7275)</source> <translation>Nativ (59.7275)</translation> </message> <message> - <location filename="../Window.cpp" line="1578"/> + <location filename="../Window.cpp" line="1596"/> <source>View &amp;palette...</source> <translation>&amp;Palette betrachten...</translation> </message> <message> - <location filename="../Window.cpp" line="1583"/> + <location filename="../Window.cpp" line="1601"/> <source>View &amp;sprites...</source> <translation>&amp;Sprites betrachten...</translation> </message> <message> - <location filename="../Window.cpp" line="1588"/> + <location filename="../Window.cpp" line="1606"/> <source>View &amp;tiles...</source> <translation>&amp;Tiles betrachten...</translation> </message> <message> - <location filename="../Window.cpp" line="1593"/> + <location filename="../Window.cpp" line="1611"/> <source>View &amp;map...</source> <translation>&amp;Map betrachten...</translation> </message> <message> - <location filename="../Window.cpp" line="1598"/> + <location filename="../Window.cpp" line="1616"/> <source>View memory...</source> <translation>Speicher betrachten...</translation> </message>

@@ -3872,72 +3986,72 @@ <source>Search memory...</source>

<translation>Speicher durchsuchen...</translation> </message> <message> - <location filename="../Window.cpp" line="1609"/> + <location filename="../Window.cpp" line="1627"/> <source>View &amp;I/O registers...</source> <translation>&amp;I/O-Register betrachten...</translation> </message> <message> - <location filename="../Window.cpp" line="1693"/> + <location filename="../Window.cpp" line="1711"/> <source>Exit fullscreen</source> <translation>Vollbildmodus beenden</translation> </message> <message> - <location filename="../Window.cpp" line="1706"/> + <location filename="../Window.cpp" line="1724"/> <source>GameShark Button (held)</source> <translation>GameShark-Taste (gehalten)</translation> </message> <message> - <location filename="../Window.cpp" line="1708"/> + <location filename="../Window.cpp" line="1726"/> <source>Autofire</source> <translation>Autofeuer</translation> </message> <message> - <location filename="../Window.cpp" line="1715"/> + <location filename="../Window.cpp" line="1733"/> <source>Autofire A</source> <translation>Autofeuer A</translation> </message> <message> - <location filename="../Window.cpp" line="1721"/> + <location filename="../Window.cpp" line="1739"/> <source>Autofire B</source> <translation>Autofeuer B</translation> </message> <message> - <location filename="../Window.cpp" line="1727"/> + <location filename="../Window.cpp" line="1745"/> <source>Autofire L</source> <translation>Autofeuer L</translation> </message> <message> - <location filename="../Window.cpp" line="1733"/> + <location filename="../Window.cpp" line="1751"/> <source>Autofire R</source> <translation>Autofeuer R</translation> </message> <message> - <location filename="../Window.cpp" line="1739"/> + <location filename="../Window.cpp" line="1757"/> <source>Autofire Start</source> <translation>Autofeuer Start</translation> </message> <message> - <location filename="../Window.cpp" line="1745"/> + <location filename="../Window.cpp" line="1763"/> <source>Autofire Select</source> <translation>Autofeuer Select</translation> </message> <message> - <location filename="../Window.cpp" line="1751"/> + <location filename="../Window.cpp" line="1769"/> <source>Autofire Up</source> <translation>Autofeuer nach oben</translation> </message> <message> - <location filename="../Window.cpp" line="1757"/> + <location filename="../Window.cpp" line="1775"/> <source>Autofire Right</source> <translation>Autofeuer rechts</translation> </message> <message> - <location filename="../Window.cpp" line="1763"/> + <location filename="../Window.cpp" line="1781"/> <source>Autofire Down</source> <translation>Autofeuer nach unten</translation> </message> <message> - <location filename="../Window.cpp" line="1769"/> + <location filename="../Window.cpp" line="1787"/> <source>Autofire Left</source> <translation>Autofeuer links</translation> </message>

@@ -4101,346 +4215,371 @@ <source>Settings</source>

<translation>Einstellungen</translation> </message> <message> - <location filename="../SettingsView.ui" line="45"/> + <location filename="../SettingsView.ui" line="52"/> <source>Audio/Video</source> <translation>Audio/Video</translation> </message> <message> - <location filename="../SettingsView.ui" line="50"/> + <location filename="../SettingsView.ui" line="57"/> <source>Interface</source> <translation>Benutzeroberfläche</translation> </message> <message> - <location filename="../SettingsView.ui" line="55"/> + <location filename="../SettingsView.ui" line="62"/> <source>Emulation</source> <translation>Emulation</translation> </message> <message> - <location filename="../SettingsView.ui" line="65"/> + <location filename="../SettingsView.ui" line="72"/> <source>Paths</source> <translation>Verzeichnisse</translation> </message> <message> - <location filename="../SettingsView.ui" line="70"/> + <location filename="../SettingsView.ui" line="77"/> + <source>Logging</source> + <translation>Protokoll</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="82"/> <source>Game Boy</source> <translation>Game Boy</translation> </message> <message> - <location filename="../SettingsView.ui" line="95"/> + <location filename="../SettingsView.ui" line="100"/> <source>Audio driver:</source> <translation>Audio-Treiber:</translation> </message> <message> - <location filename="../SettingsView.ui" line="112"/> + <location filename="../SettingsView.ui" line="117"/> <source>Audio buffer:</source> <translation>Audio-Puffer:</translation> </message> <message> - <location filename="../SettingsView.ui" line="124"/> - <location filename="../SettingsView.ui" line="146"/> + <location filename="../SettingsView.ui" line="129"/> + <location filename="../SettingsView.ui" line="151"/> <source>1536</source> <translation>1536</translation> </message> <message> - <location filename="../SettingsView.ui" line="131"/> + <location filename="../SettingsView.ui" line="136"/> <source>512</source> <translation>512</translation> </message> <message> - <location filename="../SettingsView.ui" line="136"/> + <location filename="../SettingsView.ui" line="141"/> <source>768</source> <translation>768</translation> </message> <message> - <location filename="../SettingsView.ui" line="141"/> + <location filename="../SettingsView.ui" line="146"/> <source>1024</source> <translation>1024</translation> </message> <message> - <location filename="../SettingsView.ui" line="151"/> + <location filename="../SettingsView.ui" line="156"/> <source>2048</source> <translation>2048</translation> </message> <message> - <location filename="../SettingsView.ui" line="156"/> + <location filename="../SettingsView.ui" line="161"/> <source>3072</source> <translation>3072</translation> </message> <message> - <location filename="../SettingsView.ui" line="161"/> + <location filename="../SettingsView.ui" line="166"/> <source>4096</source> <translation>4096</translation> </message> <message> - <location filename="../SettingsView.ui" line="169"/> + <location filename="../SettingsView.ui" line="174"/> <source>samples</source> <translation>Samples</translation> </message> <message> - <location filename="../SettingsView.ui" line="178"/> + <location filename="../SettingsView.ui" line="183"/> <source>Sample rate:</source> <translation>Abtastrate:</translation> </message> <message> - <location filename="../SettingsView.ui" line="190"/> - <location filename="../SettingsView.ui" line="207"/> + <location filename="../SettingsView.ui" line="195"/> + <location filename="../SettingsView.ui" line="212"/> <source>44100</source> <translation>44100</translation> </message> <message> - <location filename="../SettingsView.ui" line="197"/> + <location filename="../SettingsView.ui" line="202"/> <source>22050</source> <translation>22050</translation> </message> <message> - <location filename="../SettingsView.ui" line="202"/> + <location filename="../SettingsView.ui" line="207"/> <source>32000</source> <translation>32000</translation> </message> <message> - <location filename="../SettingsView.ui" line="212"/> + <location filename="../SettingsView.ui" line="217"/> <source>48000</source> <translation>48000</translation> </message> <message> - <location filename="../SettingsView.ui" line="220"/> + <location filename="../SettingsView.ui" line="225"/> <source>Hz</source> <translation>Hz</translation> </message> <message> - <location filename="../SettingsView.ui" line="229"/> + <location filename="../SettingsView.ui" line="234"/> <source>Volume:</source> <translation>Lautstärke:</translation> </message> <message> - <location filename="../SettingsView.ui" line="260"/> - <location filename="../SettingsView.ui" line="300"/> + <location filename="../SettingsView.ui" line="265"/> + <location filename="../SettingsView.ui" line="305"/> <source>Mute</source> <translation>Stummschalten</translation> </message> <message> - <location filename="../SettingsView.ui" line="269"/> + <location filename="../SettingsView.ui" line="274"/> <source>Fast forward volume:</source> <translation>Vorspul-Lautstärke:</translation> </message> <message> - <location filename="../SettingsView.ui" line="316"/> + <location filename="../SettingsView.ui" line="321"/> <source>Display driver:</source> <translation>Anzeige-Treiber:</translation> </message> <message> - <location filename="../SettingsView.ui" line="333"/> + <location filename="../SettingsView.ui" line="338"/> <source>Frameskip:</source> <translation>Frameskip:</translation> </message> <message> - <location filename="../SettingsView.ui" line="342"/> + <location filename="../SettingsView.ui" line="347"/> <source>Skip every</source> <translation>Überspringe</translation> </message> <message> - <location filename="../SettingsView.ui" line="352"/> - <location filename="../SettingsView.ui" line="705"/> + <location filename="../SettingsView.ui" line="357"/> + <location filename="../SettingsView.ui" line="710"/> <source>frames</source> <translation>Bild(er)</translation> </message> <message> - <location filename="../SettingsView.ui" line="361"/> + <location filename="../SettingsView.ui" line="366"/> <source>FPS target:</source> <translation>Bildwiederholrate:</translation> </message> <message> - <location filename="../SettingsView.ui" line="386"/> + <location filename="../SettingsView.ui" line="391"/> <source>frames per second</source> <translation>Bilder pro Sekunde</translation> </message> <message> - <location filename="../SettingsView.ui" line="402"/> + <location filename="../SettingsView.ui" line="407"/> <source>Sync:</source> <translation>Synchronisierung:</translation> </message> <message> - <location filename="../SettingsView.ui" line="411"/> + <location filename="../SettingsView.ui" line="416"/> <source>Video</source> <translation>Video</translation> </message> <message> - <location filename="../SettingsView.ui" line="418"/> + <location filename="../SettingsView.ui" line="423"/> <source>Audio</source> <translation>Audio</translation> </message> <message> - <location filename="../SettingsView.ui" line="427"/> + <location filename="../SettingsView.ui" line="432"/> <source>Lock aspect ratio</source> <translation>Seitenverhältnis korrigieren</translation> </message> <message> - <location filename="../SettingsView.ui" line="434"/> + <location filename="../SettingsView.ui" line="439"/> <source>Force integer scaling</source> <translation>Erzwinge pixelgenaue Skalierung (Integer scaling)</translation> </message> <message> - <location filename="../SettingsView.ui" line="452"/> + <location filename="../SettingsView.ui" line="457"/> <source>Language</source> <translation>Sprache</translation> </message> <message> - <location filename="../SettingsView.ui" line="460"/> + <location filename="../SettingsView.ui" line="465"/> <source>English</source> <translation>Englisch</translation> </message> <message> - <location filename="../SettingsView.ui" line="483"/> + <location filename="../SettingsView.ui" line="488"/> <source>List view</source> <translation>Listenansicht</translation> </message> <message> - <location filename="../SettingsView.ui" line="488"/> + <location filename="../SettingsView.ui" line="493"/> <source>Tree view</source> <translation>Baumansicht</translation> </message> <message> - <location filename="../SettingsView.ui" line="544"/> + <location filename="../SettingsView.ui" line="549"/> <source>Show FPS in title bar</source> <translation>Bildwiederholrate in der Titelleiste anzeigen</translation> </message> <message> - <location filename="../SettingsView.ui" line="568"/> + <location filename="../SettingsView.ui" line="573"/> <source>Automatically save cheats</source> <translation>Cheats automatisch speichern</translation> </message> <message> - <location filename="../SettingsView.ui" line="578"/> + <location filename="../SettingsView.ui" line="583"/> <source>Automatically load cheats</source> <translation>Cheats automatisch laden</translation> </message> <message> - <location filename="../SettingsView.ui" line="588"/> + <location filename="../SettingsView.ui" line="593"/> <source>Automatically save state</source> <translation>Zustand (Savestate) automatisch speichern</translation> </message> <message> - <location filename="../SettingsView.ui" line="598"/> + <location filename="../SettingsView.ui" line="603"/> <source>Automatically load state</source> <translation>Zustand (Savestate) automatisch laden</translation> </message> <message> - <location filename="../SettingsView.ui" line="1168"/> + <location filename="../SettingsView.ui" line="1173"/> <source>Cheats</source> <translation>Cheats</translation> </message> <message> - <location filename="../SettingsView.ui" line="1213"/> + <location filename="../SettingsView.ui" line="1230"/> + <source>Log to file</source> + <translation>In Datei protokollieren</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1237"/> + <source>Log to console</source> + <translation>Auf die Konsole protokollieren</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1251"/> + <source>Select Log File</source> + <translation>Protokoll-Datei auswählen</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1264"/> <source>Game Boy model</source> <translation>Game Boy-Modell</translation> </message> <message> - <location filename="../SettingsView.ui" line="1221"/> - <location filename="../SettingsView.ui" line="1257"/> - <location filename="../SettingsView.ui" line="1293"/> + <location filename="../SettingsView.ui" line="1272"/> + <location filename="../SettingsView.ui" line="1308"/> + <location filename="../SettingsView.ui" line="1344"/> <source>Autodetect</source> <translation>Automatisch erkennen</translation> </message> <message> - <location filename="../SettingsView.ui" line="1226"/> - <location filename="../SettingsView.ui" line="1262"/> - <location filename="../SettingsView.ui" line="1298"/> + <location filename="../SettingsView.ui" line="1277"/> + <location filename="../SettingsView.ui" line="1313"/> + <location filename="../SettingsView.ui" line="1349"/> <source>Game Boy (DMG)</source> <translation>Game Boy (DMG)</translation> </message> <message> - <location filename="../SettingsView.ui" line="1231"/> - <location filename="../SettingsView.ui" line="1267"/> - <location filename="../SettingsView.ui" line="1303"/> + <location filename="../SettingsView.ui" line="1282"/> + <location filename="../SettingsView.ui" line="1318"/> + <location filename="../SettingsView.ui" line="1354"/> <source>Super Game Boy (SGB)</source> <translation>Super Game Boy (SGB)</translation> </message> <message> - <location filename="../SettingsView.ui" line="1236"/> - <location filename="../SettingsView.ui" line="1272"/> - <location filename="../SettingsView.ui" line="1308"/> + <location filename="../SettingsView.ui" line="1287"/> + <location filename="../SettingsView.ui" line="1323"/> + <location filename="../SettingsView.ui" line="1359"/> <source>Game Boy Color (CGB)</source> <translation>Game Boy Color (CGB)</translation> </message> <message> - <location filename="../SettingsView.ui" line="1241"/> - <location filename="../SettingsView.ui" line="1277"/> - <location filename="../SettingsView.ui" line="1313"/> + <location filename="../SettingsView.ui" line="1292"/> + <location filename="../SettingsView.ui" line="1328"/> + <location filename="../SettingsView.ui" line="1364"/> <source>Game Boy Advance (AGB)</source> <translation>Game Boy Advance (AGB)</translation> </message> <message> - <location filename="../SettingsView.ui" line="1249"/> + <location filename="../SettingsView.ui" line="1300"/> <source>Super Game Boy model</source> <translation>Super Game Boy-Modell</translation> </message> <message> - <location filename="../SettingsView.ui" line="1285"/> + <location filename="../SettingsView.ui" line="1336"/> <source>Game Boy Color model</source> <translation>Game Boy Color-Modell</translation> </message> <message> - <location filename="../SettingsView.ui" line="1328"/> + <location filename="../SettingsView.ui" line="1379"/> <source>Default BG colors:</source> <translation>Standard-Hintergrundfarben:</translation> </message> <message> - <location filename="../SettingsView.ui" line="1606"/> + <location filename="../SettingsView.ui" line="1657"/> <source>Default sprite colors 1:</source> <translation>Standard-Sprite-Farben 1:</translation> </message> <message> - <location filename="../SettingsView.ui" line="1613"/> + <location filename="../SettingsView.ui" line="1664"/> <source>Default sprite colors 2:</source> <translation>Standard-Sprite-Farben 2:</translation> </message> <message> - <location filename="../SettingsView.ui" line="1495"/> + <location filename="../SettingsView.ui" line="1671"/> + <source>Use GBC colors in GB games</source> + <translation>Verwende GBC-Farben in GB-Spielen</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1546"/> <source>Super Game Boy borders</source> <translation>Super Game Boy-Rahmen</translation> </message> <message> - <location filename="../SettingsView.ui" line="1509"/> + <location filename="../SettingsView.ui" line="1560"/> <source>Camera driver:</source> <translation>Kamera-Treiber:</translation> </message> <message> - <location filename="../SettingsView.ui" line="475"/> + <location filename="../SettingsView.ui" line="480"/> <source>Library:</source> <translation>Bibliothek:</translation> </message> <message> - <location filename="../SettingsView.ui" line="496"/> + <location filename="../SettingsView.ui" line="501"/> <source>Show when no game open</source> <translation>Anzeigen, wenn kein Spiel geöffnet ist</translation> </message> <message> - <location filename="../SettingsView.ui" line="506"/> + <location filename="../SettingsView.ui" line="511"/> <source>Clear cache</source> <translation>Cache leeren</translation> </message> <message> - <location filename="../SettingsView.ui" line="615"/> + <location filename="../SettingsView.ui" line="620"/> <source>Fast forward speed:</source> <translation>Vorlauf-Geschwindigkeit:</translation> </message> <message> - <location filename="../SettingsView.ui" line="747"/> + <location filename="../SettingsView.ui" line="752"/> <source>Preload entire ROM into memory</source> <translation>ROM-Datei vollständig in Arbeitsspeicher vorladen</translation> </message> <message> - <location filename="../SettingsView.ui" line="859"/> - <location filename="../SettingsView.ui" line="897"/> - <location filename="../SettingsView.ui" line="932"/> - <location filename="../SettingsView.ui" line="960"/> - <location filename="../SettingsView.ui" line="1001"/> - <location filename="../SettingsView.ui" line="1049"/> - <location filename="../SettingsView.ui" line="1097"/> - <location filename="../SettingsView.ui" line="1145"/> - <location filename="../SettingsView.ui" line="1193"/> + <location filename="../SettingsView.ui" line="864"/> + <location filename="../SettingsView.ui" line="902"/> + <location filename="../SettingsView.ui" line="937"/> + <location filename="../SettingsView.ui" line="965"/> + <location filename="../SettingsView.ui" line="1006"/> + <location filename="../SettingsView.ui" line="1054"/> + <location filename="../SettingsView.ui" line="1102"/> + <location filename="../SettingsView.ui" line="1150"/> + <location filename="../SettingsView.ui" line="1198"/> <source>Browse</source> <translation>Durchsuchen</translation> </message>

@@ -4461,120 +4600,120 @@ <translation>BIOS-Datei verwenden,

wenn vorhanden</translation> </message> <message> - <location filename="../SettingsView.ui" line="878"/> + <location filename="../SettingsView.ui" line="883"/> <source>Skip BIOS intro</source> <translation>BIOS-Intro überspringen</translation> </message> <message> - <location filename="../SettingsView.ui" line="627"/> + <location filename="../SettingsView.ui" line="632"/> <source>×</source> <translation>×</translation> </message> <message> - <location filename="../SettingsView.ui" line="646"/> + <location filename="../SettingsView.ui" line="651"/> <source>Unbounded</source> <translation>unbegrenzt</translation> </message> <message> - <location filename="../SettingsView.ui" line="527"/> + <location filename="../SettingsView.ui" line="532"/> <source>Suspend screensaver</source> <translation>Bildschirmschoner deaktivieren</translation> </message> <message> - <location filename="../SettingsView.ui" line="60"/> + <location filename="../SettingsView.ui" line="67"/> <source>BIOS</source> <translation>BIOS</translation> </message> <message> - <location filename="../SettingsView.ui" line="537"/> + <location filename="../SettingsView.ui" line="542"/> <source>Pause when inactive</source> <translation>Pause, wenn inaktiv</translation> </message> <message> - <location filename="../SettingsView.ui" line="729"/> + <location filename="../SettingsView.ui" line="734"/> <source>Run all</source> <translation>Alle ausführen</translation> </message> <message> - <location filename="../SettingsView.ui" line="734"/> + <location filename="../SettingsView.ui" line="739"/> <source>Remove known</source> <translation>Bekannte entfernen</translation> </message> <message> - <location filename="../SettingsView.ui" line="739"/> + <location filename="../SettingsView.ui" line="744"/> <source>Detect and remove</source> <translation>Erkennen und entfernen</translation> </message> <message> - <location filename="../SettingsView.ui" line="520"/> + <location filename="../SettingsView.ui" line="525"/> <source>Allow opposing input directions</source> <translation>Gegensätzliche Eingaberichtungen erlauben</translation> </message> <message> - <location filename="../SettingsView.ui" line="768"/> - <location filename="../SettingsView.ui" line="812"/> + <location filename="../SettingsView.ui" line="773"/> + <location filename="../SettingsView.ui" line="817"/> <source>Screenshot</source> <translation>Screenshot</translation> </message> <message> - <location filename="../SettingsView.ui" line="778"/> - <location filename="../SettingsView.ui" line="822"/> + <location filename="../SettingsView.ui" line="783"/> + <location filename="../SettingsView.ui" line="827"/> <source>Save data</source> <translation>Speicherdaten</translation> </message> <message> - <location filename="../SettingsView.ui" line="788"/> - <location filename="../SettingsView.ui" line="829"/> + <location filename="../SettingsView.ui" line="793"/> + <location filename="../SettingsView.ui" line="834"/> <source>Cheat codes</source> <translation>Cheat-Codes</translation> </message> <message> - <location filename="../SettingsView.ui" line="682"/> + <location filename="../SettingsView.ui" line="687"/> <source>Enable rewind</source> <translation>Rücklauf aktivieren</translation> </message> <message> - <location filename="../SettingsView.ui" line="441"/> + <location filename="../SettingsView.ui" line="446"/> <source>Bilinear filtering</source> <translation>Bilineare Filterung</translation> </message> <message> - <location filename="../SettingsView.ui" line="689"/> + <location filename="../SettingsView.ui" line="694"/> <source>Rewind history:</source> <translation>Rücklauf-Verlauf:</translation> </message> <message> - <location filename="../SettingsView.ui" line="721"/> + <location filename="../SettingsView.ui" line="726"/> <source>Idle loops:</source> <translation>Leerlaufprozesse:</translation> </message> <message> - <location filename="../SettingsView.ui" line="761"/> + <location filename="../SettingsView.ui" line="766"/> <source>Savestate extra data:</source> <translation>Zusätzliche Savestate-Daten:</translation> </message> <message> - <location filename="../SettingsView.ui" line="805"/> + <location filename="../SettingsView.ui" line="810"/> <source>Load extra data:</source> <translation>Lade zusätzliche Daten:</translation> </message> <message> - <location filename="../SettingsView.ui" line="658"/> + <location filename="../SettingsView.ui" line="663"/> <source>Autofire interval:</source> <translation>Autofeuer-Intervall:</translation> </message> <message> - <location filename="../SettingsView.ui" line="840"/> + <location filename="../SettingsView.ui" line="845"/> <source>GB BIOS file:</source> <translation>Datei mit GB-BIOS:</translation> </message> <message> - <location filename="../SettingsView.ui" line="906"/> + <location filename="../SettingsView.ui" line="911"/> <source>GBA BIOS file:</source> <translation>Datei mit GBA-BIOS:</translation> </message> <message> - <location filename="../SettingsView.ui" line="913"/> + <location filename="../SettingsView.ui" line="918"/> <source>GBC BIOS file:</source> <translation>Datei mit GBC-BIOS:</translation> </message>

@@ -4589,31 +4728,31 @@ <source>SGB BIOS file:</source>

<translation>Datei mit SGB-BIOS:</translation> </message> <message> - <location filename="../SettingsView.ui" line="976"/> + <location filename="../SettingsView.ui" line="981"/> <source>Save games</source> <translation>Spielstände</translation> </message> <message> - <location filename="../SettingsView.ui" line="1010"/> - <location filename="../SettingsView.ui" line="1058"/> - <location filename="../SettingsView.ui" line="1106"/> - <location filename="../SettingsView.ui" line="1154"/> - <location filename="../SettingsView.ui" line="1202"/> + <location filename="../SettingsView.ui" line="1015"/> + <location filename="../SettingsView.ui" line="1063"/> + <location filename="../SettingsView.ui" line="1111"/> + <location filename="../SettingsView.ui" line="1159"/> + <location filename="../SettingsView.ui" line="1207"/> <source>Same directory as the ROM</source> <translation>Verzeichnis der ROM-Datei</translation> </message> <message> - <location filename="../SettingsView.ui" line="1024"/> + <location filename="../SettingsView.ui" line="1029"/> <source>Save states</source> <translation>Savestates</translation> </message> <message> - <location filename="../SettingsView.ui" line="1072"/> + <location filename="../SettingsView.ui" line="1077"/> <source>Screenshots</source> <translation>Screenshots</translation> </message> <message> - <location filename="../SettingsView.ui" line="1120"/> + <location filename="../SettingsView.ui" line="1125"/> <source>Patches</source> <translation>Patches</translation> </message>
M src/platform/qt/ts/medusa-emu-it.tssrc/platform/qt/ts/medusa-emu-it.ts

@@ -6,7 +6,7 @@ <name>AboutScreen</name>

<message> <location filename="../AboutScreen.ui" line="14"/> <source>About</source> - <translation>About</translation> + <translation>Info...</translation> </message> <message> <location filename="../AboutScreen.ui" line="23"/>

@@ -26,7 +26,7 @@ </message>

<message> <source>© 2013 – 2016 Jeffrey Pfau, licensed under the Mozilla Public License, version 2.0 Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source> - <translation type="vanished">© 2013 - 2016 Jeffrey Pfau, sotto licenza Mozilla Public License, versione 2.0 + <translation>© 2013 - 2016 Jeffrey Pfau, sotto licenza Mozilla Public License, versione 2.0 Game Boy Advance è un marchio registrato di Nintendo Co., Ltd.</translation> </message> <message>

@@ -43,7 +43,7 @@ <message>

<location filename="../AboutScreen.ui" line="86"/> <source>© 2013 – 2018 Jeffrey Pfau, licensed under the Mozilla Public License, version 2.0 Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source> - <translation type="unfinished">© 2013 - 2016 Jeffrey Pfau, sotto licenza Mozilla Public License, versione 2.0 + <translation>© 2013 - 2016 Jeffrey Pfau, sotto licenza Mozilla Public License, versione 2.0 Game Boy Advance è un marchio registrato di Nintendo Co., Ltd. {2013 ?} {2018 ?} {2.0 ?}</translation> </message>

@@ -68,7 +68,7 @@ <name>ArchiveInspector</name>

<message> <location filename="../ArchiveInspector.ui" line="14"/> <source>Open in archive...</source> - <translation>Apri il file in ...</translation> + <translation>Apri il file in archivio...</translation> </message> <message> <location filename="../ArchiveInspector.ui" line="20"/>

@@ -97,7 +97,7 @@ </message>

<message> <location filename="../AssetTile.ui" line="65"/> <source>Palette #</source> - <translation type="unfinished"></translation> + <translation>Palette Nº</translation> </message> <message> <location filename="../AssetTile.ui" line="86"/>

@@ -122,7 +122,7 @@ </message>

<message> <location filename="../AssetTile.ui" line="149"/> <source>Blue</source> - <translation>Blue</translation> + <translation>Blu</translation> </message> <message> <location filename="../AssetTile.ui" line="163"/>

@@ -142,7 +142,7 @@ </message>

<message> <location filename="../CheatsView.ui" line="20"/> <source>Remove</source> - <translation>Rimuovere</translation> + <translation>Rimuovi</translation> </message> <message> <location filename="../CheatsView.ui" line="34"/>

@@ -157,7 +157,7 @@ </message>

<message> <location filename="../CheatsView.ui" line="69"/> <source>Add New Set</source> - <translation>Aggiungere Nuovo Set</translation> + <translation>Aggiungi Nuovo Set</translation> </message> <message> <location filename="../CheatsView.ui" line="76"/>

@@ -180,7 +180,7 @@ </message>

<message> <location filename="../DebuggerConsole.ui" line="32"/> <source>Break</source> - <translation>Pausa</translation> + <translation>Interruzione</translation> </message> </context> <context>

@@ -198,7 +198,7 @@ </message>

<message> <location filename="../GIFView.ui" line="50"/> <source>Stop</source> - <translation>Stop</translation> + <translation>Ferma</translation> </message> <message> <location filename="../GIFView.ui" line="63"/>

@@ -208,7 +208,7 @@ </message>

<message> <location filename="../GIFView.ui" line="101"/> <source>Frameskip</source> - <translation>Salta Frame</translation> + <translation>Salto Frame</translation> </message> <message> <location filename="../GIFView.ui" line="115"/>

@@ -319,34 +319,34 @@ <name>LibraryTree</name>

<message> <location filename="../library/LibraryTree.cpp" line="46"/> <source>Name</source> - <translation type="unfinished">Nome</translation> + <translation>Nome</translation> </message> <message> <location filename="../library/LibraryTree.cpp" line="47"/> <source>Location</source> - <translation type="unfinished">Posizione</translation> + <translation>Posizione</translation> </message> <message> <location filename="../library/LibraryTree.cpp" line="48"/> <source>Platform</source> - <translation type="unfinished">Piattaforma</translation> + <translation>Piattaforma</translation> </message> <message> <location filename="../library/LibraryTree.cpp" line="49"/> <source>Size</source> - <translation type="unfinished">Dimensione</translation> + <translation>Dimensioni</translation> </message> <message> <location filename="../library/LibraryTree.cpp" line="50"/> <source>CRC32</source> - <translation type="unfinished">CRC32</translation> + <translation>CRC32</translation> </message> </context> <context> <name>LibraryView</name> <message> <source>Library</source> - <translation type="vanished">Biblioteca</translation> + <translation>Biblioteca</translation> </message> </context> <context>

@@ -436,7 +436,7 @@ </message>

<message> <location filename="../LogView.ui" line="38"/> <source>Stub</source> - <translation>Stub</translation> + <translation>Matrice</translation> </message> <message> <location filename="../LogView.ui" line="48"/>

@@ -471,7 +471,7 @@ </message>

<message> <location filename="../LogView.ui" line="130"/> <source>Max Lines</source> - <translation>Linee di massima</translation> + <translation>Linee massime</translation> </message> </context> <context>

@@ -479,22 +479,22 @@ <name>MapView</name>

<message> <location filename="../MapView.ui" line="14"/> <source>Maps</source> - <translation type="unfinished"></translation> + <translation>Mappe</translation> </message> <message> <location filename="../MapView.ui" line="101"/> <source>×</source> - <translation type="unfinished">×</translation> + <translation>×</translation> </message> <message> <location filename="../MapView.ui" line="114"/> <source>Magnification</source> - <translation type="unfinished">Magnification</translation> + <translation>Ingrandimento</translation> </message> <message> <location filename="../MapView.ui" line="123"/> <source>Export</source> - <translation type="unfinished"></translation> + <translation>Esporta</translation> </message> </context> <context>

@@ -502,124 +502,124 @@ <name>MemorySearch</name>

<message> <location filename="../MemorySearch.ui" line="20"/> <source>Memory Search</source> - <translation type="unfinished"></translation> + <translation>Ricerca Memoria</translation> </message> <message> <location filename="../MemorySearch.ui" line="45"/> <source>Address</source> - <translation type="unfinished">Indirizzo</translation> + <translation>Indirizzo</translation> </message> <message> <location filename="../MemorySearch.ui" line="50"/> <source>Current Value</source> - <translation type="unfinished"></translation> + <translation>Valore corrente</translation> </message> <message> <location filename="../MemorySearch.ui" line="55"/> <location filename="../MemorySearch.ui" line="75"/> <source>Type</source> - <translation type="unfinished"></translation> + <translation>Tipo</translation> </message> <message> <location filename="../MemorySearch.ui" line="65"/> <source>Value</source> - <translation type="unfinished">Valore</translation> + <translation>Valore</translation> </message> <message> <location filename="../MemorySearch.ui" line="82"/> <source>Numeric</source> - <translation type="unfinished"></translation> + <translation>Numerico</translation> </message> <message> <location filename="../MemorySearch.ui" line="95"/> <source>Text</source> - <translation type="unfinished"></translation> + <translation>Testo</translation> </message> <message> <location filename="../MemorySearch.ui" line="112"/> <source>Width</source> - <translation type="unfinished"></translation> + <translation>Larghezza</translation> </message> <message> <location filename="../MemorySearch.ui" line="119"/> <location filename="../MemorySearch.ui" line="179"/> <source>Guess</source> - <translation type="unfinished"></translation> + <translation>Indovina</translation> </message> <message> <location filename="../MemorySearch.ui" line="132"/> <source>1 Byte (8-bit)</source> - <translation type="unfinished"></translation> + <translation>1 Byte (8-bit)</translation> </message> <message> <location filename="../MemorySearch.ui" line="142"/> <source>2 Bytes (16-bit)</source> - <translation type="unfinished"></translation> + <translation>2 Bytes (16-bit)</translation> </message> <message> <location filename="../MemorySearch.ui" line="152"/> <source>4 Bytes (32-bit)</source> - <translation type="unfinished"></translation> + <translation>4 Bytes (32-bit)</translation> </message> <message> <location filename="../MemorySearch.ui" line="172"/> <source>Number type</source> - <translation type="unfinished"></translation> + <translation>Tipo di numero</translation> </message> <message> <location filename="../MemorySearch.ui" line="189"/> <source>Decimal</source> - <translation type="unfinished"></translation> + <translation>Decimale</translation> </message> <message> <location filename="../MemorySearch.ui" line="196"/> <source>Hexadecimal</source> - <translation type="unfinished"></translation> + <translation>Esadecimale</translation> </message> <message> <location filename="../MemorySearch.ui" line="210"/> <source>Compare</source> - <translation type="unfinished"></translation> + <translation>Confronta</translation> </message> <message> <location filename="../MemorySearch.ui" line="217"/> <source>Equal</source> - <translation type="unfinished"></translation> + <translation>Uguale</translation> </message> <message> <location filename="../MemorySearch.ui" line="230"/> <source>Greater</source> - <translation type="unfinished"></translation> + <translation>Maggiore</translation> </message> <message> <location filename="../MemorySearch.ui" line="240"/> <source>Less</source> - <translation type="unfinished"></translation> + <translation>Minore</translation> </message> <message> <location filename="../MemorySearch.ui" line="253"/> <source>Delta</source> - <translation type="unfinished"></translation> + <translation>Delta</translation> </message> <message> <location filename="../MemorySearch.ui" line="274"/> <source>Search</source> - <translation type="unfinished"></translation> + <translation>Cerca</translation> </message> <message> <location filename="../MemorySearch.ui" line="281"/> <source>Search Within</source> - <translation type="unfinished"></translation> + <translation>Cerca all&apos;interno</translation> </message> <message> <location filename="../MemorySearch.ui" line="288"/> <source>Open in Memory Viewer</source> - <translation type="unfinished"></translation> + <translation>Apri nel Visualizzatore Memoria</translation> </message> <message> <location filename="../MemorySearch.ui" line="295"/> <source>Refresh</source> - <translation type="unfinished">Aggiornare</translation> + <translation>Aggiorna</translation> </message> </context> <context>

@@ -632,7 +632,7 @@ </message>

<message> <location filename="../MemoryView.ui" line="38"/> <source>Inspect Address:</source> - <translation>Ispezionare indirizzo:</translation> + <translation>Ispeziona indirizzo:</translation> </message> <message> <location filename="../MemoryView.ui" line="61"/>

@@ -642,27 +642,27 @@ </message>

<message> <location filename="../MemoryView.ui" line="81"/> <source>Set Alignment:</source> - <translation>Set di allignamento:</translation> + <translation>Set di allineamento:</translation> </message> <message> <location filename="../MemoryView.ui" line="101"/> <source>1 Byte</source> - <translation>1 byte</translation> + <translation>1 Byte</translation> </message> <message> <location filename="../MemoryView.ui" line="124"/> <source>2 Bytes</source> - <translation>2 bytes</translation> + <translation>2 Bytes</translation> </message> <message> <location filename="../MemoryView.ui" line="144"/> <source>4 Bytes</source> - <translation>4 bytes</translation> + <translation>4 Bytes</translation> </message> <message> <location filename="../MemoryView.ui" line="199"/> <source>Signed Integer:</source> - <translation>Integer Signato:</translation> + <translation>Intero segnato:</translation> </message> <message> <location filename="../MemoryView.ui" line="217"/>

@@ -687,7 +687,7 @@ </message>

<message> <location filename="../MemoryView.ui" line="271"/> <source>Save Selection</source> - <translation>Salva Selezione</translation> + <translation>Salva la selezione</translation> </message> <message> <location filename="../MemoryView.ui" line="278"/>

@@ -697,7 +697,7 @@ </message>

<message> <location filename="../MemoryView.ui" line="181"/> <source>Unsigned Integer:</source> - <translation>Integer non signato:</translation> + <translation>Intero non segnato:</translation> </message> </context> <context>

@@ -716,12 +716,12 @@ </message>

<message> <location filename="../ObjView.ui" line="69"/> <source>Magnification</source> - <translation>Magnification</translation> + <translation>Ingrandimento</translation> </message> <message> <location filename="../ObjView.ui" line="76"/> <source>Export</source> - <translation type="unfinished"></translation> + <translation>Esporta</translation> </message> <message> <location filename="../ObjView.ui" line="85"/>

@@ -731,7 +731,7 @@ </message>

<message> <location filename="../ObjView.ui" line="93"/> <source>Transform</source> - <translation>Transformazione</translation> + <translation>Trasformazione</translation> </message> <message> <location filename="../ObjView.ui" line="113"/>

@@ -754,7 +754,7 @@ </message>

<message> <location filename="../ObjView.ui" line="158"/> <source>Double Size</source> - <translation>Doppia Dimensione</translation> + <translation>Dimensioni doppie</translation> </message> <message> <location filename="../ObjView.ui" line="184"/>

@@ -827,7 +827,7 @@ </message>

<message> <location filename="../ObjView.ui" line="470"/> <source>Dimensions</source> - <translation>Dimensione</translation> + <translation>Dimensioni</translation> </message> <message> <location filename="../ObjView.ui" line="496"/>

@@ -851,7 +851,7 @@ <name>OverrideView</name>

<message> <location filename="../OverrideView.ui" line="20"/> <source>Game Overrides</source> - <translation>Valori specifici per gioco</translation> + <translation>Valori specifici per il gioco</translation> </message> <message> <location filename="../OverrideView.ui" line="30"/>

@@ -869,7 +869,7 @@ </message>

<message> <location filename="../OverrideView.ui" line="55"/> <source>Realtime clock</source> - <translation>RealTime clock</translation> + <translation>Clock in tempo reale</translation> </message> <message> <location filename="../OverrideView.ui" line="65"/>

@@ -950,7 +950,7 @@ </message>

<message> <location filename="../OverrideView.ui" line="258"/> <source>Super Game Boy (SGB)</source> - <translation type="unfinished"></translation> + <translation>Super Game Boy (SGB)</translation> </message> <message> <location filename="../OverrideView.ui" line="263"/>

@@ -985,7 +985,7 @@ </message>

<message> <location filename="../OverrideView.ui" line="309"/> <source>MBC3 + RTC</source> - <translation>MBC3 + Reloj</translation> + <translation>MBC3 + RTC</translation> </message> <message> <location filename="../OverrideView.ui" line="314"/>

@@ -1005,12 +1005,12 @@ </message>

<message> <location filename="../OverrideView.ui" line="329"/> <source>Pocket Cam</source> - <translation type="unfinished"></translation> + <translation>Pocket Cam</translation> </message> <message> <location filename="../OverrideView.ui" line="334"/> <source>TAMA5</source> - <translation type="unfinished"></translation> + <translation>TAMA5</translation> </message> <message> <location filename="../OverrideView.ui" line="339"/>

@@ -1020,17 +1020,17 @@ </message>

<message> <location filename="../OverrideView.ui" line="347"/> <source>Background Colors</source> - <translation type="unfinished"></translation> + <translation>Colori di sfondo</translation> </message> <message> <location filename="../OverrideView.ui" line="434"/> <source>Sprite Colors 1</source> - <translation type="unfinished"></translation> + <translation>Colori Sprite 1</translation> </message> <message> <location filename="../OverrideView.ui" line="441"/> <source>Sprite Colors 2</source> - <translation type="unfinished"></translation> + <translation>Colori Sprite 2</translation> </message> </context> <context>

@@ -1043,12 +1043,12 @@ </message>

<message> <location filename="../PaletteView.ui" line="44"/> <source>Background</source> - <translation>SFondo (BG)</translation> + <translation>Sfondo</translation> </message> <message> <location filename="../PaletteView.ui" line="94"/> <source>Objects</source> - <translation>Oggetti (OBJ)</translation> + <translation>Oggetti</translation> </message> <message> <location filename="../PaletteView.ui" line="153"/>

@@ -1068,7 +1068,7 @@ </message>

<message> <location filename="../PaletteView.ui" line="198"/> <source>Blue</source> - <translation>Blue</translation> + <translation>Blu</translation> </message> <message> <location filename="../PaletteView.ui" line="212"/>

@@ -1123,27 +1123,27 @@ <name>PlacementControl</name>

<message> <location filename="../PlacementControl.ui" line="20"/> <source>Adjust placement</source> - <translation type="unfinished"></translation> + <translation>Regola posizionamento</translation> </message> <message> <location filename="../PlacementControl.ui" line="26"/> <source>All</source> - <translation type="unfinished">Tutto</translation> + <translation>Tutto</translation> </message> <message> <location filename="../PlacementControl.ui" line="65"/> <source>Offset</source> - <translation type="unfinished"></translation> + <translation>Offset</translation> </message> <message> <location filename="../PlacementControl.ui" line="72"/> <source>X</source> - <translation type="unfinished"></translation> + <translation>X</translation> </message> <message> <location filename="../PlacementControl.ui" line="79"/> <source>Y</source> - <translation type="unfinished"></translation> + <translation>Y</translation> </message> </context> <context>

@@ -1151,17 +1151,17 @@ <name>PrinterView</name>

<message> <location filename="../PrinterView.ui" line="14"/> <source>Game Boy Printer</source> - <translation type="unfinished"></translation> + <translation>Stampante Game Boy</translation> </message> <message> <location filename="../PrinterView.ui" line="96"/> <source>Hurry up!</source> - <translation type="unfinished"></translation> + <translation>Sbrigati!</translation> </message> <message> <location filename="../PrinterView.ui" line="103"/> <source>Tear off</source> - <translation type="unfinished"></translation> + <translation>Strappa</translation> </message> </context> <context>

@@ -1184,17 +1184,17 @@ <name>QGBA::AudioDevice</name>

<message> <location filename="../AudioDevice.cpp" line="26"/> <source>Can&apos;t set format of context-less audio device</source> - <translation type="unfinished"></translation> + <translation>Impossibile impostare il formato del dispositivo audio</translation> </message> <message> <location filename="../AudioDevice.cpp" line="48"/> <source>Audio device is missing its core</source> - <translation type="unfinished"></translation> + <translation>Il dispositivo audio non possiede alcun core</translation> </message> <message> <location filename="../AudioDevice.cpp" line="64"/> <source>Writing data to read-only audio device</source> - <translation type="unfinished"></translation> + <translation>Scrittura dei dati per il dispositivo audio in sola-lettura</translation> </message> </context> <context>

@@ -1202,7 +1202,7 @@ <name>QGBA::AudioProcessorQt</name>

<message> <location filename="../AudioProcessorQt.cpp" line="43"/> <source>Can&apos;t start an audio processor without input</source> - <translation type="unfinished"></translation> + <translation>Impossibile avviare un processore audio senza input</translation> </message> </context> <context>

@@ -1210,7 +1210,7 @@ <name>QGBA::AudioProcessorSDL</name>

<message> <location filename="../AudioProcessorSDL.cpp" line="34"/> <source>Can&apos;t start an audio processor without input</source> - <translation type="unfinished"></translation> + <translation>Impossibile avviare un processore audio senza input</translation> </message> </context> <context>

@@ -1261,22 +1261,22 @@ <name>QGBA::CoreController</name>

<message> <location filename="../CoreController.cpp" line="561"/> <source>Failed to open save file: %1</source> - <translation type="unfinished">Impossibile aprire il file di salvataggio: %1</translation> + <translation>Impossibile aprire il file di salvataggio: %1</translation> </message> <message> <location filename="../CoreController.cpp" line="590"/> <source>Failed to open game file: %1</source> - <translation type="unfinished">Impossibile aprire il file di gioco: %1</translation> + <translation>Impossibile aprire il file di gioco: %1</translation> </message> <message> <location filename="../CoreController.cpp" line="655"/> <source>Failed to open snapshot file for reading: %1</source> - <translation type="unfinished">Impossibile aprire il file snapshot per la lettura: %1</translation> + <translation>Impossibile aprire il file snapshot per la lettura: %1</translation> </message> <message> <location filename="../CoreController.cpp" line="671"/> <source>Failed to open snapshot file for writing: %1</source> - <translation type="unfinished">Impossibile aprire il file snapshot per la scrittura: %1</translation> + <translation>Impossibile aprire il file snapshot per la scrittura: %1</translation> </message> </context> <context>

@@ -1284,7 +1284,7 @@ <name>QGBA::CoreManager</name>

<message> <location filename="../CoreManager.cpp" line="54"/> <source>Failed to open game file: %1</source> - <translation type="unfinished">Impossibile aprire il file di gioco: %1</translation> + <translation>Impossibile aprire il file di gioco: %1</translation> </message> </context> <context>

@@ -1292,22 +1292,22 @@ <name>QGBA::GBAKeyEditor</name>

<message> <location filename="../GBAKeyEditor.cpp" line="68"/> <source>Clear Button</source> - <translation>Pulisci bottoni</translation> + <translation>Svuota i pulsanti</translation> </message> <message> <location filename="../GBAKeyEditor.cpp" line="80"/> <source>Clear Analog</source> - <translation>Pulisci analogici</translation> + <translation>Svuota Analogici</translation> </message> <message> <location filename="../GBAKeyEditor.cpp" line="91"/> <source>Refresh</source> - <translation>Aggiornare</translation> + <translation>Aggiorna</translation> </message> <message> <location filename="../GBAKeyEditor.cpp" line="101"/> <source>Set all</source> - <translation>Impostare tutti</translation> + <translation>Imposta tutti</translation> </message> </context> <context>

@@ -1330,12 +1330,12 @@ </message>

<message> <location filename="../GDBWindow.cpp" line="55"/> <source>Break</source> - <translation>Break</translation> + <translation>Interruzione</translation> </message> <message> <location filename="../GDBWindow.cpp" line="104"/> <source>Stop</source> - <translation>Stop</translation> + <translation>Ferma</translation> </message> <message> <location filename="../GDBWindow.cpp" line="114"/>

@@ -1368,30 +1368,30 @@ </message>

<message> <location filename="../GIFView.cpp" line="71"/> <source>Graphics Interchange Format (*.gif)</source> - <translation>Formato di interconnessione grafica (*.gif)</translation> + <translation>Graphics Interchange Format (*.gif)</translation> </message> </context> <context> <name>QGBA::GameController</name> <message> <source>Failed to open game file: %1</source> - <translation type="vanished">Impossibile aprire il file di gioco: %1</translation> + <translation>Impossibile aprire il file di gioco: %1</translation> </message> <message> <source>Failed to open save file: %1</source> - <translation type="vanished">Impossibile aprire il file di salvataggio: %1</translation> + <translation>Impossibile aprire il file di salvataggio: %1</translation> </message> <message> <source>Failed to open snapshot file for reading: %1</source> - <translation type="vanished">Impossibile aprire il file snapshot per la lettura: %1</translation> + <translation>Impossibile aprire il file snapshot per la lettura: %1</translation> </message> <message> <source>Failed to open snapshot file for writing: %1</source> - <translation type="vanished">Impossibile aprire il file snapshot per la scrittura: %1</translation> + <translation>Impossibile aprire il file snapshot per la scrittura: %1</translation> </message> <message> <source>Failed to start audio processor</source> - <translation type="vanished">Impossibile avviare il processore audio</translation> + <translation>Impossibile avviare il processore audio</translation> </message> </context> <context>

@@ -1514,17 +1514,17 @@ </message>

<message> <location filename="../IOViewer.cpp" line="61"/> <source>Enable VBlank IRQ generation</source> - <translation>Abilita VBlank</translation> + <translation>Abilita creazione IRQ VBlank</translation> </message> <message> <location filename="../IOViewer.cpp" line="62"/> <source>Enable HBlank IRQ generation</source> - <translation>Abilita HBlank generazione IRQ</translation> + <translation>Abilita creazione IRQ HBlank</translation> </message> <message> <location filename="../IOViewer.cpp" line="63"/> <source>Enable VCounter IRQ generation</source> - <translation>Abilita generazione IRQ VCounter</translation> + <translation>Abilita creazione IRQ VCounter</translation> </message> <message> <location filename="../IOViewer.cpp" line="64"/>

@@ -1632,7 +1632,7 @@ <location filename="../IOViewer.cpp" line="186"/>

<location filename="../IOViewer.cpp" line="191"/> <location filename="../IOViewer.cpp" line="196"/> <source>Integer part</source> - <translation>Parte Integer</translation> + <translation>Parte Intero</translation> </message> <message> <location filename="../IOViewer.cpp" line="163"/>

@@ -1640,7 +1640,7 @@ <location filename="../IOViewer.cpp" line="172"/>

<location filename="../IOViewer.cpp" line="201"/> <location filename="../IOViewer.cpp" line="210"/> <source>Integer part (bottom)</source> - <translation>Parte Integer (inferiore)</translation> + <translation>Parte Intero (inferiore)</translation> </message> <message> <location filename="../IOViewer.cpp" line="167"/>

@@ -1648,7 +1648,7 @@ <location filename="../IOViewer.cpp" line="176"/>

<location filename="../IOViewer.cpp" line="205"/> <location filename="../IOViewer.cpp" line="214"/> <source>Integer part (top)</source> - <translation>Parte Integer (superiore)</translation> + <translation>Parte Intero (superiore)</translation> </message> <message> <location filename="../IOViewer.cpp" line="218"/>

@@ -1722,7 +1722,7 @@ </message>

<message> <location filename="../IOViewer.cpp" line="247"/> <source>Window 1 enable BG 3</source> - <translation>AbilitaWindow 1 BG 3</translation> + <translation>Abilita Window 1 BG 3</translation> </message> <message> <location filename="../IOViewer.cpp" line="248"/>

@@ -1857,17 +1857,17 @@ </message>

<message> <location filename="../IOViewer.cpp" line="285"/> <source>Additive blending</source> - <translation>Miscelazione dell&apos;additivo</translation> + <translation>Miscelazione additiva</translation> </message> <message> <location filename="../IOViewer.cpp" line="286"/> <source>Brighten</source> - <translation>Schiarire</translation> + <translation>Illumina</translation> </message> <message> <location filename="../IOViewer.cpp" line="287"/> <source>Darken</source> - <translation>Oscurire</translation> + <translation>Oscura</translation> </message> <message> <location filename="../IOViewer.cpp" line="289"/>

@@ -1927,7 +1927,7 @@ </message>

<message> <location filename="../IOViewer.cpp" line="319"/> <source>Sweep time (in 1/128s)</source> - <translation>Tempo di sweep (in 1/128seg)</translation> + <translation>Tempo di sweep (in 1/128s)</translation> </message> <message> <location filename="../IOViewer.cpp" line="323"/>

@@ -2041,7 +2041,7 @@ </message>

<message> <location filename="../IOViewer.cpp" line="394"/> <source>Clock divider</source> - <translation>Divisore dell&apos;orologio</translation> + <translation>Divisore del Clock</translation> </message> <message> <location filename="../IOViewer.cpp" line="395"/>

@@ -2304,7 +2304,7 @@ <location filename="../IOViewer.cpp" line="615"/>

<location filename="../IOViewer.cpp" line="660"/> <location filename="../IOViewer.cpp" line="705"/> <source>Destination offset</source> - <translation>Compensazione offset</translation> + <translation>Offset di destinazione</translation> </message> <message> <location filename="../IOViewer.cpp" line="571"/>

@@ -2356,7 +2356,7 @@ <location filename="../IOViewer.cpp" line="621"/>

<location filename="../IOViewer.cpp" line="666"/> <location filename="../IOViewer.cpp" line="711"/> <source>Source offset</source> - <translation>Compensazione di origine</translation> + <translation>Offset di origine</translation> </message> <message> <location filename="../IOViewer.cpp" line="582"/>

@@ -2433,7 +2433,7 @@ <location filename="../IOViewer.cpp" line="790"/>

<location filename="../IOViewer.cpp" line="806"/> <location filename="../IOViewer.cpp" line="822"/> <source>Enable</source> - <translation>Abilitare</translation> + <translation>Abilita</translation> </message> <message> <location filename="../IOViewer.cpp" line="633"/>

@@ -2515,13 +2515,13 @@ <message>

<location filename="../IOViewer.cpp" line="860"/> <location filename="../IOViewer.cpp" line="873"/> <source>Select</source> - <translation>Seleziona</translation> + <translation>Select</translation> </message> <message> <location filename="../IOViewer.cpp" line="861"/> <location filename="../IOViewer.cpp" line="874"/> <source>Start</source> - <translation>Avvia</translation> + <translation>Start</translation> </message> <message> <location filename="../IOViewer.cpp" line="862"/>

@@ -2539,7 +2539,7 @@ <message>

<location filename="../IOViewer.cpp" line="864"/> <location filename="../IOViewer.cpp" line="877"/> <source>Up</source> - <translation>Sù</translation> + <translation>Su</translation> </message> <message> <location filename="../IOViewer.cpp" line="865"/>

@@ -2754,12 +2754,12 @@ </message>

<message> <location filename="../IOViewer.cpp" line="1015"/> <source>Gamepak prefetch</source> - <translation>Gamepak prefetch</translation> + <translation>Precaricamento Gamepak</translation> </message> <message> <location filename="../IOViewer.cpp" line="1021"/> <source>Enable IRQs</source> - <translation>Abilitare IRQs</translation> + <translation>Abilita IRQs</translation> </message> </context> <context>

@@ -2775,39 +2775,39 @@ <context>

<name>QGBA::LibraryModel</name> <message> <source>Name</source> - <translation type="vanished">Nome</translation> + <translation>Nome</translation> </message> <message> <source>Filename</source> - <translation type="vanished">Nome del file</translation> + <translation>Nome del file</translation> </message> <message> <source>Size</source> - <translation type="vanished">Dimensione</translation> + <translation>Dimensioni</translation> </message> <message> <source>Platform</source> - <translation type="vanished">Piattaforma</translation> + <translation>Piattaforma</translation> </message> <message> <source>GBA</source> - <translation type="vanished">GBA</translation> + <translation>GBA</translation> </message> <message> <source>GB</source> - <translation type="vanished">GB</translation> + <translation>GB</translation> </message> <message> <source>?</source> - <translation type="vanished">?</translation> + <translation>?</translation> </message> <message> <source>Location</source> - <translation type="vanished">Posizione</translation> + <translation>Posizione</translation> </message> <message> <source>CRC32</source> - <translation type="vanished">CRC32</translation> + <translation>CRC32</translation> </message> </context> <context>

@@ -2881,47 +2881,47 @@ <name>QGBA::MapView</name>

<message> <location filename="../MapView.cpp" line="84"/> <source>Map Addr.</source> - <translation type="unfinished"></translation> + <translation>Indir. Mappa</translation> </message> <message> <location filename="../MapView.cpp" line="85"/> <source>Mirror</source> - <translation type="unfinished"></translation> + <translation>Specchiatura</translation> </message> <message> <location filename="../MapView.cpp" line="113"/> <source>None</source> - <translation type="unfinished">Nessuno</translation> + <translation>Nessuno</translation> </message> <message> <location filename="../MapView.cpp" line="115"/> <source>Both</source> - <translation type="unfinished"></translation> + <translation>Entrambi</translation> </message> <message> <location filename="../MapView.cpp" line="117"/> <source>Horizontal</source> - <translation type="unfinished"></translation> + <translation>Orizzontale</translation> </message> <message> <location filename="../MapView.cpp" line="119"/> <source>Vertical</source> - <translation type="unfinished"></translation> + <translation>Verticale</translation> </message> <message> <location filename="../MapView.cpp" line="172"/> <source>Export map</source> - <translation type="unfinished"></translation> + <translation>Esporta Mappa</translation> </message> <message> <location filename="../MapView.cpp" line="173"/> <source>Portable Network Graphics (*.png)</source> - <translation type="unfinished"></translation> + <translation>Portable Network Graphics (*.png)</translation> </message> <message> <location filename="../MapView.cpp" line="176"/> <source>Failed to open output PNG file: %1</source> - <translation type="unfinished"></translation> + <translation>Impossibile aprire il file PNG: %1</translation> </message> </context> <context>

@@ -2929,12 +2929,12 @@ <name>QGBA::MemoryModel</name>

<message> <location filename="../MemoryModel.cpp" line="44"/> <source>Copy selection</source> - <translation>Copia selezionato</translation> + <translation>Copia selezione</translation> </message> <message> <location filename="../MemoryModel.cpp" line="49"/> <source>Save selection</source> - <translation>Salva selezionato</translation> + <translation>Salva selezione</translation> </message> <message> <location filename="../MemoryModel.cpp" line="54"/>

@@ -2960,7 +2960,7 @@ </message>

<message> <location filename="../MemoryModel.cpp" line="196"/> <source>Save selected memory</source> - <translation>Salva la memoria selezionate</translation> + <translation>Salva la memoria selezionata</translation> </message> <message> <location filename="../MemoryModel.cpp" line="202"/>

@@ -2993,22 +2993,22 @@ <name>QGBA::MemorySearch</name>

<message> <location filename="../MemorySearch.cpp" line="200"/> <source> (%0/%1×)</source> - <translation type="unfinished"></translation> + <translation> (%0/%1×)</translation> </message> <message> <location filename="../MemorySearch.cpp" line="202"/> <source> (⅟%0×)</source> - <translation type="unfinished"></translation> + <translation> (⅟%0×)</translation> </message> <message> <location filename="../MemorySearch.cpp" line="205"/> <source> (%0×)</source> - <translation type="unfinished"></translation> + <translation> (%0×)</translation> </message> <message> <location filename="../MemorySearch.cpp" line="209"/> <source>%1 byte%2</source> - <translation type="unfinished"></translation> + <translation>%1 byte%2</translation> </message> </context> <context>

@@ -3042,28 +3042,28 @@ </message>

<message> <location filename="../ObjView.cpp" line="170"/> <source>Invalid</source> - <translation>Invalido</translation> + <translation>Non valido</translation> </message> <message> <location filename="../ObjView.cpp" line="246"/> <location filename="../ObjView.cpp" line="247"/> <source>N/A</source> - <translation>n/d</translation> + <translation>N/D</translation> </message> <message> <location filename="../ObjView.cpp" line="253"/> <source>Export sprite</source> - <translation type="unfinished"></translation> + <translation>Esporta sprite</translation> </message> <message> <location filename="../ObjView.cpp" line="254"/> <source>Portable Network Graphics (*.png)</source> - <translation type="unfinished"></translation> + <translation>Portable Network Graphics (*.png)</translation> </message> <message> <location filename="../ObjView.cpp" line="257"/> <source>Failed to open output PNG file: %1</source> - <translation type="unfinished"></translation> + <translation>Impossibile aprire il file PNG: %1</translation> </message> </context> <context>

@@ -3103,7 +3103,7 @@ </message>

<message> <location filename="../PaletteView.cpp" line="142"/> <source>Failed to open output palette file: %1</source> - <translation>Errore nell&apos;aprire il file palette di output : %1</translation> + <translation>Errore nell&apos;aprire il file palette di output: %1</translation> </message> </context> <context>

@@ -3111,12 +3111,12 @@ <name>QGBA::PrinterView</name>

<message> <location filename="../PrinterView.cpp" line="35"/> <source>Save Printout</source> - <translation type="unfinished"></translation> + <translation>Salva Stampa</translation> </message> <message> <location filename="../PrinterView.cpp" line="35"/> <source>Portable Network Graphics (*.png)</source> - <translation type="unfinished"></translation> + <translation>Portable Network Graphics (*.png)</translation> </message> </context> <context>

@@ -3173,7 +3173,7 @@ </message>

<message> <location filename="../SettingsView.cpp" line="166"/> <source>None (Still Image)</source> - <translation type="unfinished"></translation> + <translation>Niente (Immagine fissa)</translation> </message> <message> <location filename="../SettingsView.cpp" line="247"/>

@@ -3188,13 +3188,13 @@ </message>

<message> <location filename="../SettingsView.cpp" line="288"/> <source>Shortcuts</source> - <translation>Tasti di scelta rapida</translation> + <translation>Scorciatoie</translation> </message> <message> <location filename="../SettingsView.cpp" line="300"/> <location filename="../SettingsView.cpp" line="310"/> <source>Shaders</source> - <translation type="unfinished">Shaders</translation> + <translation>Shader</translation> </message> <message> <location filename="../SettingsView.cpp" line="317"/>

@@ -3207,7 +3207,7 @@ <name>QGBA::ShaderSelector</name>

<message> <location filename="../ShaderSelector.cpp" line="54"/> <source>No shader active</source> - <translation>Nessun shader attivo</translation> + <translation>Nessuno shader attivo</translation> </message> <message> <location filename="../ShaderSelector.cpp" line="67"/>

@@ -3216,22 +3216,22 @@ <translation>Carica shader</translation>

</message> <message> <source>%1 Shader (%.shader)</source> - <translation type="vanished">%1 Shader (%.shader)</translation> + <translation>%1 Shader (%.shader)</translation> </message> <message> <location filename="../ShaderSelector.cpp" line="105"/> <source>No shader loaded</source> - <translation>Nessun shader caricato</translation> + <translation>Nessuno shader caricato</translation> </message> <message> <location filename="../ShaderSelector.cpp" line="113"/> <source>by %1</source> - <translation>por %1</translation> + <translation>per %1</translation> </message> <message> <location filename="../ShaderSelector.cpp" line="128"/> <source>Preprocessing</source> - <translation>Preprocesso</translation> + <translation>Pre-elaborazione</translation> </message> <message> <location filename="../ShaderSelector.cpp" line="135"/>

@@ -3272,7 +3272,7 @@ </message>

<message> <location filename="../VideoView.cpp" line="244"/> <source>Select output file</source> - <translation>Seleziona file di output</translation> + <translation>Seleziona file di uscita</translation> </message> </context> <context>

@@ -3280,12 +3280,12 @@ <name>QGBA::Window</name>

<message> <location filename="../Window.cpp" line="274"/> <source>Game Boy Advance ROMs (%1)</source> - <translation>ROM di Game Boy Advance (%1)</translation> + <translation>ROM per Game Boy Advance (%1)</translation> </message> <message> <location filename="../Window.cpp" line="291"/> <source>Game Boy ROMs (%1)</source> - <translation>ROMs del Game Boy (%1)</translation> + <translation>ROM per Game Boy (%1)</translation> </message> <message> <location filename="../Window.cpp" line="295"/>

@@ -3295,12 +3295,12 @@ </message>

<message> <location filename="../Window.cpp" line="296"/> <source>%1 Video Logs (*.mvl)</source> - <translation type="unfinished"></translation> + <translation>%1 log Video (*.mvl)</translation> </message> <message> <location filename="../Window.cpp" line="311"/> <source>Archives (%1)</source> - <translation>Archivio (%1)</translation> + <translation>Archivi (%1)</translation> </message> <message> <location filename="../Window.cpp" line="316"/>

@@ -3334,12 +3334,12 @@ </message>

<message> <location filename="../Window.cpp" line="398"/> <source>Select image</source> - <translation type="unfinished"></translation> + <translation>Seleziona immagine</translation> </message> <message> <location filename="../Window.cpp" line="398"/> <source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source> - <translation type="unfinished"></translation> + <translation>File immagine (*.png *.gif *.jpg *.jpeg);;Tutti i file (*)</translation> </message> <message> <location filename="../Window.cpp" line="405"/>

@@ -3350,12 +3350,12 @@ </message>

<message> <location filename="../Window.cpp" line="437"/> <source>Select video log</source> - <translation type="unfinished"></translation> + <translation>Seleziona log video</translation> </message> <message> <location filename="../Window.cpp" line="437"/> <source>Video logs (*.mvl)</source> - <translation type="unfinished"></translation> + <translation>Log video (*.mvl)</translation> </message> <message> <location filename="../Window.cpp" line="782"/>

@@ -3394,12 +3394,12 @@ </message>

<message> <location filename="../Window.cpp" line="887"/> <source>Really make portable?</source> - <translation>Davvero rendere portatile?</translation> + <translation>Vuoi davvero rendere portatile l&apos;applicazione?</translation> </message> <message> <location filename="../Window.cpp" line="888"/> <source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source> - <translation>In questo modo l&apos;emulatore carica la propria configurazione dalla stessa directory dell&apos;eseguibile. Vuoi continuare?</translation> + <translation>In questo modo l&apos;emulatore carica la propria configurazione dalla stessa cartella dell&apos;eseguibile. Vuoi continuare?</translation> </message> <message> <location filename="../Window.cpp" line="896"/>

@@ -3409,7 +3409,7 @@ </message>

<message> <location filename="../Window.cpp" line="897"/> <source>Some changes will not take effect until the emulator is restarted.</source> - <translation>Alcune modifiche non avranno effetto finché l&apos;emulatore non viene riavviato.</translation> + <translation>Alcune modifiche non avranno effetto finché l&apos;emulatore non verrà riavviato.</translation> </message> <message> <location filename="../Window.cpp" line="951"/>

@@ -3434,12 +3434,12 @@ </message>

<message> <location filename="../Window.cpp" line="1002"/> <source>&amp;File</source> - <translation>&amp;File</translation> + <translation>File</translation> </message> <message> <location filename="../Window.cpp" line="1005"/> <source>Load &amp;ROM...</source> - <translation>Carica &amp;ROM...</translation> + <translation>Carica ROM...</translation> </message> <message> <location filename="../Window.cpp" line="1008"/>

@@ -3449,7 +3449,7 @@ </message>

<message> <location filename="../Window.cpp" line="1014"/> <source>Load alternate save...</source> - <translation type="unfinished"></translation> + <translation>Carica il salvataggio alternativo...</translation> </message> <message> <location filename="../Window.cpp" line="1019"/>

@@ -3459,22 +3459,22 @@ </message>

<message> <location filename="../Window.cpp" line="1024"/> <source>Load &amp;patch...</source> - <translation>Carica &amp;patch...</translation> + <translation>Carica patch...</translation> </message> <message> <location filename="../Window.cpp" line="1027"/> <source>Boot BIOS</source> - <translation>Boot BIOS</translation> + <translation>Avvia BIOS</translation> </message> <message> <location filename="../Window.cpp" line="1034"/> <source>Replace ROM...</source> - <translation>Sostituire la ROM...</translation> + <translation>Sostituisci la ROM...</translation> </message> <message> <location filename="../Window.cpp" line="1036"/> <source>ROM &amp;info...</source> - <translation>ROM &amp;info...</translation> + <translation>Informazioni ROM...</translation> </message> <message> <location filename="../Window.cpp" line="1041"/>

@@ -3489,7 +3489,7 @@ </message>

<message> <location filename="../Window.cpp" line="1049"/> <source>&amp;Load state</source> - <translation>&amp;Carica stato</translation> + <translation>Carica stato</translation> </message> <message> <location filename="../Window.cpp" line="1050"/>

@@ -3499,7 +3499,7 @@ </message>

<message> <location filename="../Window.cpp" line="1056"/> <source>&amp;Save state</source> - <translation>&amp;Salva stato</translation> + <translation>Salva stato</translation> </message> <message> <location filename="../Window.cpp" line="1057"/>

@@ -3541,7 +3541,7 @@ </message>

<message> <location filename="../Window.cpp" line="1096"/> <source>Undo save state</source> - <translation>Annulla salva stato</translation> + <translation>Annulla salvataggio stato</translation> </message> <message> <location filename="../Window.cpp" line="1097"/>

@@ -3553,7 +3553,7 @@ <message>

<location filename="../Window.cpp" line="1110"/> <location filename="../Window.cpp" line="1119"/> <source>State &amp;%1</source> - <translation>Stato &amp;%1</translation> + <translation>Stato %1</translation> </message> <message> <location filename="../Window.cpp" line="1111"/>

@@ -3569,7 +3569,7 @@ </message>

<message> <location filename="../Window.cpp" line="1130"/> <source>Load camera image...</source> - <translation type="unfinished"></translation> + <translation>Carica immagine camera...</translation> </message> <message> <location filename="../Window.cpp" line="1136"/>

@@ -3589,22 +3589,22 @@ </message>

<message> <location filename="../Window.cpp" line="1160"/> <source>About</source> - <translation>About</translation> + <translation>Info...</translation> </message> <message> <location filename="../Window.cpp" line="1165"/> <source>E&amp;xit</source> - <translation>Uscire (&amp;X)</translation> + <translation>Esci (&amp;X)</translation> </message> <message> <location filename="../Window.cpp" line="1168"/> <source>&amp;Emulation</source> - <translation>&amp;Emulazione</translation> + <translation>Emulazione</translation> </message> <message> <location filename="../Window.cpp" line="1170"/> <source>&amp;Reset</source> - <translation>&amp;Reset</translation> + <translation>Reset</translation> </message> <message> <location filename="../Window.cpp" line="1171"/>

@@ -3624,7 +3624,7 @@ </message>

<message> <location filename="../Window.cpp" line="1196"/> <source>&amp;Pause</source> - <translation>&amp;Pausa</translation> + <translation>Pausa</translation> </message> <message> <location filename="../Window.cpp" line="1199"/>

@@ -3644,7 +3644,7 @@ </message>

<message> <location filename="../Window.cpp" line="1230"/> <source>Fast forward (held)</source> - <translation>Avanzamento rapido (sostenuto)</translation> + <translation>Avanzamento rapido (tieni premuto)</translation> </message> <message> <location filename="../Window.cpp" line="1232"/>

@@ -3664,7 +3664,7 @@ </message>

<message> <location filename="../Window.cpp" line="1247"/> <source>Unbounded</source> - <translation>Illimitato</translation> + <translation>Illimitata</translation> </message> <message> <location filename="../Window.cpp" line="1251"/>

@@ -3674,12 +3674,12 @@ </message>

<message> <location filename="../Window.cpp" line="1263"/> <source>Rewind (held)</source> - <translation>Riavvolgi (sostenuto)</translation> + <translation>Riavvolgimento (tieni premuto)</translation> </message> <message> <location filename="../Window.cpp" line="1265"/> <source>Re&amp;wind</source> - <translation>Riavvolgi (&amp;W)</translation> + <translation>Riavvolgimento (&amp;W)</translation> </message> <message> <location filename="../Window.cpp" line="1266"/>

@@ -3699,12 +3699,12 @@ </message>

<message> <location filename="../Window.cpp" line="1284"/> <source>Sync to &amp;video</source> - <translation>Sincronizzare su &amp;video</translation> + <translation>Sincronizza con il video</translation> </message> <message> <location filename="../Window.cpp" line="1291"/> <source>Sync to &amp;audio</source> - <translation>Sincronizzare su &amp;audio</translation> + <translation>Sincronizza con l&apos;audio</translation> </message> <message> <location filename="../Window.cpp" line="1299"/>

@@ -3739,12 +3739,12 @@ </message>

<message> <location filename="../Window.cpp" line="1326"/> <source>Audio/&amp;Video</source> - <translation>Audio/&amp;Video</translation> + <translation>Audio/Video</translation> </message> <message> <location filename="../Window.cpp" line="1328"/> <source>Frame size</source> - <translation>Dimensione Frame</translation> + <translation>Dimensioni Frame</translation> </message> <message> <location filename="../Window.cpp" line="1331"/>

@@ -3754,25 +3754,25 @@ </message>

<message> <location filename="../Window.cpp" line="1359"/> <source>Toggle fullscreen</source> - <translation>Abilita schermo intero</translation> + <translation>Abilita Schermo Intero</translation> </message> <message> <location filename="../Window.cpp" line="1362"/> <source>Lock aspect ratio</source> - <translation>Blocca aspect ratio</translation> + <translation>Blocca rapporti aspetto</translation> </message> <message> <source>Resample video</source> - <translation type="vanished">Rimostra video</translation> + <translation>Ricampiona video</translation> </message> <message> <location filename="../Window.cpp" line="1388"/> <source>Frame&amp;skip</source> - <translation>Frame&amp;skip</translation> + <translation>Salto frame</translation> </message> <message> <source>Shader options...</source> - <translation type="vanished">Opzioni shader...</translation> + <translation>Opzioni shader...</translation> </message> <message> <location filename="../Window.cpp" line="1401"/>

@@ -3782,7 +3782,7 @@ </message>

<message> <location filename="../Window.cpp" line="1408"/> <source>FPS target</source> - <translation>FPS mirato</translation> + <translation>FPS finali</translation> </message> <message> <location filename="../Window.cpp" line="1413"/>

@@ -3827,7 +3827,7 @@ </message>

<message> <location filename="../Window.cpp" line="1426"/> <source>Take &amp;screenshot</source> - <translation>Effettua &amp;screenshot</translation> + <translation>Acquisisci screenshot</translation> </message> <message> <location filename="../Window.cpp" line="1427"/>

@@ -3837,7 +3837,7 @@ </message>

<message> <location filename="../Window.cpp" line="1436"/> <source>Record output...</source> - <translation>Registra salida...</translation> + <translation>Registra uscita...</translation> </message> <message> <location filename="../Window.cpp" line="1443"/>

@@ -3851,11 +3851,11 @@ <translation>Layers video</translation>

</message> <message> <source>Background %0</source> - <translation type="vanished">Sfondo %0</translation> + <translation>Sfondo %0</translation> </message> <message> <source>OBJ (sprites)</source> - <translation type="vanished">OBJ (sprites)</translation> + <translation>OBJ (sprites)</translation> </message> <message> <location filename="../Window.cpp" line="1476"/>

@@ -3864,20 +3864,20 @@ <translation>Canali audio</translation>

</message> <message> <source>Channel %0</source> - <translation type="vanished">Canale %0</translation> + <translation>Canale %0</translation> </message> <message> <source>Channel A</source> - <translation type="vanished">Canale A</translation> + <translation>Canale A</translation> </message> <message> <source>Channel B</source> - <translation type="vanished">Canale B</translation> + <translation>Canale B</translation> </message> <message> <location filename="../Window.cpp" line="1484"/> <source>&amp;Tools</source> - <translation>&amp;Strumenti</translation> + <translation>Strumenti</translation> </message> <message> <location filename="../Window.cpp" line="1486"/>

@@ -3887,17 +3887,17 @@ </message>

<message> <location filename="../Window.cpp" line="1490"/> <source>Game &amp;overrides...</source> - <translation>Val&amp;specifico per il gioco...</translation> + <translation>Valore specifico per il gioco...</translation> </message> <message> <location filename="../Window.cpp" line="1504"/> <source>Game &amp;Pak sensors...</source> - <translation>Sensori di gioco &amp;Pak...</translation> + <translation>Sensori Game Pak...</translation> </message> <message> <location filename="../Window.cpp" line="1517"/> <source>&amp;Cheats...</source> - <translation>&amp;Trucchi...</translation> + <translation>Trucchi...</translation> </message> <message> <location filename="../Window.cpp" line="1529"/>

@@ -3907,7 +3907,7 @@ </message>

<message> <location filename="../Window.cpp" line="1535"/> <source>Start &amp;GDB server...</source> - <translation>Avvia server &amp;GDB...</translation> + <translation>Avvia server GDB...</translation> </message> <message> <location filename="../Window.cpp" line="1523"/>

@@ -3927,132 +3927,132 @@ </message>

<message> <location filename="../Window.cpp" line="1372"/> <source>Force integer scaling</source> - <translation type="unfinished"></translation> + <translation>Forza l&apos;integer scaling</translation> </message> <message> <location filename="../Window.cpp" line="1382"/> <source>Bilinear filtering</source> - <translation type="unfinished"></translation> + <translation>Filtro bilineare</translation> </message> <message> <location filename="../Window.cpp" line="1448"/> <source>Record video log...</source> - <translation type="unfinished"></translation> + <translation>Registra log video...</translation> </message> <message> <location filename="../Window.cpp" line="1453"/> <source>Stop video log</source> - <translation type="unfinished"></translation> + <translation>Interrompi log video</translation> </message> <message> <location filename="../Window.cpp" line="1461"/> <source>Game Boy Printer...</source> - <translation type="unfinished"></translation> + <translation>Stampante Game Boy...</translation> </message> <message> <location filename="../Window.cpp" line="1479"/> <source>Adjust layer placement...</source> - <translation type="unfinished"></translation> + <translation>Regola posizionamento layer...</translation> </message> <message> <location filename="../Window.cpp" line="1543"/> <source>View &amp;palette...</source> - <translation>Ver &amp;palette...</translation> + <translation>Mostra palette...</translation> </message> <message> <location filename="../Window.cpp" line="1548"/> <source>View &amp;sprites...</source> - <translation>Ver &amp;sprites...</translation> + <translation>Mostra sprites...</translation> </message> <message> <location filename="../Window.cpp" line="1553"/> <source>View &amp;tiles...</source> - <translation>Ver &amp;tiles...</translation> + <translation>Mostra tiles...</translation> </message> <message> <location filename="../Window.cpp" line="1558"/> <source>View &amp;map...</source> - <translation type="unfinished"></translation> + <translation>Mostra mappa...</translation> </message> <message> <location filename="../Window.cpp" line="1563"/> <source>View memory...</source> - <translation>Ver memoria...</translation> + <translation>Mostra memoria...</translation> </message> <message> <location filename="../Window.cpp" line="1568"/> <source>Search memory...</source> - <translation type="unfinished"></translation> + <translation>Ricerca memoria...</translation> </message> <message> <location filename="../Window.cpp" line="1574"/> <source>View &amp;I/O registers...</source> - <translation>Ver reg&amp;registri I/O...</translation> + <translation>Mostra registri I/O...</translation> </message> <message> <location filename="../Window.cpp" line="1654"/> <source>Exit fullscreen</source> - <translation>Esci da schermo intero</translation> + <translation>Esci da Schermo Intero</translation> </message> <message> <location filename="../Window.cpp" line="1667"/> <source>GameShark Button (held)</source> - <translation type="unfinished"></translation> + <translation>Pulsante GameShark (tieni premuto)</translation> </message> <message> <location filename="../Window.cpp" line="1669"/> <source>Autofire</source> - <translation>Pulsanti Auto fuoco</translation> + <translation>Pulsanti Autofire</translation> </message> <message> <location filename="../Window.cpp" line="1676"/> <source>Autofire A</source> - <translation>Auto fuoco A</translation> + <translation>Autofire A</translation> </message> <message> <location filename="../Window.cpp" line="1682"/> <source>Autofire B</source> - <translation>Auto fuoco B</translation> + <translation>Autofire B</translation> </message> <message> <location filename="../Window.cpp" line="1688"/> <source>Autofire L</source> - <translation>Auto fuoco L</translation> + <translation>Autofire L</translation> </message> <message> <location filename="../Window.cpp" line="1694"/> <source>Autofire R</source> - <translation>Auto fuoco R</translation> + <translation>Autofire R</translation> </message> <message> <location filename="../Window.cpp" line="1700"/> <source>Autofire Start</source> - <translation>Avvia Auto fuoco</translation> + <translation>Autofire Start</translation> </message> <message> <location filename="../Window.cpp" line="1706"/> <source>Autofire Select</source> - <translation>Seleziona Auto fuoco</translation> + <translation>Autofire Select</translation> </message> <message> <location filename="../Window.cpp" line="1712"/> <source>Autofire Up</source> - <translation>Auto fuoco sù</translation> + <translation>Autofire Su</translation> </message> <message> <location filename="../Window.cpp" line="1718"/> <source>Autofire Right</source> - <translation>Auto fuoco destro</translation> + <translation>AAutofire Destra</translation> </message> <message> <location filename="../Window.cpp" line="1724"/> <source>Autofire Down</source> - <translation>Auto fuoco giù</translation> + <translation>Autofire Giù</translation> </message> <message> <location filename="../Window.cpp" line="1730"/> <source>Autofire Left</source> - <translation>Auto fuoco sinistro</translation> + <translation>Autofire Sinistra</translation> </message> </context> <context>

@@ -4060,17 +4060,17 @@ <name>QObject</name>

<message> <location filename="../utils.cpp" line="29"/> <source>GBA</source> - <translation type="unfinished">GBA</translation> + <translation>GBA</translation> </message> <message> <location filename="../utils.cpp" line="33"/> <source>GB</source> - <translation type="unfinished">GB</translation> + <translation>GB</translation> </message> <message> <location filename="../utils.cpp" line="36"/> <source>?</source> - <translation type="unfinished">?</translation> + <translation>?</translation> </message> </context> <context>

@@ -4078,7 +4078,7 @@ <name>ROMInfo</name>

<message> <location filename="../ROMInfo.ui" line="14"/> <source>ROM Info</source> - <translation>Informazioni della ROM</translation> + <translation>Informazioni sulla ROM</translation> </message> <message> <location filename="../ROMInfo.ui" line="26"/>

@@ -4113,7 +4113,7 @@ </message>

<message> <location filename="../ROMInfo.ui" line="80"/> <source>File size:</source> - <translation>Dimensione del file:</translation> + <translation>Dimensioni del file:</translation> </message> <message> <location filename="../ROMInfo.ui" line="87"/>

@@ -4141,7 +4141,7 @@ </message>

<message> <location filename="../SensorView.ui" line="31"/> <source>Realtime clock</source> - <translation>Realtime clock</translation> + <translation>Clock in tempo reale</translation> </message> <message> <location filename="../SensorView.ui" line="37"/>

@@ -4166,7 +4166,7 @@ </message>

<message> <location filename="../SensorView.ui" line="97"/> <source>MM/dd/yy hh:mm:ss AP</source> - <translation>dd/MM/yy HH:mm:ss</translation> + <translation>gg/MM/aa OO:mm:ss</translation> </message> <message> <location filename="../SensorView.ui" line="107"/>

@@ -4231,12 +4231,12 @@ </message>

<message> <location filename="../SettingsView.ui" line="65"/> <source>Paths</source> - <translation>Paths</translation> + <translation>Cartelle</translation> </message> <message> <location filename="../SettingsView.ui" line="70"/> <source>Game Boy</source> - <translation type="unfinished">Game Boy</translation> + <translation>Game Boy</translation> </message> <message> <location filename="../SettingsView.ui" line="95"/>

@@ -4287,12 +4287,12 @@ </message>

<message> <location filename="../SettingsView.ui" line="169"/> <source>samples</source> - <translation>samples</translation> + <translation>campioni</translation> </message> <message> <location filename="../SettingsView.ui" line="178"/> <source>Sample rate:</source> - <translation>Sample rate:</translation> + <translation>Freq. di campionamento:</translation> </message> <message> <location filename="../SettingsView.ui" line="190"/>

@@ -4338,7 +4338,7 @@ </message>

<message> <location filename="../SettingsView.ui" line="293"/> <source>Frameskip:</source> - <translation>Frameskip:</translation> + <translation>Salto frame:</translation> </message> <message> <location filename="../SettingsView.ui" line="302"/>

@@ -4354,17 +4354,17 @@ </message>

<message> <location filename="../SettingsView.ui" line="321"/> <source>FPS target:</source> - <translation>FPS mirato:</translation> + <translation>FPS finali:</translation> </message> <message> <location filename="../SettingsView.ui" line="343"/> <source>frames per second</source> - <translation>frame per secondo</translation> + <translation>frame al secondo</translation> </message> <message> <location filename="../SettingsView.ui" line="359"/> <source>Sync:</source> - <translation>Sincronizzare:</translation> + <translation>Sincronizza:</translation> </message> <message> <location filename="../SettingsView.ui" line="368"/>

@@ -4379,91 +4379,91 @@ </message>

<message> <location filename="../SettingsView.ui" line="384"/> <source>Lock aspect ratio</source> - <translation>Blocca aspect ratio</translation> + <translation>Blocca rapporti aspetto</translation> </message> <message> <location filename="../SettingsView.ui" line="1135"/> <source>Cheats</source> - <translation type="unfinished">Trucchi</translation> + <translation>Trucchi</translation> </message> <message> <location filename="../SettingsView.ui" line="1180"/> <source>Game Boy model</source> - <translation type="unfinished">Modello del Game Boy</translation> + <translation>Modello del Game Boy</translation> </message> <message> <location filename="../SettingsView.ui" line="1188"/> <location filename="../SettingsView.ui" line="1224"/> <location filename="../SettingsView.ui" line="1260"/> <source>Autodetect</source> - <translation type="unfinished">Rilevamento automatico</translation> + <translation>Rilevamento automatico</translation> </message> <message> <location filename="../SettingsView.ui" line="1193"/> <location filename="../SettingsView.ui" line="1229"/> <location filename="../SettingsView.ui" line="1265"/> <source>Game Boy (DMG)</source> - <translation type="unfinished">Game Boy (DMG)</translation> + <translation>Game Boy (DMG)</translation> </message> <message> <location filename="../SettingsView.ui" line="1198"/> <location filename="../SettingsView.ui" line="1234"/> <location filename="../SettingsView.ui" line="1270"/> <source>Super Game Boy (SGB)</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <location filename="../SettingsView.ui" line="1203"/> <location filename="../SettingsView.ui" line="1239"/> <location filename="../SettingsView.ui" line="1275"/> <source>Game Boy Color (CGB)</source> - <translation type="unfinished">Game Boy Color (CGB)</translation> + <translation>Game Boy Color (CGB)</translation> </message> <message> <location filename="../SettingsView.ui" line="1208"/> <location filename="../SettingsView.ui" line="1244"/> <location filename="../SettingsView.ui" line="1280"/> <source>Game Boy Advance (AGB)</source> - <translation type="unfinished">Game Boy Advance (AGB)</translation> + <translation>Game Boy Advance (AGB)</translation> </message> <message> <location filename="../SettingsView.ui" line="1216"/> <source>Super Game Boy model</source> - <translation type="unfinished"></translation> + <translation>Modello di Super Game Boy</translation> </message> <message> <location filename="../SettingsView.ui" line="1252"/> <source>Game Boy Color model</source> - <translation type="unfinished"></translation> + <translation>Modello di Game Boy Color</translation> </message> <message> <location filename="../SettingsView.ui" line="1295"/> <source>Default BG colors:</source> - <translation type="unfinished"></translation> + <translation>Colori predefiniti BG:</translation> </message> <message> <location filename="../SettingsView.ui" line="1462"/> <source>Super Game Boy borders</source> - <translation type="unfinished"></translation> + <translation>Bordi Super Game Boy</translation> </message> <message> <location filename="../SettingsView.ui" line="1476"/> <source>Camera driver:</source> - <translation type="unfinished"></translation> + <translation>Driver della fotocamera:</translation> </message> <message> <location filename="../SettingsView.ui" line="1573"/> <source>Default sprite colors 1:</source> - <translation type="unfinished"></translation> + <translation>Colori predefiniti sprite 1:</translation> </message> <message> <location filename="../SettingsView.ui" line="1580"/> <source>Default sprite colors 2:</source> - <translation type="unfinished"></translation> + <translation>Colori predefiniti sprite 2:</translation> </message> <message> <source>Resample video</source> - <translation type="vanished">Rimostrare video</translation> + <translation>Ricampionamento Video</translation> </message> <message> <location filename="../SettingsView.ui" line="432"/>

@@ -4478,7 +4478,7 @@ </message>

<message> <location filename="../SettingsView.ui" line="463"/> <source>Clear cache</source> - <translation>Cancella cache</translation> + <translation>Svuota la cache</translation> </message> <message> <location filename="../SettingsView.ui" line="572"/>

@@ -4501,12 +4501,12 @@ </message>

<message> <location filename="../SettingsView.ui" line="835"/> <source>Use BIOS file if found</source> - <translation>Utilizzare il file del BIOS se è stato trovato</translation> + <translation>Usa il file del BIOS se è presente</translation> </message> <message> <location filename="../SettingsView.ui" line="845"/> <source>Skip BIOS intro</source> - <translation>Salta BIOS intro</translation> + <translation>Salta intro del BIOS</translation> </message> <message> <location filename="../SettingsView.ui" line="584"/>

@@ -4531,12 +4531,12 @@ </message>

<message> <location filename="../SettingsView.ui" line="494"/> <source>Pause when inactive</source> - <translation>Pausa se inattivo</translation> + <translation>In Pausa se inattivo</translation> </message> <message> <location filename="../SettingsView.ui" line="669"/> <source>Run all</source> - <translation>Avviare tutto</translation> + <translation>Avvia tutto</translation> </message> <message> <location filename="../SettingsView.ui" line="674"/>

@@ -4574,67 +4574,67 @@ </message>

<message> <location filename="../SettingsView.ui" line="622"/> <source>Enable rewind</source> - <translation>Abilita riavvolgi</translation> + <translation>Abilita riavvolgimento</translation> </message> <message> <location filename="../SettingsView.ui" line="391"/> <source>Bilinear filtering</source> - <translation type="unfinished"></translation> + <translation>Filtro bilineare</translation> </message> <message> <location filename="../SettingsView.ui" line="398"/> <source>Force integer scaling</source> - <translation type="unfinished"></translation> + <translation>Forza scaling con numeri interi</translation> </message> <message> <location filename="../SettingsView.ui" line="409"/> <source>Language</source> - <translation type="unfinished"></translation> + <translation>Lingua</translation> </message> <message> <location filename="../SettingsView.ui" line="417"/> <source>English</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <location filename="../SettingsView.ui" line="440"/> <source>List view</source> - <translation type="unfinished"></translation> + <translation>Inglese</translation> </message> <message> <location filename="../SettingsView.ui" line="445"/> <source>Tree view</source> - <translation type="unfinished"></translation> + <translation>Visualizza ad albero</translation> </message> <message> <location filename="../SettingsView.ui" line="501"/> <source>Show FPS in title bar</source> - <translation type="unfinished"></translation> + <translation>Mostra gli FPS nella barra del titolo</translation> </message> <message> <location filename="../SettingsView.ui" line="525"/> <source>Automatically save cheats</source> - <translation type="unfinished"></translation> + <translation>Salva i trucchi automaticamente</translation> </message> <message> <location filename="../SettingsView.ui" line="535"/> <source>Automatically load cheats</source> - <translation type="unfinished"></translation> + <translation>Carica i trucchi automaticamente</translation> </message> <message> <location filename="../SettingsView.ui" line="545"/> <source>Automatically save state</source> - <translation type="unfinished"></translation> + <translation>Salva stato automaticamente</translation> </message> <message> <location filename="../SettingsView.ui" line="555"/> <source>Automatically load state</source> - <translation type="unfinished"></translation> + <translation>Carica stato automaticamente</translation> </message> <message> <location filename="../SettingsView.ui" line="629"/> <source>Rewind history:</source> - <translation>Riavvolgi storia:</translation> + <translation>Cronologia riavvolgimento:</translation> </message> <message> <location filename="../SettingsView.ui" line="661"/>

@@ -4644,7 +4644,7 @@ </message>

<message> <location filename="../SettingsView.ui" line="694"/> <source>Savestate extra data:</source> - <translation>Salva dati extra:</translation> + <translation>Dati extra salvataggio stato:</translation> </message> <message> <location filename="../SettingsView.ui" line="731"/>

@@ -4654,42 +4654,42 @@ </message>

<message> <location filename="../SettingsView.ui" line="769"/> <source>Rewind affects save data</source> - <translation type="unfinished"></translation> + <translation>Il riavvolgimento influenza i dati salvataggio</translation> </message> <message> <location filename="../SettingsView.ui" line="779"/> <source>Preload entire ROM into memory</source> - <translation type="unfinished"></translation> + <translation>Precarica tutta la ROM nella memoria</translation> </message> <message> <location filename="../SettingsView.ui" line="786"/> <source>Autofire interval:</source> - <translation type="unfinished"></translation> + <translation>Intervallo Autofire:</translation> </message> <message> <location filename="../SettingsView.ui" line="807"/> <source>GB BIOS file:</source> - <translation>File GB BIOS:</translation> + <translation>File BIOS del GB:</translation> </message> <message> <location filename="../SettingsView.ui" line="873"/> <source>GBA BIOS file:</source> - <translation>File GBA BIOS:</translation> + <translation>File BIOS del GBA:</translation> </message> <message> <location filename="../SettingsView.ui" line="880"/> <source>GBC BIOS file:</source> - <translation>File GBC BIOS:</translation> + <translation>File BIOS del GBC:</translation> </message> <message> <location filename="../SettingsView.ui" line="908"/> <source>SGB BIOS file:</source> - <translation type="unfinished"></translation> + <translation>File BIOS del SGB:</translation> </message> <message> <location filename="../SettingsView.ui" line="943"/> <source>Save games</source> - <translation>Salva il gioco</translation> + <translation>Salva le partite</translation> </message> <message> <location filename="../SettingsView.ui" line="977"/>

@@ -4698,17 +4698,17 @@ <location filename="../SettingsView.ui" line="1073"/>

<location filename="../SettingsView.ui" line="1121"/> <location filename="../SettingsView.ui" line="1169"/> <source>Same directory as the ROM</source> - <translation>Stessa directory della ROM</translation> + <translation>Stessa cartella della ROM</translation> </message> <message> <location filename="../SettingsView.ui" line="991"/> <source>Save states</source> - <translation>Salva Stato</translation> + <translation>Salvataggio Stati</translation> </message> <message> <location filename="../SettingsView.ui" line="1039"/> <source>Screenshots</source> - <translation>Screenshots</translation> + <translation>Screenshot</translation> </message> <message> <location filename="../SettingsView.ui" line="1087"/>

@@ -4721,7 +4721,7 @@ <name>ShaderSelector</name>

<message> <location filename="../ShaderSelector.ui" line="14"/> <source>Shaders</source> - <translation>Shaders</translation> + <translation>Shader</translation> </message> <message> <location filename="../ShaderSelector.ui" line="28"/>

@@ -4751,7 +4751,7 @@ </message>

<message> <location filename="../ShaderSelector.ui" line="95"/> <source>Load New Shader</source> - <translation>Carica Nuovo shader</translation> + <translation>Carica nuovo shader</translation> </message> </context> <context>

@@ -4759,7 +4759,7 @@ <name>ShortcutView</name>

<message> <location filename="../ShortcutView.ui" line="14"/> <source>Edit Shortcuts</source> - <translation>Edita Shortcuts</translation> + <translation>Modifica le Scorciatoie</translation> </message> <message> <location filename="../ShortcutView.ui" line="29"/>

@@ -4774,7 +4774,7 @@ </message>

<message> <location filename="../ShortcutView.ui" line="46"/> <source>Clear</source> - <translation>Cancella</translation> + <translation>Svuota</translation> </message> </context> <context>

@@ -4797,7 +4797,7 @@ </message>

<message> <location filename="../TileView.ui" line="44"/> <source>Magnification</source> - <translation>Magnification</translation> + <translation>Ingrandimento</translation> </message> </context> <context>

@@ -4805,7 +4805,7 @@ <name>VideoView</name>

<message> <location filename="../VideoView.ui" line="20"/> <source>Record Video</source> - <translation>Registra video</translation> + <translation>Registra Video</translation> </message> <message> <location filename="../VideoView.ui" line="40"/>

@@ -4815,7 +4815,7 @@ </message>

<message> <location filename="../VideoView.ui" line="56"/> <source>Stop</source> - <translation>Stop</translation> + <translation>Ferma</translation> </message> <message> <location filename="../VideoView.ui" line="69"/>

@@ -4825,7 +4825,7 @@ </message>

<message> <location filename="../VideoView.ui" line="101"/> <source>Presets</source> - <translation>Presets</translation> + <translation>Profili</translation> </message> <message> <location filename="../VideoView.ui" line="109"/>

@@ -4890,7 +4890,7 @@ <translation>MP4</translation>

</message> <message> <source>PNG</source> - <translation type="vanished">PNG</translation> + <translation>PNG</translation> </message> <message> <location filename="../VideoView.ui" line="259"/>

@@ -4900,21 +4900,21 @@ </message>

<message> <location filename="../VideoView.ui" line="264"/> <source>h.264 (NVENC)</source> - <translation type="unfinished"></translation> + <translation>h.264 (NVENC)</translation> </message> <message> <location filename="../VideoView.ui" line="269"/> <source>HEVC</source> - <translation type="unfinished"></translation> + <translation>HEVC</translation> </message> <message> <location filename="../VideoView.ui" line="274"/> <source>VP8</source> - <translation></translation> + <translation>VP8</translation> </message> <message> <source>Xvid</source> - <translation type="vanished">Xvid</translation> + <translation>Xvid</translation> </message> <message> <location filename="../VideoView.ui" line="279"/>

@@ -4954,7 +4954,7 @@ </message>

<message> <location filename="../VideoView.ui" line="327"/> <source> Bitrate (kbps)</source> - <translation>Bitrate (kbps)</translation> + <translation> Bitrate (kbps)</translation> </message> <message> <location filename="../VideoView.ui" line="333"/>

@@ -4984,12 +4984,12 @@ </message>

<message> <location filename="../VideoView.ui" line="460"/> <source>Lock aspect ratio</source> - <translation>Blocca aspect ratio</translation> + <translation>Blocca rapporti aspetto</translation> </message> <message> <location filename="../VideoView.ui" line="475"/> <source>Show advanced</source> - <translation>Mostra avanzato</translation> + <translation>Mostra avanzate</translation> </message> </context> </TS>