Merge branch 'master' (early part) into medusa

This commit is contained in:
Vicki Pfau 2021-06-11 21:04:53 -07:00
commit ad2827423c
60 changed files with 10385 additions and 2767 deletions

18
CHANGES
View File

@ -33,7 +33,18 @@ Misc:
- DS GX: Reject and log polygons that clip to more than 10 vertices
- DS Core: Backport symbol loading changes from GBA core (fixes mgba.io/i/1834)
0.9.0: (Future)
0.10.0: (Future)
Emulation fixes:
- Core: Fix first event scheduling after loading savestate
- GB Serialize: Fix switching speed modes when loading a state (fixes mgba.io/i/2097)
- GBA Memory: Fix loading Thumb savestates when in ARM mode
Other fixes:
- GBA: Fix non-USA 1.0 FireRed misdetecting as a ROM hack (fixes mgba.io/i/2100)
- GBA: Fix crash when ROM loading fails
Misc:
- Qt: Add ROM filename and size to bug reporter
0.9.0: (2021-03-28)
Features:
- e-Reader card scanning
- New tool for converting between different save game formats
@ -75,6 +86,7 @@ Emulation fixes:
- GBA BIOS: Improve HLE BIOS timing
- GBA BIOS: Fix reloading video registers after reset (fixes mgba.io/i/1808)
- GBA BIOS: Make HLE BIOS calls interruptable (fixes mgba.io/i/1711 and mgba.io/i/1823)
- GBA BIOS: Fix invalid decompression bounds checking
- GBA DMA: Linger last DMA on bus (fixes mgba.io/i/301 and mgba.io/i/1320)
- GBA DMA: Fix ordering and timing of overlapping DMAs
- GBA I/O: Green swap register should be readable
@ -99,6 +111,7 @@ Emulation fixes:
- GBA Video: Emulate sprite cycle limits in OpenGL renderer (fixes mgba.io/i/1635)
- GBA Video: Fix OBJWIN erratic rendering in OpenGL renderer
- GBA Video: Fix x offset in 256-color BG mosaic (fixes mgba.io/i/1684)
- GBA Video: Fix transposed BG mosaic parameters in GL renderer
- SM83: Emulate HALT bug
- SM83: Improve mid-M-cycle interrupts
- SM83: HALT should not consume an extra T-state
@ -158,6 +171,7 @@ Misc:
- GB: Allow pausing event loop while CPU is blocked
- GB: Add support for sleep and shutdown callbacks
- GB: Redo double speed emulation (closes mgba.io/i/1515)
- GB: Support loading CGB-on-AGB boot ROM
- GB Audio: Add channel 4 batching back (fixes mgba.io/i/1313)
- GB Core: Return the current number of banks for ROM/SRAM, not theoretical max
- GB I/O: Implement preliminary support for PCM12/PCM34 (closes mgba.io/i/1468)
@ -188,6 +202,8 @@ Misc:
- Qt: Use relative paths in portable mode when applicable (fixes mgba.io/i/838)
- Qt: Better initial shortcut editor column sizes
- SDL: Fall back to sw blit if OpenGL init fails
- Switch: Optimize font rendering (fixes mgba.io/i/2078)
- Switch: Allow switching between CPU and GPU renderers without reloading
- Util: Reset vector size on deinit
- VFS: Change semantics of VFile.sync on mapped files (fixes mgba.io/i/1730)

View File

@ -60,7 +60,7 @@ struct GUIBackground {
struct GUIParams {
unsigned width;
unsigned height;
const struct GUIFont* font;
struct GUIFont* font;
const char* basePath;
void (*drawStart)(void);

View File

@ -82,11 +82,15 @@ unsigned GUIFontSpanWidth(const struct GUIFont*, const char* text);
void GUIFontIconMetrics(const struct GUIFont*, enum GUIIcon icon, unsigned* w, unsigned* h);
ATTRIBUTE_FORMAT(printf, 6, 7)
void GUIFontPrintf(const struct GUIFont*, int x, int y, enum GUIAlignment, uint32_t color, const char* text, ...);
void GUIFontPrint(const struct GUIFont*, int x, int y, enum GUIAlignment, uint32_t color, const char* text);
void GUIFontDrawGlyph(const struct GUIFont*, int x, int y, uint32_t color, uint32_t glyph);
void GUIFontDrawIcon(const struct GUIFont*, int x, int y, enum GUIAlignment, enum GUIOrientation, uint32_t color, enum GUIIcon);
void GUIFontDrawIconSize(const struct GUIFont* font, int x, int y, int w, int h, uint32_t color, enum GUIIcon icon);
void GUIFontPrintf(struct GUIFont*, int x, int y, enum GUIAlignment, uint32_t color, const char* text, ...);
void GUIFontPrint(struct GUIFont*, int x, int y, enum GUIAlignment, uint32_t color, const char* text);
void GUIFontDrawGlyph(struct GUIFont*, int x, int y, uint32_t color, uint32_t glyph);
void GUIFontDrawIcon(struct GUIFont*, int x, int y, enum GUIAlignment, enum GUIOrientation, uint32_t color, enum GUIIcon);
void GUIFontDrawIconSize(struct GUIFont* font, int x, int y, int w, int h, uint32_t color, enum GUIIcon icon);
#ifdef __SWITCH__
void GUIFontDrawSubmit(struct GUIFont* font);
#endif
CXX_GUARD_END

View File

@ -79,7 +79,6 @@ struct GBASIODriver {
};
void GBASIOJOYCreate(struct GBASIODriver* sio);
int GBASIOJOYSendCommand(struct GBASIODriver* sio, enum GBASIOJOYCommand command, uint8_t* data);
enum GBASIOBattleChipGateFlavor {
GBA_FLAVOR_BATTLECHIP_GATE = 4,

View File

@ -304,6 +304,7 @@ void GBAAudioWriteSOUNDCNT_X(struct GBAAudio* audio, uint16_t value);
void GBAAudioWriteSOUNDBIAS(struct GBAAudio* audio, uint16_t value);
void GBAAudioWriteWaveRAM(struct GBAAudio* audio, int address, uint32_t value);
uint32_t GBAAudioReadWaveRAM(struct GBAAudio* audio, int address);
uint32_t GBAAudioWriteFIFO(struct GBAAudio* audio, int address, uint32_t value);
void GBAAudioSampleFIFO(struct GBAAudio* audio, int fifoId, int32_t cycles);

View File

@ -29,8 +29,12 @@ enum {
JOY_CMD_TRANS = 0x14,
JOY_CMD_RECV = 0x15,
JOYSTAT_TRANS_BIT = 8,
JOYSTAT_RECV_BIT = 2,
JOYSTAT_TRANS = 8,
JOYSTAT_RECV = 2,
JOYCNT_RESET = 1,
JOYCNT_RECV = 2,
JOYCNT_TRANS = 4,
};
DECL_BITFIELD(GBASIONormal, uint16_t);
@ -78,6 +82,8 @@ void GBASIOWriteRCNT(struct GBASIO* sio, uint16_t value);
void GBASIOWriteSIOCNT(struct GBASIO* sio, uint16_t value);
uint16_t GBASIOWriteRegister(struct GBASIO* sio, uint32_t address, uint16_t value);
int GBASIOJOYSendCommand(struct GBASIODriver* sio, enum GBASIOJOYCommand command, uint8_t* data);
CXX_GUARD_END
#endif

View File

@ -0,0 +1,41 @@
/* Copyright (c) 2013-2017 Jeffrey Pfau
*
* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
#ifndef SIO_DOLPHIN_H
#define SIO_DOLPHIN_H
#include <mgba-util/common.h>
CXX_GUARD_START
#include <mgba/core/timing.h>
#include <mgba/internal/gba/sio.h>
#include <mgba-util/socket.h>
extern const uint16_t DOLPHIN_CLOCK_PORT;
extern const uint16_t DOLPHIN_DATA_PORT;
struct GBASIODolphin {
struct GBASIODriver d;
struct mTimingEvent event;
Socket data;
Socket clock;
int32_t clockSlice;
int state;
bool active;
};
void GBASIODolphinCreate(struct GBASIODolphin*);
void GBASIODolphinDestroy(struct GBASIODolphin*);
bool GBASIODolphinConnect(struct GBASIODolphin*, const struct Address* address, short dataPort, short clockPort);
bool GBASIODolphinIsConnected(struct GBASIODolphin*);
CXX_GUARD_END
#endif

File diff suppressed because it is too large Load Diff

View File

@ -2,3 +2,7 @@ Miras Absar
Emily A. Bellows
Jaime J. Denizard
Benedikt Feih
Jezzabel
NimbusFox
Petru-Sebastian Toader
Zach

View File

@ -100,7 +100,10 @@ int32_t mTimingTick(struct mTiming* timing, int32_t cycles) {
if (timing->reroot) {
timing->root = timing->reroot;
timing->reroot = NULL;
*timing->nextEvent = mTimingNextEvent(timing);
*timing->nextEvent = mTimingNextEvent(timing);
if (*timing->nextEvent <= 0) {
return mTimingTick(timing, 0);
}
}
return *timing->nextEvent;
}

View File

@ -623,14 +623,19 @@ void mGUIRun(struct mGUIRunner* runner, const char* path) {
int frames = 0;
GUIPollInput(&runner->params, 0, &keys);
while (keys && frames < 30) {
++frames;
runner->params.drawStart();
runner->drawFrame(runner, true);
runner->params.drawEnd();
#ifdef _3DS
// XXX: Why does this fix #1294?
usleep(1000);
if (!frames) {
#endif
runner->params.drawStart();
runner->drawFrame(runner, true);
runner->params.drawEnd();
#ifdef _3DS
} else {
// XXX: Why does this fix #1294?
usleep(15000);
}
#endif
++frames;
GUIPollInput(&runner->params, 0, &keys);
}
if (runner->unpaused) {

View File

@ -60,6 +60,7 @@ void mVideoThreadProxyReset(struct mVideoLogger* logger) {
ConditionWake(&proxyRenderer->toThreadCond);
ConditionWait(&proxyRenderer->fromThreadCond, &proxyRenderer->mutex);
}
RingFIFOClear(&proxyRenderer->dirtyQueue);
MutexUnlock(&proxyRenderer->mutex);
}

View File

@ -26,12 +26,13 @@ const uint32_t GB_COMPONENT_MAGIC = 0x400000;
static const uint8_t _knownHeader[4] = { 0xCE, 0xED, 0x66, 0x66};
#define DMG_BIOS_CHECKSUM 0xC2F5CC97
#define DMG_2_BIOS_CHECKSUM 0x59C8598E
#define DMG0_BIOS_CHECKSUM 0xC2F5CC97
#define DMG_BIOS_CHECKSUM 0x59C8598E
#define MGB_BIOS_CHECKSUM 0xE6920754
#define SGB_BIOS_CHECKSUM 0xEC8A83B9
#define SGB2_BIOS_CHECKSUM 0X53D0DD63
#define CGB_BIOS_CHECKSUM 0x41884E46
#define AGB_BIOS_CHECKSUM 0xFFD6B0F1
mLOG_DEFINE_CATEGORY(GB, "GB", "gb");
@ -414,11 +415,12 @@ static uint32_t _GBBiosCRC32(struct VFile* vf) {
bool GBIsBIOS(struct VFile* vf) {
switch (_GBBiosCRC32(vf)) {
case DMG_BIOS_CHECKSUM:
case DMG_2_BIOS_CHECKSUM:
case DMG0_BIOS_CHECKSUM:
case MGB_BIOS_CHECKSUM:
case SGB_BIOS_CHECKSUM:
case SGB2_BIOS_CHECKSUM:
case CGB_BIOS_CHECKSUM:
case AGB_BIOS_CHECKSUM:
return true;
default:
return false;
@ -623,7 +625,7 @@ void GBDetectModel(struct GB* gb) {
if (gb->biosVf) {
switch (_GBBiosCRC32(gb->biosVf)) {
case DMG_BIOS_CHECKSUM:
case DMG_2_BIOS_CHECKSUM:
case DMG0_BIOS_CHECKSUM:
gb->model = GB_MODEL_DMG;
break;
case MGB_BIOS_CHECKSUM:
@ -638,6 +640,9 @@ void GBDetectModel(struct GB* gb) {
case CGB_BIOS_CHECKSUM:
gb->model = GB_MODEL_CGB;
break;
case AGB_BIOS_CHECKSUM:
gb->model = GB_MODEL_AGB;
break;
default:
gb->biosVf->close(gb->biosVf);
gb->biosVf = NULL;

View File

@ -172,6 +172,7 @@ bool GBDeserialize(struct GB* gb, const struct GBSerializedState* state) {
gb->cpu->condition = GBSerializedCpuFlagsGetCondition(flags);
gb->cpu->irqPending = GBSerializedCpuFlagsGetIrqPending(flags);
gb->doubleSpeed = GBSerializedCpuFlagsGetDoubleSpeed(flags);
gb->cpu->tMultiplier = 2 - gb->doubleSpeed;
gb->cpu->halted = GBSerializedCpuFlagsGetHalted(flags);
gb->cpuBlocked = GBSerializedCpuFlagsGetBlocked(flags);

View File

@ -34,6 +34,7 @@ set(SOURCE_FILES
video.c)
set(SIO_FILES
sio/dolphin.c
sio/joybus.c
sio/lockstep.c)

View File

@ -221,7 +221,27 @@ void GBAAudioWriteSOUNDBIAS(struct GBAAudio* audio, uint16_t value) {
}
void GBAAudioWriteWaveRAM(struct GBAAudio* audio, int address, uint32_t value) {
audio->psg.ch3.wavedata32[address | (!audio->psg.ch3.bank * 4)] = value;
int bank = !audio->psg.ch3.bank;
// When the audio hardware is turned off, it acts like bank 0 has been
// selected in SOUND3CNT_L, so any read comes from bank 1.
if (!audio->enable) {
bank = 1;
}
audio->psg.ch3.wavedata32[address | (bank * 4)] = value;
}
uint32_t GBAAudioReadWaveRAM(struct GBAAudio* audio, int address) {
int bank = !audio->psg.ch3.bank;
// When the audio hardware is turned off, it acts like bank 0 has been
// selected in SOUND3CNT_L, so any read comes from bank 1.
if (!audio->enable) {
bank = 1;
}
return audio->psg.ch3.wavedata32[address | (bank * 4)];
}
uint32_t GBAAudioWriteFIFO(struct GBAAudio* audio, int address, uint32_t value) {

View File

@ -525,7 +525,7 @@ void GBASwi16(struct ARMCore* cpu, int immediate) {
break;
case GBA_SWI_LZ77_UNCOMP_WRAM:
case GBA_SWI_LZ77_UNCOMP_VRAM:
if (cpu->gprs[0] < BASE_WORKING_RAM) {
if (!(cpu->gprs[0] & 0x0E000000)) {
mLOG(GBA_BIOS, GAME_ERROR, "Bad LZ77 source");
break;
}
@ -541,7 +541,7 @@ void GBASwi16(struct ARMCore* cpu, int immediate) {
}
break;
case GBA_SWI_HUFFMAN_UNCOMP:
if (cpu->gprs[0] < BASE_WORKING_RAM) {
if (!(cpu->gprs[0] & 0x0E000000)) {
mLOG(GBA_BIOS, GAME_ERROR, "Bad Huffman source");
break;
}
@ -558,7 +558,7 @@ void GBASwi16(struct ARMCore* cpu, int immediate) {
break;
case GBA_SWI_RL_UNCOMP_WRAM:
case GBA_SWI_RL_UNCOMP_VRAM:
if (cpu->gprs[0] < BASE_WORKING_RAM) {
if (!(cpu->gprs[0] & 0x0E000000)) {
mLOG(GBA_BIOS, GAME_ERROR, "Bad RL source");
break;
}
@ -576,7 +576,7 @@ void GBASwi16(struct ARMCore* cpu, int immediate) {
case GBA_SWI_DIFF_8BIT_UNFILTER_WRAM:
case GBA_SWI_DIFF_8BIT_UNFILTER_VRAM:
case GBA_SWI_DIFF_16BIT_UNFILTER:
if (cpu->gprs[0] < BASE_WORKING_RAM) {
if (!(cpu->gprs[0] & 0x0E000000)) {
mLOG(GBA_BIOS, GAME_ERROR, "Bad UnFilter source");
break;
}

View File

@ -411,6 +411,7 @@ bool GBALoadROM(struct GBA* gba, struct VFile* vf) {
gba->memory.romSize = gba->pristineRomSize;
}
if (!gba->memory.rom) {
gba->romVf = NULL;
mLOG(GBA, WARN, "Couldn't map ROM");
return false;
}

View File

@ -342,248 +342,255 @@ void GBAIOInit(struct GBA* gba) {
void GBAIOWrite(struct GBA* gba, uint32_t address, uint16_t value) {
if (address < REG_SOUND1CNT_LO && (address > REG_VCOUNT || address < REG_DISPSTAT)) {
value = gba->video.renderer->writeVideoRegister(gba->video.renderer, address, value);
} else {
switch (address) {
// Video
case REG_DISPSTAT:
value &= 0xFFF8;
GBAVideoWriteDISPSTAT(&gba->video, value);
return;
gba->memory.io[address >> 1] = gba->video.renderer->writeVideoRegister(gba->video.renderer, address, value);
return;
}
case REG_VCOUNT:
mLOG(GBA_IO, GAME_ERROR, "Write to read-only I/O register: %03X", address);
return;
if (address >= REG_SOUND1CNT_LO && address <= REG_SOUNDCNT_LO && !gba->audio.enable) {
// Ignore writes to most audio registers if the hardware is off.
return;
}
// Audio
case REG_SOUND1CNT_LO:
GBAAudioWriteSOUND1CNT_LO(&gba->audio, value);
value &= 0x007F;
break;
case REG_SOUND1CNT_HI:
GBAAudioWriteSOUND1CNT_HI(&gba->audio, value);
break;
case REG_SOUND1CNT_X:
GBAAudioWriteSOUND1CNT_X(&gba->audio, value);
value &= 0x47FF;
break;
case REG_SOUND2CNT_LO:
GBAAudioWriteSOUND2CNT_LO(&gba->audio, value);
break;
case REG_SOUND2CNT_HI:
GBAAudioWriteSOUND2CNT_HI(&gba->audio, value);
value &= 0x47FF;
break;
case REG_SOUND3CNT_LO:
GBAAudioWriteSOUND3CNT_LO(&gba->audio, value);
value &= 0x00E0;
break;
case REG_SOUND3CNT_HI:
GBAAudioWriteSOUND3CNT_HI(&gba->audio, value);
value &= 0xE03F;
break;
case REG_SOUND3CNT_X:
GBAAudioWriteSOUND3CNT_X(&gba->audio, value);
// TODO: The low bits need to not be readable, but still 8-bit writable
value &= 0x47FF;
break;
case REG_SOUND4CNT_LO:
GBAAudioWriteSOUND4CNT_LO(&gba->audio, value);
value &= 0xFF3F;
break;
case REG_SOUND4CNT_HI:
GBAAudioWriteSOUND4CNT_HI(&gba->audio, value);
value &= 0x40FF;
break;
case REG_SOUNDCNT_LO:
GBAAudioWriteSOUNDCNT_LO(&gba->audio, value);
value &= 0xFF77;
break;
case REG_SOUNDCNT_HI:
GBAAudioWriteSOUNDCNT_HI(&gba->audio, value);
value &= 0x770F;
break;
case REG_SOUNDCNT_X:
GBAAudioWriteSOUNDCNT_X(&gba->audio, value);
value &= 0x0080;
value |= gba->memory.io[REG_SOUNDCNT_X >> 1] & 0xF;
break;
case REG_SOUNDBIAS:
GBAAudioWriteSOUNDBIAS(&gba->audio, value);
break;
switch (address) {
// Video
case REG_DISPSTAT:
value &= 0xFFF8;
GBAVideoWriteDISPSTAT(&gba->video, value);
return;
case REG_WAVE_RAM0_LO:
case REG_WAVE_RAM1_LO:
case REG_WAVE_RAM2_LO:
case REG_WAVE_RAM3_LO:
GBAIOWrite32(gba, address, (gba->memory.io[(address >> 1) + 1] << 16) | value);
break;
case REG_VCOUNT:
mLOG(GBA_IO, GAME_ERROR, "Write to read-only I/O register: %03X", address);
return;
case REG_WAVE_RAM0_HI:
case REG_WAVE_RAM1_HI:
case REG_WAVE_RAM2_HI:
case REG_WAVE_RAM3_HI:
GBAIOWrite32(gba, address - 2, gba->memory.io[(address >> 1) - 1] | (value << 16));
break;
// Audio
case REG_SOUND1CNT_LO:
GBAAudioWriteSOUND1CNT_LO(&gba->audio, value);
value &= 0x007F;
break;
case REG_SOUND1CNT_HI:
GBAAudioWriteSOUND1CNT_HI(&gba->audio, value);
break;
case REG_SOUND1CNT_X:
GBAAudioWriteSOUND1CNT_X(&gba->audio, value);
value &= 0x47FF;
break;
case REG_SOUND2CNT_LO:
GBAAudioWriteSOUND2CNT_LO(&gba->audio, value);
break;
case REG_SOUND2CNT_HI:
GBAAudioWriteSOUND2CNT_HI(&gba->audio, value);
value &= 0x47FF;
break;
case REG_SOUND3CNT_LO:
GBAAudioWriteSOUND3CNT_LO(&gba->audio, value);
value &= 0x00E0;
break;
case REG_SOUND3CNT_HI:
GBAAudioWriteSOUND3CNT_HI(&gba->audio, value);
value &= 0xE03F;
break;
case REG_SOUND3CNT_X:
GBAAudioWriteSOUND3CNT_X(&gba->audio, value);
// TODO: The low bits need to not be readable, but still 8-bit writable
value &= 0x47FF;
break;
case REG_SOUND4CNT_LO:
GBAAudioWriteSOUND4CNT_LO(&gba->audio, value);
value &= 0xFF3F;
break;
case REG_SOUND4CNT_HI:
GBAAudioWriteSOUND4CNT_HI(&gba->audio, value);
value &= 0x40FF;
break;
case REG_SOUNDCNT_LO:
GBAAudioWriteSOUNDCNT_LO(&gba->audio, value);
value &= 0xFF77;
break;
case REG_SOUNDCNT_HI:
GBAAudioWriteSOUNDCNT_HI(&gba->audio, value);
value &= 0x770F;
break;
case REG_SOUNDCNT_X:
GBAAudioWriteSOUNDCNT_X(&gba->audio, value);
value &= 0x0080;
value |= gba->memory.io[REG_SOUNDCNT_X >> 1] & 0xF;
break;
case REG_SOUNDBIAS:
GBAAudioWriteSOUNDBIAS(&gba->audio, value);
break;
case REG_FIFO_A_LO:
case REG_FIFO_B_LO:
GBAIOWrite32(gba, address, (gba->memory.io[(address >> 1) + 1] << 16) | value);
return;
case REG_WAVE_RAM0_LO:
case REG_WAVE_RAM1_LO:
case REG_WAVE_RAM2_LO:
case REG_WAVE_RAM3_LO:
GBAIOWrite32(gba, address, (gba->memory.io[(address >> 1) + 1] << 16) | value);
break;
case REG_FIFO_A_HI:
case REG_FIFO_B_HI:
GBAIOWrite32(gba, address - 2, gba->memory.io[(address >> 1) - 1] | (value << 16));
return;
case REG_WAVE_RAM0_HI:
case REG_WAVE_RAM1_HI:
case REG_WAVE_RAM2_HI:
case REG_WAVE_RAM3_HI:
GBAIOWrite32(gba, address - 2, gba->memory.io[(address >> 1) - 1] | (value << 16));
break;
// DMA
case REG_DMA0SAD_LO:
case REG_DMA0DAD_LO:
case REG_DMA1SAD_LO:
case REG_DMA1DAD_LO:
case REG_DMA2SAD_LO:
case REG_DMA2DAD_LO:
case REG_DMA3SAD_LO:
case REG_DMA3DAD_LO:
GBAIOWrite32(gba, address, (gba->memory.io[(address >> 1) + 1] << 16) | value);
break;
case REG_FIFO_A_LO:
case REG_FIFO_B_LO:
GBAIOWrite32(gba, address, (gba->memory.io[(address >> 1) + 1] << 16) | value);
return;
case REG_DMA0SAD_HI:
case REG_DMA0DAD_HI:
case REG_DMA1SAD_HI:
case REG_DMA1DAD_HI:
case REG_DMA2SAD_HI:
case REG_DMA2DAD_HI:
case REG_DMA3SAD_HI:
case REG_DMA3DAD_HI:
GBAIOWrite32(gba, address - 2, gba->memory.io[(address >> 1) - 1] | (value << 16));
break;
case REG_FIFO_A_HI:
case REG_FIFO_B_HI:
GBAIOWrite32(gba, address - 2, gba->memory.io[(address >> 1) - 1] | (value << 16));
return;
case REG_DMA0CNT_LO:
GBADMAWriteCNT_LO(gba, 0, value & 0x3FFF);
break;
case REG_DMA0CNT_HI:
value = GBADMAWriteCNT_HI(gba, 0, value);
break;
case REG_DMA1CNT_LO:
GBADMAWriteCNT_LO(gba, 1, value & 0x3FFF);
break;
case REG_DMA1CNT_HI:
value = GBADMAWriteCNT_HI(gba, 1, value);
break;
case REG_DMA2CNT_LO:
GBADMAWriteCNT_LO(gba, 2, value & 0x3FFF);
break;
case REG_DMA2CNT_HI:
value = GBADMAWriteCNT_HI(gba, 2, value);
break;
case REG_DMA3CNT_LO:
GBADMAWriteCNT_LO(gba, 3, value);
break;
case REG_DMA3CNT_HI:
value = GBADMAWriteCNT_HI(gba, 3, value);
break;
// DMA
case REG_DMA0SAD_LO:
case REG_DMA0DAD_LO:
case REG_DMA1SAD_LO:
case REG_DMA1DAD_LO:
case REG_DMA2SAD_LO:
case REG_DMA2DAD_LO:
case REG_DMA3SAD_LO:
case REG_DMA3DAD_LO:
GBAIOWrite32(gba, address, (gba->memory.io[(address >> 1) + 1] << 16) | value);
break;
// Timers
case REG_TM0CNT_LO:
GBATimerWriteTMCNT_LO(&gba->timers[0], value);
return;
case REG_TM1CNT_LO:
GBATimerWriteTMCNT_LO(&gba->timers[1], value);
return;
case REG_TM2CNT_LO:
GBATimerWriteTMCNT_LO(&gba->timers[2], value);
return;
case REG_TM3CNT_LO:
GBATimerWriteTMCNT_LO(&gba->timers[3], value);
return;
case REG_DMA0SAD_HI:
case REG_DMA0DAD_HI:
case REG_DMA1SAD_HI:
case REG_DMA1DAD_HI:
case REG_DMA2SAD_HI:
case REG_DMA2DAD_HI:
case REG_DMA3SAD_HI:
case REG_DMA3DAD_HI:
GBAIOWrite32(gba, address - 2, gba->memory.io[(address >> 1) - 1] | (value << 16));
break;
case REG_TM0CNT_HI:
value &= 0x00C7;
GBATimerWriteTMCNT_HI(&gba->timers[0], &gba->timing, &gba->memory.io[REG_TM0CNT_LO >> 1], value);
break;
case REG_TM1CNT_HI:
value &= 0x00C7;
GBATimerWriteTMCNT_HI(&gba->timers[1], &gba->timing, &gba->memory.io[REG_TM1CNT_LO >> 1], value);
break;
case REG_TM2CNT_HI:
value &= 0x00C7;
GBATimerWriteTMCNT_HI(&gba->timers[2], &gba->timing, &gba->memory.io[REG_TM2CNT_LO >> 1], value);
break;
case REG_TM3CNT_HI:
value &= 0x00C7;
GBATimerWriteTMCNT_HI(&gba->timers[3], &gba->timing, &gba->memory.io[REG_TM3CNT_LO >> 1], value);
break;
case REG_DMA0CNT_LO:
GBADMAWriteCNT_LO(gba, 0, value & 0x3FFF);
break;
case REG_DMA0CNT_HI:
value = GBADMAWriteCNT_HI(gba, 0, value);
break;
case REG_DMA1CNT_LO:
GBADMAWriteCNT_LO(gba, 1, value & 0x3FFF);
break;
case REG_DMA1CNT_HI:
value = GBADMAWriteCNT_HI(gba, 1, value);
break;
case REG_DMA2CNT_LO:
GBADMAWriteCNT_LO(gba, 2, value & 0x3FFF);
break;
case REG_DMA2CNT_HI:
value = GBADMAWriteCNT_HI(gba, 2, value);
break;
case REG_DMA3CNT_LO:
GBADMAWriteCNT_LO(gba, 3, value);
break;
case REG_DMA3CNT_HI:
value = GBADMAWriteCNT_HI(gba, 3, value);
break;
// SIO
case REG_SIOCNT:
GBASIOWriteSIOCNT(&gba->sio, value);
break;
case REG_RCNT:
value &= 0xC1FF;
GBASIOWriteRCNT(&gba->sio, value);
break;
case REG_JOY_TRANS_LO:
case REG_JOY_TRANS_HI:
gba->memory.io[REG_JOYSTAT >> 1] |= JOYSTAT_TRANS_BIT;
// Fall through
case REG_SIODATA32_LO:
case REG_SIODATA32_HI:
case REG_SIOMLT_SEND:
case REG_JOYCNT:
case REG_JOYSTAT:
case REG_JOY_RECV_LO:
case REG_JOY_RECV_HI:
value = GBASIOWriteRegister(&gba->sio, address, value);
break;
// Timers
case REG_TM0CNT_LO:
GBATimerWriteTMCNT_LO(&gba->timers[0], value);
return;
case REG_TM1CNT_LO:
GBATimerWriteTMCNT_LO(&gba->timers[1], value);
return;
case REG_TM2CNT_LO:
GBATimerWriteTMCNT_LO(&gba->timers[2], value);
return;
case REG_TM3CNT_LO:
GBATimerWriteTMCNT_LO(&gba->timers[3], value);
return;
case REG_TM0CNT_HI:
value &= 0x00C7;
GBATimerWriteTMCNT_HI(&gba->timers[0], &gba->timing, &gba->memory.io[REG_TM0CNT_LO >> 1], value);
break;
case REG_TM1CNT_HI:
value &= 0x00C7;
GBATimerWriteTMCNT_HI(&gba->timers[1], &gba->timing, &gba->memory.io[REG_TM1CNT_LO >> 1], value);
break;
case REG_TM2CNT_HI:
value &= 0x00C7;
GBATimerWriteTMCNT_HI(&gba->timers[2], &gba->timing, &gba->memory.io[REG_TM2CNT_LO >> 1], value);
break;
case REG_TM3CNT_HI:
value &= 0x00C7;
GBATimerWriteTMCNT_HI(&gba->timers[3], &gba->timing, &gba->memory.io[REG_TM3CNT_LO >> 1], value);
break;
// SIO
case REG_SIOCNT:
GBASIOWriteSIOCNT(&gba->sio, value);
break;
case REG_RCNT:
value &= 0xC1FF;
GBASIOWriteRCNT(&gba->sio, value);
break;
case REG_JOY_TRANS_LO:
case REG_JOY_TRANS_HI:
gba->memory.io[REG_JOYSTAT >> 1] |= JOYSTAT_TRANS;
// Fall through
case REG_SIODATA32_LO:
case REG_SIODATA32_HI:
case REG_SIOMLT_SEND:
case REG_JOYCNT:
case REG_JOYSTAT:
case REG_JOY_RECV_LO:
case REG_JOY_RECV_HI:
value = GBASIOWriteRegister(&gba->sio, address, value);
break;
// Interrupts and misc
case REG_KEYCNT:
value &= 0xC3FF;
gba->memory.io[address >> 1] = value;
GBATestKeypadIRQ(gba);
return;
case REG_WAITCNT:
value &= 0x5FFF;
GBAAdjustWaitstates(gba, value);
break;
case REG_IE:
gba->memory.io[REG_IE >> 1] = value;
GBATestIRQ(gba, 1);
return;
case REG_IF:
value = gba->memory.io[REG_IF >> 1] & ~value;
gba->memory.io[REG_IF >> 1] = value;
GBATestIRQ(gba, 1);
return;
case REG_IME:
gba->memory.io[REG_IME >> 1] = value & 1;
GBATestIRQ(gba, 1);
return;
case REG_MAX:
// Some bad interrupt libraries will write to this
break;
case REG_DEBUG_ENABLE:
gba->debug = value == 0xC0DE;
return;
case REG_DEBUG_FLAGS:
if (gba->debug) {
GBADebug(gba, value);
// Interrupts and misc
case REG_KEYCNT:
value &= 0xC3FF;
gba->memory.io[address >> 1] = value;
GBATestKeypadIRQ(gba);
return;
case REG_WAITCNT:
value &= 0x5FFF;
GBAAdjustWaitstates(gba, value);
break;
case REG_IE:
gba->memory.io[REG_IE >> 1] = value;
GBATestIRQ(gba, 1);
return;
case REG_IF:
value = gba->memory.io[REG_IF >> 1] & ~value;
gba->memory.io[REG_IF >> 1] = value;
GBATestIRQ(gba, 1);
return;
case REG_IME:
gba->memory.io[REG_IME >> 1] = value & 1;
GBATestIRQ(gba, 1);
return;
case REG_MAX:
// Some bad interrupt libraries will write to this
break;
case REG_DEBUG_ENABLE:
gba->debug = value == 0xC0DE;
return;
case REG_DEBUG_FLAGS:
if (gba->debug) {
GBADebug(gba, value);
return;
}
// Fall through
default:
if (address >= REG_DEBUG_STRING && address - REG_DEBUG_STRING < sizeof(gba->debugString)) {
STORE_16LE(value, address - REG_DEBUG_STRING, gba->debugString);
return;
}
mLOG(GBA_IO, STUB, "Stub I/O register write: %03X", address);
if (address >= REG_MAX) {
mLOG(GBA_IO, GAME_ERROR, "Write to unused I/O register: %03X", address);
return;
}
break;
}
// Fall through
default:
if (address >= REG_DEBUG_STRING && address - REG_DEBUG_STRING < sizeof(gba->debugString)) {
STORE_16LE(value, address - REG_DEBUG_STRING, gba->debugString);
return;
}
mLOG(GBA_IO, STUB, "Stub I/O register write: %03X", address);
if (address >= REG_MAX) {
mLOG(GBA_IO, GAME_ERROR, "Write to unused I/O register: %03X", address);
return;
}
break;
}
gba->memory.io[address >> 1] = value;
}
@ -616,6 +623,9 @@ void GBAIOWrite8(struct GBA* gba, uint32_t address, uint8_t value) {
void GBAIOWrite32(struct GBA* gba, uint32_t address, uint32_t value) {
switch (address) {
// Wave RAM can be written and read even if the audio hardware is disabled.
// However, it is not possible to switch between the two banks because it
// isn't possible to write to register SOUND3CNT_LO.
case REG_WAVE_RAM0_LO:
GBAAudioWriteWaveRAM(&gba->audio, 0, value);
break;
@ -826,13 +836,34 @@ uint16_t GBAIORead(struct GBA* gba, uint32_t address) {
case REG_JOY_RECV_LO:
case REG_JOY_RECV_HI:
gba->memory.io[REG_JOYSTAT >> 1] &= ~JOYSTAT_RECV_BIT;
gba->memory.io[REG_JOYSTAT >> 1] &= ~JOYSTAT_RECV;
break;
case REG_SOUNDBIAS:
case REG_POSTFLG:
mLOG(GBA_IO, STUB, "Stub I/O register read: %03x", address);
break;
// Wave RAM can be written and read even if the audio hardware is disabled.
// However, it is not possible to switch between the two banks because it
// isn't possible to write to register SOUND3CNT_LO.
case REG_WAVE_RAM0_LO:
return GBAAudioReadWaveRAM(&gba->audio, 0) & 0xFFFF;
case REG_WAVE_RAM0_HI:
return GBAAudioReadWaveRAM(&gba->audio, 0) >> 16;
case REG_WAVE_RAM1_LO:
return GBAAudioReadWaveRAM(&gba->audio, 1) & 0xFFFF;
case REG_WAVE_RAM1_HI:
return GBAAudioReadWaveRAM(&gba->audio, 1) >> 16;
case REG_WAVE_RAM2_LO:
return GBAAudioReadWaveRAM(&gba->audio, 2) & 0xFFFF;
case REG_WAVE_RAM2_HI:
return GBAAudioReadWaveRAM(&gba->audio, 2) >> 16;
case REG_WAVE_RAM3_LO:
return GBAAudioReadWaveRAM(&gba->audio, 3) & 0xFFFF;
case REG_WAVE_RAM3_HI:
return GBAAudioReadWaveRAM(&gba->audio, 3) >> 16;
case REG_SOUND1CNT_LO:
case REG_SOUND1CNT_HI:
case REG_SOUND1CNT_X:
@ -863,14 +894,6 @@ uint16_t GBAIORead(struct GBA* gba, uint32_t address) {
case REG_BLDALPHA:
case REG_SOUNDCNT_HI:
case REG_SOUNDCNT_X:
case REG_WAVE_RAM0_LO:
case REG_WAVE_RAM0_HI:
case REG_WAVE_RAM1_LO:
case REG_WAVE_RAM1_HI:
case REG_WAVE_RAM2_LO:
case REG_WAVE_RAM2_HI:
case REG_WAVE_RAM3_LO:
case REG_WAVE_RAM3_HI:
case REG_DMA0CNT_HI:
case REG_DMA1CNT_HI:
case REG_DMA2CNT_HI:

View File

@ -345,7 +345,7 @@ static void GBASetActiveRegion(struct ARMCore* cpu, uint32_t address) {
cpu->memory.activeSeqCycles16 = memory->waitstatesSeq16[memory->activeRegion];
cpu->memory.activeNonseqCycles32 = memory->waitstatesNonseq32[memory->activeRegion];
cpu->memory.activeNonseqCycles16 = memory->waitstatesNonseq16[memory->activeRegion];
cpu->memory.activeMask &= -(cpu->executionMode == MODE_THUMB ? WORD_SIZE_THUMB : WORD_SIZE_ARM);
cpu->memory.activeMask &= -(cpu->cpsr.t ? WORD_SIZE_THUMB : WORD_SIZE_ARM);
}
#define LOAD_BAD \

View File

@ -375,8 +375,30 @@ void GBAOverrideApplyDefaults(struct GBA* gba, const struct Configuration* overr
if (cart) {
memcpy(override.id, &cart->id, sizeof(override.id));
if (!strncmp("pokemon red version", &((const char*) gba->memory.rom)[0x108], 20) && gba->romCrc32 != 0xDD88761C) {
// Enable FLASH1M and RTC on Pokémon FireRed ROM hacks
static const uint32_t pokemonTable[] = {
// FireRed
0x1A81EEDF, // BPRD
0x3B2056E9, // BPRJ
0x5DC668F6, // BPRF
0x73A72167, // BPRI
0x84EE4776, // BPRE rev 1
0x9F08064E, // BPRS
0xBB640DF7, // BPRJ rev 1
0xDD88761C, // BPRE
};
bool isPokemon = false;
isPokemon = isPokemon || !strncmp("pokemon red version", &((const char*) gba->memory.rom)[0x108], 20);
bool isKnownPokemon = false;
if (isPokemon) {
size_t i;
for (i = 0; !isKnownPokemon && i < sizeof(pokemonTable) / sizeof(*pokemonTable); ++i) {
isKnownPokemon = gba->romCrc32 == pokemonTable[i];
}
}
if (isPokemon && !isKnownPokemon) {
// Enable FLASH1M and RTC on Pokémon ROM hacks
override.savetype = SAVEDATA_FLASH1M;
override.hardware = HW_RTC;
override.vbaBugCompat = true;

View File

@ -1824,7 +1824,7 @@ void _prepareBackground(struct GBAVideoGLRenderer* renderer, struct GBAVideoGLBa
glUniform1i(uniforms[GBA_GL_BG_VRAM], 0);
glUniform1i(uniforms[GBA_GL_OBJ_PALETTE], 1);
if (background->mosaic) {
glUniform2i(uniforms[GBA_GL_BG_MOSAIC], GBAMosaicControlGetBgV(renderer->mosaic) + 1, GBAMosaicControlGetBgH(renderer->mosaic) + 1);
glUniform2i(uniforms[GBA_GL_BG_MOSAIC], GBAMosaicControlGetBgH(renderer->mosaic) + 1, GBAMosaicControlGetBgV(renderer->mosaic) + 1);
} else {
glUniform2i(uniforms[GBA_GL_BG_MOSAIC], 0, 0);
}

View File

@ -31,6 +31,23 @@ static struct GBASIODriver* _lookupDriver(struct GBASIO* sio, enum GBASIOMode mo
}
}
static const char* _modeName(enum GBASIOMode mode) {
switch (mode) {
case SIO_NORMAL_8:
return "NORMAL8";
case SIO_NORMAL_32:
return "NORMAL32";
case SIO_MULTI:
return "MULTI";
case SIO_JOYBUS:
return "JOYBUS";
case SIO_GPIO:
return "GPIO";
default:
return "(unknown)";
}
}
static void _switchMode(struct GBASIO* sio) {
unsigned mode = ((sio->rcnt & 0xC000) | (sio->siocnt & 0x3000)) >> 12;
enum GBASIOMode newMode;
@ -43,6 +60,7 @@ static void _switchMode(struct GBASIO* sio) {
if (sio->activeDriver && sio->activeDriver->unload) {
sio->activeDriver->unload(sio->activeDriver);
}
mLOG(GBA_SIO, DEBUG, "Switching mode from %s to %s", _modeName(sio->mode), _modeName(newMode));
sio->mode = newMode;
sio->activeDriver = _lookupDriver(sio, sio->mode);
if (sio->activeDriver && sio->activeDriver->load) {
@ -182,5 +200,19 @@ uint16_t GBASIOWriteRegister(struct GBASIO* sio, uint32_t address, uint16_t valu
if (sio->activeDriver && sio->activeDriver->writeRegister) {
return sio->activeDriver->writeRegister(sio->activeDriver, address, value);
}
// Dummy drivers
switch (sio->mode) {
case SIO_JOYBUS:
switch (address) {
case REG_JOYCNT:
return (value & 0x0040) | (sio->p->memory.io[REG_JOYCNT >> 1] & ~(value & 0x7) & ~0x0040);
case REG_JOYSTAT:
return (value & 0x0030) | (sio->p->memory.io[REG_JOYSTAT >> 1] & ~0x30);
}
break;
default:
// TODO
break;
}
return value;
}

206
src/gba/sio/dolphin.c Normal file
View File

@ -0,0 +1,206 @@
/* Copyright (c) 2013-2017 Jeffrey Pfau
*
* This Source Code Form is subject to the terms of the Mozilla Public
* 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 <mgba/internal/gba/sio/dolphin.h>
#include <mgba/internal/gba/gba.h>
#include <mgba/internal/gba/io.h>
#define BITS_PER_SECOND 115200 // This is wrong, but we need to maintain compat for the time being
#define CYCLES_PER_BIT (GBA_ARM7TDMI_FREQUENCY / BITS_PER_SECOND)
#define CLOCK_GRAIN (CYCLES_PER_BIT * 8)
#define CLOCK_WAIT 500
const uint16_t DOLPHIN_CLOCK_PORT = 49420;
const uint16_t DOLPHIN_DATA_PORT = 54970;
enum {
WAIT_FOR_FIRST_CLOCK = 0,
WAIT_FOR_CLOCK,
WAIT_FOR_COMMAND,
};
static bool GBASIODolphinInit(struct GBASIODriver* driver);
static bool GBASIODolphinLoad(struct GBASIODriver* driver);
static bool GBASIODolphinUnload(struct GBASIODriver* driver);
static void GBASIODolphinProcessEvents(struct mTiming* timing, void* context, uint32_t cyclesLate);
static int32_t _processCommand(struct GBASIODolphin* dol, uint32_t cyclesLate);
static void _flush(struct GBASIODolphin* dol);
void GBASIODolphinCreate(struct GBASIODolphin* dol) {
GBASIOJOYCreate(&dol->d);
dol->d.init = GBASIODolphinInit;
dol->d.load = GBASIODolphinLoad;
dol->d.unload = GBASIODolphinUnload;
dol->event.context = dol;
dol->event.name = "GB SIO Lockstep";
dol->event.callback = GBASIODolphinProcessEvents;
dol->event.priority = 0x80;
dol->data = INVALID_SOCKET;
dol->clock = INVALID_SOCKET;
dol->active = false;
}
void GBASIODolphinDestroy(struct GBASIODolphin* dol) {
if (!SOCKET_FAILED(dol->data)) {
SocketClose(dol->data);
dol->data = INVALID_SOCKET;
}
if (!SOCKET_FAILED(dol->clock)) {
SocketClose(dol->clock);
dol->clock = INVALID_SOCKET;
}
}
bool GBASIODolphinConnect(struct GBASIODolphin* dol, const struct Address* address, short dataPort, short clockPort) {
if (!SOCKET_FAILED(dol->data)) {
SocketClose(dol->data);
dol->data = INVALID_SOCKET;
}
if (!dataPort) {
dataPort = DOLPHIN_DATA_PORT;
}
if (!SOCKET_FAILED(dol->clock)) {
SocketClose(dol->clock);
dol->clock = INVALID_SOCKET;
}
if (!clockPort) {
clockPort = DOLPHIN_CLOCK_PORT;
}
dol->data = SocketConnectTCP(dataPort, address);
if (SOCKET_FAILED(dol->data)) {
return false;
}
dol->clock = SocketConnectTCP(clockPort, address);
if (SOCKET_FAILED(dol->clock)) {
SocketClose(dol->data);
dol->data = INVALID_SOCKET;
return false;
}
SocketSetBlocking(dol->data, false);
SocketSetBlocking(dol->clock, false);
SocketSetTCPPush(dol->data, true);
return true;
}
static bool GBASIODolphinInit(struct GBASIODriver* driver) {
struct GBASIODolphin* dol = (struct GBASIODolphin*) driver;
dol->active = false;
dol->clockSlice = 0;
dol->state = WAIT_FOR_FIRST_CLOCK;
_flush(dol);
return true;
}
static bool GBASIODolphinLoad(struct GBASIODriver* driver) {
struct GBASIODolphin* dol = (struct GBASIODolphin*) driver;
dol->active = true;
_flush(dol);
mTimingDeschedule(&dol->d.p->p->timing, &dol->event);
mTimingSchedule(&dol->d.p->p->timing, &dol->event, 0);
return true;
}
static bool GBASIODolphinUnload(struct GBASIODriver* driver) {
struct GBASIODolphin* dol = (struct GBASIODolphin*) driver;
dol->active = false;
return true;
}
void GBASIODolphinProcessEvents(struct mTiming* timing, void* context, uint32_t cyclesLate) {
struct GBASIODolphin* dol = context;
if (SOCKET_FAILED(dol->data)) {
return;
}
dol->clockSlice -= cyclesLate;
int32_t clockSlice;
int32_t nextEvent = CLOCK_GRAIN;
switch (dol->state) {
case WAIT_FOR_FIRST_CLOCK:
dol->clockSlice = 0;
// Fall through
case WAIT_FOR_CLOCK:
if (dol->clockSlice < 0) {
Socket r = dol->clock;
SocketPoll(1, &r, 0, 0, CLOCK_WAIT);
}
if (SocketRecv(dol->clock, &clockSlice, 4) == 4) {
clockSlice = ntohl(clockSlice);
dol->clockSlice += clockSlice;
dol->state = WAIT_FOR_COMMAND;
nextEvent = 0;
}
// Fall through
case WAIT_FOR_COMMAND:
if (dol->clockSlice < -VIDEO_TOTAL_LENGTH * 4) {
Socket r = dol->data;
SocketPoll(1, &r, 0, 0, CLOCK_WAIT);
}
if (_processCommand(dol, cyclesLate) >= 0) {
dol->state = WAIT_FOR_CLOCK;
nextEvent = CLOCK_GRAIN;
}
break;
}
dol->clockSlice -= nextEvent;
mTimingSchedule(timing, &dol->event, nextEvent);
}
void _flush(struct GBASIODolphin* dol) {
uint8_t buffer[32];
while (SocketRecv(dol->clock, buffer, sizeof(buffer)) == sizeof(buffer));
while (SocketRecv(dol->data, buffer, sizeof(buffer)) == sizeof(buffer));
}
int32_t _processCommand(struct GBASIODolphin* dol, uint32_t cyclesLate) {
// This does not include the stop bits due to compatibility reasons
int bitsOnLine = 8;
uint8_t buffer[6];
int gotten = SocketRecv(dol->data, buffer, 1);
if (gotten < 1) {
return -1;
}
switch (buffer[0]) {
case JOY_RESET:
case JOY_POLL:
bitsOnLine += 24;
break;
case JOY_RECV:
gotten = SocketRecv(dol->data, &buffer[1], 4);
if (gotten < 4) {
return -1;
}
mLOG(GBA_SIO, DEBUG, "DOL recv: %02X%02X%02X%02X", buffer[1], buffer[2], buffer[3], buffer[4]);
// Fall through
case JOY_TRANS:
bitsOnLine += 40;
break;
}
if (!dol->active) {
return 0;
}
int sent = GBASIOJOYSendCommand(&dol->d, buffer[0], &buffer[1]);
SocketSend(dol->data, &buffer[1], sent);
return bitsOnLine * CYCLES_PER_BIT - cyclesLate;
}
bool GBASIODolphinIsConnected(struct GBASIODolphin* dol) {
return dol->data != INVALID_SOCKET;
}

View File

@ -21,12 +21,21 @@ void GBASIOJOYCreate(struct GBASIODriver* sio) {
uint16_t GBASIOJOYWriteRegister(struct GBASIODriver* sio, uint32_t address, uint16_t value) {
switch (address) {
case REG_JOYCNT:
mLOG(GBA_SIO, DEBUG, "JOY write: CNT <- %04X", value);
return (value & 0x0040) | (sio->p->p->memory.io[REG_JOYCNT >> 1] & ~(value & 0x7) & ~0x0040);
case REG_JOYSTAT:
mLOG(GBA_SIO, DEBUG, "JOY write: STAT <- %04X", value);
return (value & 0x0030) | (sio->p->p->memory.io[REG_JOYSTAT >> 1] & ~0x30);
case REG_JOY_TRANS_LO:
mLOG(GBA_SIO, DEBUG, "JOY write: TRANS_LO <- %04X", value);
break;
case REG_JOY_TRANS_HI:
sio->p->p->memory.io[REG_JOYSTAT >> 1] |= 8;
mLOG(GBA_SIO, DEBUG, "JOY write: TRANS_HI <- %04X", value);
break;
default:
mLOG(GBA_SIO, DEBUG, "JOY write: Unknown reg %03X <- %04X", address, value);
// Fall through
case REG_RCNT:
break;
}
return value;
@ -35,7 +44,7 @@ uint16_t GBASIOJOYWriteRegister(struct GBASIODriver* sio, uint32_t address, uint
int GBASIOJOYSendCommand(struct GBASIODriver* sio, enum GBASIOJOYCommand command, uint8_t* data) {
switch (command) {
case JOY_RESET:
sio->p->p->memory.io[REG_JOYCNT >> 1] |= 1;
sio->p->p->memory.io[REG_JOYCNT >> 1] |= JOYCNT_RESET;
if (sio->p->p->memory.io[REG_JOYCNT >> 1] & 0x40) {
GBARaiseIRQ(sio->p->p, IRQ_SIO, 0);
}
@ -44,29 +53,36 @@ int GBASIOJOYSendCommand(struct GBASIODriver* sio, enum GBASIOJOYCommand command
data[0] = 0x00;
data[1] = 0x04;
data[2] = sio->p->p->memory.io[REG_JOYSTAT >> 1];
mLOG(GBA_SIO, DEBUG, "JOY %s: %02X (%02X)", command == JOY_POLL ? "poll" : "reset", data[2], sio->p->p->memory.io[REG_JOYCNT >> 1]);
return 3;
case JOY_RECV:
sio->p->p->memory.io[REG_JOYCNT >> 1] |= 2;
sio->p->p->memory.io[REG_JOYSTAT >> 1] |= 2;
sio->p->p->memory.io[REG_JOYCNT >> 1] |= JOYCNT_RECV;
sio->p->p->memory.io[REG_JOYSTAT >> 1] |= JOYSTAT_RECV;
sio->p->p->memory.io[REG_JOY_RECV_LO >> 1] = data[0] | (data[1] << 8);
sio->p->p->memory.io[REG_JOY_RECV_HI >> 1] = data[2] | (data[3] << 8);
data[0] = sio->p->p->memory.io[REG_JOYSTAT >> 1];
mLOG(GBA_SIO, DEBUG, "JOY recv: %02X (%02X)", data[0], sio->p->p->memory.io[REG_JOYCNT >> 1]);
if (sio->p->p->memory.io[REG_JOYCNT >> 1] & 0x40) {
GBARaiseIRQ(sio->p->p, IRQ_SIO, 0);
}
return 1;
case JOY_TRANS:
sio->p->p->memory.io[REG_JOYCNT >> 1] |= 4;
sio->p->p->memory.io[REG_JOYSTAT >> 1] &= ~8;
data[0] = sio->p->p->memory.io[REG_JOY_TRANS_LO >> 1];
data[1] = sio->p->p->memory.io[REG_JOY_TRANS_LO >> 1] >> 8;
data[2] = sio->p->p->memory.io[REG_JOY_TRANS_HI >> 1];
data[3] = sio->p->p->memory.io[REG_JOY_TRANS_HI >> 1] >> 8;
data[4] = sio->p->p->memory.io[REG_JOYSTAT >> 1];
sio->p->p->memory.io[REG_JOYCNT >> 1] |= JOYCNT_TRANS;
sio->p->p->memory.io[REG_JOYSTAT >> 1] &= ~JOYSTAT_TRANS;
mLOG(GBA_SIO, DEBUG, "JOY trans: %02X%02X%02X%02X:%02X (%02X)", data[0], data[1], data[2], data[3], data[4], sio->p->p->memory.io[REG_JOYCNT >> 1]);
if (sio->p->p->memory.io[REG_JOYCNT >> 1] & 0x40) {
GBARaiseIRQ(sio->p->p, IRQ_SIO, 0);
}

View File

@ -89,7 +89,7 @@ void GUIFontIconMetrics(const struct GUIFont* font, enum GUIIcon icon, unsigned*
}
}
void GUIFontDrawGlyph(const struct GUIFont* font, int glyph_x, int glyph_y, uint32_t color, uint32_t glyph) {
void GUIFontDrawGlyph(struct GUIFont* font, int glyph_x, int glyph_y, uint32_t color, uint32_t glyph) {
int index = fontGlyphIndexFromCodePoint(font->font, glyph);
fontGlyphPos_s data;
fontCalcGlyphPos(&data, font->font, index, 0, 1.0, 1.0);
@ -109,7 +109,7 @@ void GUIFontDrawGlyph(const struct GUIFont* font, int glyph_x, int glyph_y, uint
u, v, tex->width * width, tex->height * height, 0);
}
void GUIFontDrawIcon(const struct GUIFont* font, int x, int y, enum GUIAlignment align, enum GUIOrientation orient, uint32_t color, enum GUIIcon icon) {
void GUIFontDrawIcon(struct GUIFont* font, int x, int y, enum GUIAlignment align, enum GUIOrientation orient, uint32_t color, enum GUIIcon icon) {
ctrActivateTexture(&font->icons);
if (icon >= GUI_ICON_MAX) {
@ -159,7 +159,7 @@ void GUIFontDrawIcon(const struct GUIFont* font, int x, int y, enum GUIAlignment
}
}
void GUIFontDrawIconSize(const struct GUIFont* font, int x, int y, int w, int h, uint32_t color, enum GUIIcon icon) {
void GUIFontDrawIconSize(struct GUIFont* font, int x, int y, int w, int h, uint32_t color, enum GUIIcon icon) {
ctrActivateTexture(&font->icons);
if (icon >= GUI_ICON_MAX) {

View File

@ -301,7 +301,7 @@ static void _setup(struct mGUIRunner* runner) {
_map3DSKey(&runner->core->inputMap, KEY_L, GBA_KEY_L);
_map3DSKey(&runner->core->inputMap, KEY_R, GBA_KEY_R);
outputBuffer = linearMemAlign(256 * 224 * sizeof(color_t), 0x80);
memset(outputBuffer, 0, 256 * 224 * sizeof(color_t));
runner->core->setVideoBuffer(runner->core, outputBuffer, 256);
unsigned mode;
@ -883,6 +883,7 @@ int main() {
_cleanup();
return 1;
}
outputBuffer = linearMemAlign(256 * 224 * sizeof(color_t), 0x80);
struct mGUIRunner runner = {
.params = {

View File

@ -64,6 +64,7 @@ static size_t dataSize;
static void* savedata;
static struct mAVStream stream;
static bool sensorsInitDone;
static bool rumbleInitDone;
static int rumbleUp;
static int rumbleDown;
static struct mRumble rumble;
@ -118,6 +119,19 @@ static void _initSensors(void) {
sensorsInitDone = true;
}
static void _initRumble(void) {
if (rumbleInitDone) {
return;
}
struct retro_rumble_interface rumbleInterface;
if (environCallback(RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE, &rumbleInterface)) {
rumbleCallback = rumbleInterface.set_rumble_state;
}
rumbleInitDone = true;
}
static void _reloadSettings(void) {
struct mCoreOptions opts = {
.useBios = true,
@ -310,13 +324,9 @@ void retro_init(void) {
// TODO: RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME when BIOS booting is supported
struct retro_rumble_interface rumbleInterface;
if (environCallback(RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE, &rumbleInterface)) {
rumbleCallback = rumbleInterface.set_rumble_state;
rumble.setRumble = _setRumble;
} else {
rumbleCallback = 0;
}
rumbleInitDone = false;
rumble.setRumble = _setRumble;
rumbleCallback = 0;
sensorsInitDone = false;
sensorGetCallback = 0;
@ -1002,6 +1012,9 @@ static void _postAudioBuffer(struct mAVStream* stream, blip_t* left, blip_t* rig
static void _setRumble(struct mRumble* rumble, int enable) {
UNUSED(rumble);
if (!rumbleInitDone) {
_initRumble();
}
if (!rumbleCallback) {
return;
}

View File

@ -65,13 +65,13 @@ void GUIFontIconMetrics(const struct GUIFont* font, enum GUIIcon icon, unsigned*
}
}
void GUIFontDrawGlyph(const struct GUIFont* font, int x, int y, uint32_t color, uint32_t glyph) {
void GUIFontDrawGlyph(struct GUIFont* font, int x, int y, uint32_t color, uint32_t glyph) {
char base[5] = { 0 };
toUtf8(glyph, base);
vita2d_pgf_draw_text(font->pgf, x, y, color, FONT_SIZE, base);
}
void GUIFontDrawIcon(const struct GUIFont* font, int x, int y, enum GUIAlignment align, enum GUIOrientation orient, uint32_t color, enum GUIIcon icon) {
void GUIFontDrawIcon(struct GUIFont* font, int x, int y, enum GUIAlignment align, enum GUIOrientation orient, uint32_t color, enum GUIIcon icon) {
if (icon >= GUI_ICON_MAX) {
return;
}
@ -117,7 +117,7 @@ void GUIFontDrawIcon(const struct GUIFont* font, int x, int y, enum GUIAlignment
}
}
void GUIFontDrawIconSize(const struct GUIFont* font, int x, int y, int w, int h, uint32_t color, enum GUIIcon icon) {
void GUIFontDrawIconSize(struct GUIFont* font, int x, int y, int w, int h, uint32_t color, enum GUIIcon icon) {
if (icon >= GUI_ICON_MAX) {
return;
}

View File

@ -130,6 +130,7 @@ set(UI_FILES
BattleChipView.ui
CheatsView.ui
DebuggerConsole.ui
DolphinConnector.ui
FrameView.ui
GIFView.ui
IOViewer.ui
@ -158,6 +159,7 @@ set(GBA_SRC
BattleChipModel.cpp
BattleChipUpdater.cpp
BattleChipView.cpp
DolphinConnector.cpp
GBAOverride.cpp)
set(GB_SRC

View File

@ -42,6 +42,10 @@ CoreController::CoreController(mCore* core, QObject* parent)
m_threadContext.userData = this;
updateROMInfo();
#ifdef M_CORE_GBA
GBASIODolphinCreate(&m_dolphin);
#endif
m_resetActions.append([this]() {
if (m_autoload) {
mCoreLoadState(m_threadContext.core, 0, m_loadStateFlags);
@ -113,6 +117,9 @@ CoreController::CoreController(mCore* core, QObject* parent)
}
controller->clearMultiplayerController();
#ifdef M_CORE_GBA
controller->detachDolphin();
#endif
QMetaObject::invokeMethod(controller, "stopping");
};
@ -361,6 +368,28 @@ mCacheSet* CoreController::graphicCaches() {
return m_cacheSet.get();
}
#ifdef M_CORE_GBA
bool CoreController::attachDolphin(const Address& address) {
if (platform() != mPLATFORM_GBA) {
return false;
}
if (GBASIODolphinConnect(&m_dolphin, &address, 0, 0)) {
GBA* gba = static_cast<GBA*>(m_threadContext.core->board);
GBASIOSetDriver(&gba->sio, &m_dolphin.d, SIO_JOYBUS);
return true;
}
return false;
}
void CoreController::detachDolphin() {
if (platform() == mPLATFORM_GBA) {
GBA* gba = static_cast<GBA*>(m_threadContext.core->board);
GBASIOSetDriver(&gba->sio, nullptr, SIO_JOYBUS);
}
GBASIODolphinDestroy(&m_dolphin);
}
#endif
void CoreController::setOverride(std::unique_ptr<Override> override) {
Interrupter interrupter(this);
m_override = std::move(override);
@ -691,6 +720,7 @@ void CoreController::loadPatch(const QString& patchPath) {
updateROMInfo();
}
if (mCoreThreadHasStarted(&m_threadContext)) {
interrupter.resume();
reset();
}
}

View File

@ -25,6 +25,9 @@
#ifdef M_CORE_GB
#include <mgba/internal/gb/sio/printer.h>
#endif
#ifdef M_CORE_GBA
#include <mgba/internal/gba/sio/dolphin.h>
#endif
#ifdef M_CORE_GBA
#include <mgba/gba/interface.h>
@ -106,6 +109,10 @@ public:
void clearMultiplayerController();
MultiplayerController* multiplayerController() { return m_multiplayer; }
#ifdef M_CORE_GBA
bool isDolphinConnected() const { return !SOCKET_FAILED(m_dolphin.data); }
#endif
mCacheSet* graphicCaches();
int stateSlot() const { return m_stateSlot; }
@ -171,6 +178,9 @@ public slots:
void detachBattleChipGate();
void setBattleChipId(uint16_t id);
void setBattleChipFlavor(int flavor);
bool attachDolphin(const Address& address);
void detachDolphin();
#endif
void setAVStream(mAVStream*);
@ -265,6 +275,9 @@ private:
InputController* m_inputController = nullptr;
LogController* m_log = nullptr;
MultiplayerController* m_multiplayer = nullptr;
#ifdef M_CORE_GBA
GBASIODolphin m_dolphin;
#endif
mVideoLogContext* m_vl = nullptr;
VFile* m_vlVf = nullptr;

View File

@ -7,8 +7,6 @@
#if defined(BUILD_GL) || defined(BUILD_GLES2)
#include "CoreController.h"
#include <QApplication>
#include <QMutexLocker>
#include <QOffscreenSurface>
@ -106,6 +104,7 @@ void DisplayGL::startDrawing(std::shared_ptr<CoreController> controller) {
#else
messagePainter()->resize(size(), isAspectRatioLocked(), devicePixelRatio());
#endif
CoreController::Interrupter interrupter(controller);
QMetaObject::invokeMethod(m_painter.get(), "start");
setUpdatesEnabled(false);
}
@ -226,12 +225,13 @@ void DisplayGL::clearShaders() {
}
void DisplayGL::resizeContext() {
m_painter->interrupt();
QMetaObject::invokeMethod(m_painter.get(), "resizeContext");
}
void DisplayGL::setVideoScale(int scale) {
if (m_context) {
CoreController::Interrupter interrupter(m_context);
m_painter->interrupt();
mCoreConfigSetIntValue(&m_context->thread()->core->config, "videoScale", scale);
}
QMetaObject::invokeMethod(m_painter.get(), "resizeContext");
@ -365,10 +365,10 @@ void PainterGL::resizeContext() {
}
if (m_started) {
CoreController::Interrupter interrupter(m_context);
mCore* core = m_context->thread()->core;
core->reloadConfigOption(core, "videoScale", NULL);
}
m_interrupter.resume();
QSize size = m_context->screenDimensions();
m_backend->setDimensions(m_backend, size.width(), size.height());
@ -577,6 +577,10 @@ void PainterGL::setVideoProxy(std::shared_ptr<VideoProxy> proxy) {
m_videoProxy = proxy;
}
void PainterGL::interrupt() {
m_interrupter.interrupt(m_context);
}
void PainterGL::setShaders(struct VDir* dir) {
if (!supportsShaders()) {
return;

View File

@ -29,6 +29,7 @@
#include <array>
#include "CoreController.h"
#include "VideoProxy.h"
#include "platform/video-backend.h"
@ -102,6 +103,7 @@ public:
bool supportsShaders() const { return m_supportsShaders; }
void setVideoProxy(std::shared_ptr<VideoProxy>);
void interrupt();
public slots:
void create();
@ -149,7 +151,8 @@ private:
std::unique_ptr<QOpenGLContext> m_gl;
bool m_active = false;
bool m_started = false;
std::shared_ptr<CoreController> m_context = nullptr;
std::shared_ptr<CoreController> m_context;
CoreController::Interrupter m_interrupter;
bool m_supportsShaders;
bool m_showOSD;
VideoShader m_shader{};

View File

@ -0,0 +1,83 @@
/* Copyright (c) 2013-2021 Jeffrey Pfau
*
* This Source Code Form is subject to the terms of the Mozilla Public
* 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 "DolphinConnector.h"
#include <QMessageBox>
#include "CoreController.h"
#include "Window.h"
#include "utils.h"
using namespace QGBA;
DolphinConnector::DolphinConnector(Window* window, QWidget* parent)
: QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint)
, m_window(window)
{
m_ui.setupUi(this);
connect(window, &QObject::destroyed, this, &QWidget::close);
connect(m_ui.connect, &QAbstractButton::clicked, this, &DolphinConnector::attach);
connect(m_ui.disconnect, &QAbstractButton::clicked, this, &DolphinConnector::detach);
updateAttached();
}
void DolphinConnector::attach() {
QHostAddress qaddress;
Address address;
if (m_ui.specLocal->isChecked()) {
qaddress.setAddress("127.0.0.1");
} else if (m_ui.specIPAddr->isChecked()) {
if (!qaddress.setAddress(m_ui.ipAddr->text())) {
return;
}
}
bool reset = m_ui.doReset->isChecked();
if (!m_window->controller()) {
m_window->bootBIOS();
reset = false;
if (!m_window->controller() || m_window->controller()->platform() != mPLATFORM_GBA) {
return;
}
}
convertAddress(&qaddress, &address);
m_controller = m_window->controller();
CoreController::Interrupter interrupter(m_controller);
m_controller->attachDolphin(address);
connect(m_controller.get(), &CoreController::stopping, this, &DolphinConnector::detach);
interrupter.resume();
if (!m_controller->isDolphinConnected()) {
QMessageBox* fail = new QMessageBox(QMessageBox::Warning, tr("Couldn't Connect"),
tr("Could not connect to Dolphin."),
QMessageBox::Ok);
fail->setAttribute(Qt::WA_DeleteOnClose);
fail->show();
} else if (reset) {
m_controller->reset();
}
updateAttached();
}
void DolphinConnector::detach() {
if (m_controller) {
m_controller->detachDolphin();
m_controller.reset();
}
updateAttached();
}
void DolphinConnector::updateAttached() {
bool attached = m_window->controller() && m_window->controller()->isDolphinConnected();
m_ui.connect->setDisabled(attached);
m_ui.disconnect->setEnabled(attached);
m_ui.specLocal->setDisabled(attached);
m_ui.specIPAddr->setDisabled(attached);
}

View File

@ -0,0 +1,37 @@
/* Copyright (c) 2013-2021 Jeffrey Pfau
*
* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
#pragma once
#include "ui_DolphinConnector.h"
#include <memory>
namespace QGBA {
class CoreController;
class Window;
class DolphinConnector : public QDialog {
Q_OBJECT
public:
DolphinConnector(Window* window, QWidget* parent = nullptr);
public slots:
void attach();
void detach();
private slots:
void updateAttached();
private:
Ui::DolphinConnector m_ui;
std::shared_ptr<CoreController> m_controller;
Window* m_window;
};
}

View File

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DolphinConnector</class>
<widget class="QDialog" name="DolphinConnector">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>306</width>
<height>123</height>
</rect>
</property>
<property name="windowTitle">
<string>Connect to Dolphin</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<item row="0" column="0">
<widget class="QRadioButton" name="specLocal">
<property name="text">
<string>Local computer</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="specIPAddr">
<property name="text">
<string>IP address</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="ipAddr">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="connect">
<property name="text">
<string>Connect</string>
</property>
<property name="icon">
<iconset theme="network-connect"/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="disconnect">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Disconnect</string>
</property>
<property name="icon">
<iconset theme="network-disconnect"/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="close">
<property name="text">
<string>Close</string>
</property>
<property name="icon">
<iconset theme="window-close"/>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="doReset">
<property name="text">
<string>Reset on connect</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>close</sender>
<signal>clicked()</signal>
<receiver>DolphinConnector</receiver>
<slot>close()</slot>
<hints>
<hint type="sourcelabel">
<x>256</x>
<y>119</y>
</hint>
<hint type="destinationlabel">
<x>152</x>
<y>72</y>
</hint>
</hints>
</connection>
<connection>
<sender>specIPAddr</sender>
<signal>toggled(bool)</signal>
<receiver>ipAddr</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>152</x>
<y>43</y>
</hint>
<hint type="destinationlabel">
<x>152</x>
<y>49</y>
</hint>
</hints>
</connection>
</connections>
<buttongroups>
<buttongroup name="buttonGroup"/>
</buttongroups>
</ui>

View File

@ -134,9 +134,10 @@ void OverrideView::updateOverrides() {
if (!m_controller) {
return;
}
bool hasOverride = false;
#ifdef M_CORE_GBA
if (m_ui.tabWidget->currentWidget() == m_ui.tabGBA) {
std::unique_ptr<GBAOverride> gba(new GBAOverride);
auto gba = std::make_unique<GBAOverride>();
memset(gba->override.id, 0, 4);
gba->override.savetype = static_cast<SavedataType>(m_ui.savetype->currentIndex() - 1);
gba->override.hardware = HW_NO_OVERRIDE;
@ -145,6 +146,7 @@ void OverrideView::updateOverrides() {
gba->override.vbaBugCompat = false;
if (!m_ui.hwAutodetect->isChecked()) {
hasOverride = true;
gba->override.hardware = HW_NONE;
if (m_ui.hwRTC->isChecked()) {
gba->override.hardware |= HW_RTC;
@ -163,20 +165,22 @@ void OverrideView::updateOverrides() {
}
}
if (m_ui.hwGBPlayer->isChecked()) {
hasOverride = true;
gba->override.hardware |= HW_GB_PLAYER_DETECTION;
}
if (m_ui.vbaBugCompat->isChecked()) {
hasOverride = true;
gba->override.vbaBugCompat = true;
}
bool ok;
uint32_t parsedIdleLoop = m_ui.idleLoop->text().toInt(&ok, 16);
if (ok) {
hasOverride = true;
gba->override.idleLoop = parsedIdleLoop;
}
if (gba->override.savetype != SAVEDATA_AUTODETECT || gba->override.hardware != HW_NO_OVERRIDE ||
gba->override.idleLoop != IDLE_LOOP_NONE) {
if (hasOverride) {
m_controller->setOverride(std::move(gba));
} else {
m_controller->clearOverride();
@ -185,16 +189,14 @@ void OverrideView::updateOverrides() {
#endif
#ifdef M_CORE_GB
if (m_ui.tabWidget->currentWidget() == m_ui.tabGB) {
std::unique_ptr<GBOverride> gb(new GBOverride);
auto gb = std::make_unique<GBOverride>();
gb->override.mbc = static_cast<GBMemoryBankControllerType>(m_ui.mbc->currentData().toInt());
gb->override.model = static_cast<GBModel>(m_ui.gbModel->currentData().toInt());
bool hasColor = false;
hasOverride = gb->override.mbc != GB_MBC_AUTODETECT || gb->override.model != GB_MODEL_AUTODETECT;
for (int i = 0; i < 12; ++i) {
gb->override.gbColors[i] = m_gbColors[i];
hasColor = hasColor || (m_gbColors[i] & 0xFF000000);
hasOverride = hasOverride || (m_gbColors[i] & 0xFF000000);
}
bool hasOverride = gb->override.mbc != GB_MBC_AUTODETECT || gb->override.model != GB_MODEL_AUTODETECT;
hasOverride = hasOverride || hasColor;
if (hasOverride) {
m_controller->setOverride(std::move(gb));
} else {
@ -268,6 +270,7 @@ void OverrideView::gameStopped() {
m_ui.tabWidget->setEnabled(true);
m_ui.savetype->setCurrentIndex(0);
m_ui.idleLoop->clear();
m_ui.vbaBugCompat->setChecked(false);
m_ui.mbc->setCurrentIndex(0);
m_ui.gbModel->setCurrentIndex(0);

View File

@ -245,6 +245,11 @@ void ReportView::generateReport() {
{
CoreController::Interrupter interrupter(controller);
QFileInfo rom(window->windowFilePath());
if (rom.exists()) {
windowReport << QString("Filename: %1").arg(redact(rom.filePath()));
windowReport << QString("Size: %1").arg(rom.size());
}
addROMInfo(windowReport, controller.get());
if (m_ui.includeSave->isChecked() && !m_ui.includeState->isChecked()) {

View File

@ -6,14 +6,14 @@
<rect>
<x>0</x>
<y>0</y>
<width>855</width>
<height>474</height>
<width>914</width>
<height>533</height>
</rect>
</property>
<property name="windowTitle">
<string>Generate Bug Report</string>
</property>
<layout class="QGridLayout" name="gridLayout" columnstretch="3,2,7,0">
<layout class="QGridLayout" name="gridLayout" columnstretch="3,2,7">
<item row="1" column="1" rowspan="3">
<widget class="QListWidget" name="fileList">
<property name="enabled">

View File

@ -29,6 +29,7 @@
#include "DebuggerConsole.h"
#include "DebuggerConsoleController.h"
#include "Display.h"
#include "DolphinConnector.h"
#include "CoreController.h"
#include "FrameView.h"
#include "GBAApp.h"
@ -376,6 +377,10 @@ void Window::selectROM() {
}
}
void Window::bootBIOS() {
setController(m_manager->loadBIOS(mPLATFORM_GBA, m_config->getOption("gba.bios")), QString());
}
#ifdef USE_SQLITE3
void Window::selectROMInArchive() {
QString filename = GBAApp::app()->getOpenFileName(this, tr("Select ROM"), getFiltersArchive());
@ -543,6 +548,18 @@ std::function<void()> Window::openControllerTView(A... arg) {
};
}
template <typename T, typename... A>
std::function<void()> Window::openNamedTView(std::unique_ptr<T>* name, A... arg) {
return [=]() {
if (!*name) {
*name = std::make_unique<T>(arg...);
connect(this, &Window::shutdown, name->get(), &QWidget::close);
}
(*name)->show();
(*name)->setFocus(Qt::PopupFocusReason);
};
}
template <typename T, typename... A>
std::function<void()> Window::openNamedControllerTView(std::unique_ptr<T>* name, A... arg) {
return [=]() {
@ -1163,9 +1180,7 @@ void Window::setupMenu(QMenuBar* menubar) {
m_actions.addAction(tr("Load &patch..."), "loadPatch", this, &Window::selectPatch, "file");
#ifdef M_CORE_GBA
m_actions.addAction(tr("Boot BIOS"), "bootBIOS", [this]() {
setController(m_manager->loadBIOS(mPLATFORM_GBA, m_config->getOption("gba.bios")), QString());
}, "file");
m_actions.addAction(tr("Boot BIOS"), "bootBIOS", this, &Window::bootBIOS, "file");
#endif
addGameAction(tr("Replace ROM..."), "replaceROM", this, &Window::replaceROM, "file");
@ -1278,11 +1293,19 @@ void Window::setupMenu(QMenuBar* menubar) {
GBAApp::app()->newWindow();
}, "file");
#ifdef M_CORE_GBA
Action* dolphin = m_actions.addAction(tr("Connect to Dolphin..."), "connectDolphin", openNamedTView<DolphinConnector>(&m_dolphinView, this), "file");
m_platformActions.insert(mPLATFORM_GBA, dolphin);
#endif
m_actions.addSeparator("file");
m_actions.addAction(tr("Report bug..."), "bugReport", openTView<ReportView>(), "file");
#ifndef Q_OS_MAC
m_actions.addSeparator("file");
#endif
m_actions.addAction(tr("Report bug..."), "bugReport", openTView<ReportView>(), "file");
m_actions.addAction(tr("About..."), "about", openTView<AboutScreen>(), "file");
#ifndef Q_OS_MAC

View File

@ -34,6 +34,7 @@ class CoreController;
class CoreManager;
class DebuggerConsoleController;
class Display;
class DolphinConnector;
class FrameView;
class GDBController;
class GIFView;
@ -72,6 +73,7 @@ signals:
public slots:
void setController(CoreController* controller, const QString& fname);
void selectROM();
void bootBIOS();
#ifdef USE_SQLITE3
void selectROMInArchive();
void addDirToLibrary();
@ -163,6 +165,7 @@ private:
template <typename T, typename... A> std::function<void()> openTView(A... arg);
template <typename T, typename... A> std::function<void()> openControllerTView(A... arg);
template <typename T, typename... A> std::function<void()> openNamedTView(std::unique_ptr<T>*, A... arg);
template <typename T, typename... A> std::function<void()> openNamedControllerTView(std::unique_ptr<T>*, A... arg);
Action* addGameAction(const QString& visibleName, const QString& name, Action::Function action, const QString& menu = {}, const QKeySequence& = {});
@ -222,6 +225,7 @@ private:
std::unique_ptr<OverrideView> m_overrideView;
std::unique_ptr<SensorView> m_sensorView;
std::unique_ptr<DolphinConnector> m_dolphinView;
FrameView* m_frameView = nullptr;
#ifdef USE_FFMPEG

View File

@ -231,6 +231,44 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
<translation>Unterbrechen</translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation>Mit Dolphin verbinden</translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation>Lokaler Computer</translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation>IP-Adresse</translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation>Verbinden</translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation>Verbindung trennen</translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation>Bei Verbindung zurücksetzen</translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1219,27 +1257,27 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation>Fehler beim Öffnen der Speicherdatei: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation>Fehler beim Öffnen der Spieldatei: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation>Das GamePak kann nur auf unterstützten Plattformen herausgezogen werden!</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<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="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation>Konnte Snapshot-Datei %1 nicht zum Schreiben öffnen</translation>
</message>
@ -2812,7 +2850,7 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
<location filename="../IOViewer.cpp" line="956"/>
<location filename="../IOViewer.cpp" line="973"/>
<source>Keypad</source>
<translation>Kepad</translation>
<translation>Keypad</translation>
</message>
<message>
<location filename="../IOViewer.cpp" line="957"/>
@ -3999,7 +4037,7 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation>Game Boy Advance-ROMs (%1)</translation>
</message>
@ -4009,61 +4047,61 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
<translation>DS-ROMs (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation>Game Boy-ROMs (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation>Alle ROMs (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation>%1 Video-Logs (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation>Archive (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation>ROM auswählen</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation>Speicherdatei wählen</translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation>Patch wählen</translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation>Patches (*.ips *.ups *.bps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation>Bild auswählen</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<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="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation>GameShark-Speicherdaten (*.sps *.xps)</translation>
</message>
@ -4078,22 +4116,22 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
<translation>DS-Unterstützung erfordert ein Abbild des BIOS und der Firmware.</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation>Video-Log auswählen</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation>Video-Logs (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation>Absturz</translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
@ -4102,413 +4140,418 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation>Nicht implementierter BIOS-Aufruf</translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<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="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation>Es konnte kein geeignetes Ausgabegerät erstellt werden, stattdessen wird Software-Rendering als Rückfalloption genutzt. Spiele laufen möglicherweise langsamer, besonders innerhalb großer Fenster.</translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation>Portablen Modus wirklich aktivieren?</translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<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="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation>Neustart benötigt</translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<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="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation> - Spieler %1 von %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation>%1 - %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation>%1 - %2 - %3</translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation>%1 - %2 (%3 Bilder/Sekunde) - %4</translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation>&amp;Datei</translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation>&amp;ROM laden...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation>ROM aus Archiv laden...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation>&amp;Patch laden...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation>BIOS booten</translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation>ROM ersetzen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation>ROM-&amp;Informationen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation>Zuletzt verwendet</translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation>Portablen Modus aktivieren</translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation>Savestate (aktueller Zustand) &amp;laden</translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation>Savestate-Datei laden...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation>Savestate (aktueller Zustand) &amp;speichern</translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation>Savestate-Datei speichern...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation>Schnell laden</translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation>Schnell speichern</translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation>Lade zuletzt gespeicherten Savestate</translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation>Speichere aktuellen Zustand</translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation>Laden des Savestate rückgängig machen</translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation>Speichern des Savestate rückgängig machen</translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation>Savestate &amp;%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation>Lade Kamerabild...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation>Spielstand konvertieren...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation>Neues Multiplayer-Fenster</translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation>Mit Dolphin verbinden...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation>Fehler melden...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation>&amp;Beenden</translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation>&amp;Emulation</translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation>Zu&amp;rücksetzen</translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation>Schli&amp;eßen</translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation>Spielmodul herausziehen</translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation>&amp;Pause</translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation>&amp;Nächstes Bild</translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation>Schneller Vorlauf (gehalten)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation>Schneller &amp;Vorlauf</translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation>Vorlauf-Geschwindigkeit</translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation>Unbegrenzt</translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation>%0x</translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation>Zurückspulen (gehalten)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation>Zur&amp;ückspulen</translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation>Schrittweiser Rücklauf</translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation>Mit &amp;Video synchronisieren</translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation>Mit &amp;Audio synchronisieren</translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation>Sonnen-Sensor</translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation>Sonnen-Level erhöhen</translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation>Sonnen-Level verringern</translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation>Hellster Sonnen-Level</translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation>Dunkelster Sonnen-Level</translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation>Helligkeit %1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation>BattleChip Gate...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation>Audio/&amp;Video</translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation>Bildgröße</translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation>Vollbildmodus umschalten</translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation>Seitenverhältnis korrigieren</translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation>Pixelgenaue Skalierung (Integer scaling)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation>Interframe-Überblendung</translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation>Frame&amp;skip</translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation>Stummschalten</translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation>Bildwiederholrate</translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation>&amp;Screenshot erstellen</translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation>F12</translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation>Leeren</translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation>Game Boy Printer...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation>Video-Ebenen</translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation>Audio-Kanäle</translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation>Lage der Bildebenen anpassen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation>&amp;Werkzeuge</translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation>&amp;Logs ansehen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation>Spiel-&amp;Überschreibungen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation>&amp;Cheats...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation>Debugger-Konsole öffnen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation>&amp;GDB-Server starten...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation>Einstellungen...</translation>
</message>
@ -4528,228 +4571,228 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
<translation>DS</translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation>Ordner auswählen</translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation>Spielstände (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation>Spielstand auswählen</translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation>mGBA-Savestates (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation>Savestate auswählen</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation>e-Reader-Code auswählen</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation>e-Reader-Karte (*.raw *.bin *.bmp)</translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation>Konnte nicht gestartet werden</translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation>Spiel konnte nicht gestartet werden.</translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation>Ordner zur Bibliothek hinzufügen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation>Alternativen Spielstand laden...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation>Temporären Spielstand laden...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation>e-Reader-Code einlesen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation>GameShare-Speicherstand importieren...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation>GameShark-Speicherstand exportieren...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation>Über...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation>%1x</translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation>Bilineare Filterung</translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation>Nativ (59.7275)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation>Audio/Video aufzeichnen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation>GIF/WebP/APNG aufzeichnen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation>Spielmodul-Sensoren...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation>&amp;Palette betrachten...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation>&amp;Sprites betrachten...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation>&amp;Tiles betrachten...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation>&amp;Map betrachten...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation>&amp;Bildbetrachter...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation>Speicher betrachten...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation>Speicher durchsuchen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation>&amp;I/O-Register betrachten...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation>Video-Protokoll aufzeichnen...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation>Aufzeichnen des Video-Protokolls beenden</translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation>Vollbildmodus beenden</translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation>GameShark-Taste (gehalten)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation>Autofeuer</translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation>Autofeuer A</translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation>Autofeuer B</translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation>Autofeuer L</translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation>Autofeuer R</translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation>Autofeuer Start</translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation>Autofeuer Select</translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation>Autofeuer nach oben</translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation>Autofeuer rechts</translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation>Autofeuer nach unten</translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation>Autofeuer links</translation>
</message>

File diff suppressed because it is too large Load Diff

View File

@ -216,6 +216,44 @@ Game Boy Advance è un marchio registrato di Nintendo Co., Ltd.</translation>
<translation>Interruzione</translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1204,27 +1242,27 @@ Game Boy Advance è un marchio registrato di Nintendo Co., Ltd.</translation>
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation>Impossibile aprire il file di salvataggio: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation>Impossibile aprire il file di gioco: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation>Non riesco a strappare il pacchetto in una piattaforma inaspettata!</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation>Impossibile aprire il file snapshot per la lettura: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation>Impossibile aprire il file snapshot per la scrittura: %1</translation>
</message>
@ -3953,96 +3991,96 @@ Game Boy Advance è un marchio registrato di Nintendo Co., Ltd.</translation>
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation>ROM per Game Boy Advance (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation>ROM per Game Boy (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation>Tutte le ROM (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation>%1 log Video (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation>Archivi (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation>Seleziona ROM</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation>Seleziona salvataggio</translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation>Seleziona patch</translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation>Patches (*.ips *.ups *.bps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation>Selezione e-Reader dotcode</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation>e-Reader card (*.raw *.bin *.bmp)</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation>Seleziona immagine</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation>File immagine (*.png *.gif *.jpg *.jpeg);;Tutti i file (*)</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation>Salvataggi GameShark (*.sps *.xps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation>Seleziona log video</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation>Log video (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation>Errore fatale</translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
@ -4051,629 +4089,634 @@ Game Boy Advance è un marchio registrato di Nintendo Co., Ltd.</translation>
%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation>BIOS non implementato</translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation>Questo gioco utilizza una chiamata BIOS non implementata. Utilizza il BIOS ufficiale per una migliore esperienza.</translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation>Impossibile creare un dispositivo di visualizzazione appropriato, tornando alla visualizzazione software. I giochi possono funzionare lentamente, specialmente con finestre più grandi.</translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation>Vuoi davvero rendere portatile l&apos;applicazione?</translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<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 cartella dell&apos;eseguibile. Vuoi continuare?</translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation>È necessario riavviare</translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation>Alcune modifiche non avranno effetto finché l&apos;emulatore non verrà riavviato.</translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation> - Giocatore %1 di %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation>%1 - %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation>%1 - %2 - %3</translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation>%1 - %2 (%3 fps) - %4</translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation>File</translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation>Carica ROM...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation>Carica la ROM in archivio...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation>Carica patch...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation>Avvia BIOS</translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation>Sostituisci la ROM...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation>Scansiona e-Reader dotcode...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation>Informazioni ROM...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation>Recente</translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation>Rendi portatile</translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation>Carica stato</translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation>Salva stato</translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation>Caricamento rapido</translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation>Salvataggio rapido</translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation>Carica recente</translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation>Salva recente</translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation>Annulla il caricamento dello stato</translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation>Annulla salvataggio stato</translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation>Stato %1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation>Carica immagine camera...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation>Nuova finestra multigiocatore</translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation>Segnala bug...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation>Esci (&amp;X)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation>Emulazione</translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation>Reset</translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation>Spegni (&amp;U)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation>Yank game pak</translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation>Pausa</translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation>Salta il prossimo frame (&amp;N)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation>Avanzamento rapido (tieni premuto)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation>Avanzamento rapido (&amp;F)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation>Velocità di avanzamento rapido</translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation>Illimitata</translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation>%0x</translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation>Riavvolgimento (tieni premuto)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation>Riavvolgimento (&amp;W)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation>Torna indietro</translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation>Sincronizza con il video</translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation>Sincronizza con l&apos;audio</translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation>Sensore solare</translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation>Aumenta il livello solare</translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation>Riduce il livello solare</translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation>Livello solare brillante</translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation>Livello solare più scuro</translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation>Luminosità %1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation>Audio/Video</translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation>Dimensioni Frame</translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation>Abilita Schermo Intero</translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation>Blocca rapporti aspetto</translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation>Salto frame</translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation>Muto</translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation>FPS finali</translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation>Acquisisci screenshot</translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation>F12</translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation>Registra GIF / WebP / APNG ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation>Layers video</translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation>Canali audio</translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation>Strumenti</translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation>Visualizza (&amp;Logs) &amp;registri...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation>Valore specifico per il gioco...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation>Trucchi...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation>Apri debugger console...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation>Avvia server GDB...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation>Impostazioni...</translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation>Seleziona cartella</translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation>Non è stato possibile avviare</translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation>Non è stato possibile avviare il gioco.</translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation>Aggiungi cartella alla libreria...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation>Carica stato di salvataggio...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation>Salva stato di salvataggio...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation>Importa Salvataggio GameShark...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation>Esporta Salvataggio GameShark...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation>Informazioni</translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation>Forza l&apos;integer scaling</translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation>Filtro bilineare</translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation>Stampante Game Boy...</translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation>BattleChip Gate...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation>%1x</translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation>Interframe blending</translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation>Nativo (59.7)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation>Registra A/V...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation>Regola posizionamento layer...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation>Sensori Game Pak...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation>Mostra palette...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation>Mostra sprites...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation>Mostra tiles...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation>Mostra mappa...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation>&amp;Frame inspector...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation>Mostra memoria...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation>Ricerca memoria...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation>Mostra registri I/O...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation>Registra debug video log...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation>Ferma debug video log</translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation>Esci da Schermo Intero</translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation>Pulsante GameShark (tieni premuto)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation>Pulsanti Autofire</translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation>Autofire A</translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation>Autofire B</translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation>Autofire L</translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation>Autofire R</translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation>Autofire Start</translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation>Autofire Select</translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation>Autofire Su</translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation>AAutofire Destra</translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation>Autofire Giù</translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation>Autofire Sinistra</translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation>Pulisci</translation>
</message>

View File

@ -215,6 +215,44 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1203,27 +1241,27 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation type="unfinished"></translation>
</message>
@ -3952,725 +3990,730 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation type="unfinished"></translation>
</message>

View File

@ -217,6 +217,44 @@ Game Boy Advance est une marque de fabrique enregistré par Nintendo Co., Ltd.</
<translation>Arrêter</translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1205,27 +1243,27 @@ Game Boy Advance est une marque de fabrique enregistré par Nintendo Co., Ltd.</
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation>Échec de l&apos;ouverture du fichier de sauvegarde : %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation>Échec de l&apos;ouverture du fichier de jeu : %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation>Échec de l&apos;ouverture de l&apos;instantané pour lire : %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation>Échec de l&apos;ouverture de l&apos;instantané pour écrire : %1</translation>
</message>
@ -3972,101 +4010,101 @@ Game Boy Advance est une marque de fabrique enregistré par Nintendo Co., Ltd.</
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation>ROMs de Game Boy Advance (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation>ROMs de Game Boy (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation>Toutes les ROM (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation>%1 Journaux vidéo (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation>Archives (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation>Choisir une ROM</translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation>Choisir un dossier</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation>Choisir une sauvegarde</translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation>Sélectionner un correctif</translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation>Correctifs/Patches (*.ips *.ups *.bps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation>Sélectionnez le numéro de point du e-Reader</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation>e-Reader carte (*.raw *.bin *.bmp)</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation>Choisir une image</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation>Image (*.png *.gif *.jpg *.jpeg);;Tous les fichiers (*)</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation>Sauvegardes GameShark (*.sps *.xps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation>Sélectionner un journal vidéo</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation>Journaux vidéo (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation>Plantage</translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
@ -4075,624 +4113,629 @@ Game Boy Advance est une marque de fabrique enregistré par Nintendo Co., Ltd.</
%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation>Requête au BIOS non supporté</translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation>Ce jeu utilise un appel BIOS qui n&apos;est pas implémenté. Veuillez utiliser le BIOS officiel pour une meilleure expérience.</translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation>Échec de la création d&apos;un périphérique d&apos;affichage approprié, retour à l&apos;affichage du logiciel. Les jeux peuvent fonctionner lentement, en particulier avec des fenêtres plus grandes.</translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation>Vraiment rendre portable ?</translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source>
<translation>Cela amènera l&apos;émulateur à charger sa configuration depuis le même répertoire que l&apos;exécutable. Souhaitez vous continuer ?</translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation>Un redémarrage est nécessaire</translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation>Certains changements ne prendront effet qu&apos;après le redémarrage de l&apos;émulateur.</translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation> - Joueur %1 of %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation>%1 - %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation>%1 - %2 - %3</translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation>%1 - %2 (%3 fps) - %4</translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation>&amp;Fichier</translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation>Charger une &amp;ROM</translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation>Charger la ROM d&apos;une archive</translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation>Ajouter un dossier à la bibliothèque</translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation>Charger un c&amp;orrectif</translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation>Démarrer le BIOS</translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation>Remplacer la ROM</translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation>&amp;Infos sur la ROM</translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation>Récent</translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation>Rendre portable</translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation>&amp;Charger un état</translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation>&amp;Sauvegarder un état</translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation>Chargement rapide</translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation>Sauvegarde rapide</translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation>Charger un fichier récent</translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation>Sauvegarder un fichier récent</translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation>Annuler le chargement de l&apos;état</translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation>Annuler la sauvegarde de l&apos;état</translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation>État &amp;%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation>Charger une image de la caméra</translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation>Nouvelle fenêtre multijoueur</translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation>Signalement de l&apos;erreur</translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation>&amp;Quitter</translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation>&amp;Émulation</translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation>&amp;Réinitialiser</translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation>Extin&amp;ction</translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation>Yank game pak</translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation>&amp;Pause</translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation>&amp;Image suivante</translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation>Avance rapide (maintenir)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation>A&amp;vance rapide</translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation>Vitesse de l&apos;avance rapide</translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation>Sans limites</translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation>%0x</translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation>Rembobiner (maintenir)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation>Rem&amp;bobiner</translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation>Retour en arrière</translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation>Synchro &amp;vidéo</translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation>Synchro &amp;audio</translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation>Capteur solaire</translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation>Augmenter le niveau solaire</translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation>Diminuer le niveau solaire</translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation>Tester le niveau solaire</translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation>Assombrir le niveau solaire</translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation>Luminosité %1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation>Audio/&amp;Vidéo</translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation>Taille de l&apos;image</translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation>Basculer en plein écran</translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation>Bloquer les proportions</translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation>Forcer la mise à l&apos;échelle par des nombres entiers</translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation>Filtrage bilinèaire</translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation>&amp;Saut d&apos;image</translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation>Muet</translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation>FPS ciblé</translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation>Prendre une ca&amp;pture d&apos;écran</translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation>F12</translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation>Imprimante GameBoy</translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation>Couches vidéo</translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation>Canaux audio</translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation>Ajuster la disposition</translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation>Ou&amp;tils</translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation>Voir les &amp;journaux</translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation>N&apos;a pas pu démarrer</translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation>Impossible de démarrer le jeu.</translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation>Scanner les dotcodes e-Reader...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation>Charger le fichier d&apos;état...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation>Enregistrer le fichier d&apos;état...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation>Importer la sauvegarde de GameShark...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation>Exporter la sauvegarde de GameShark...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation>À propos de</translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation>%1×</translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation>Mélange d&apos;images</translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation>Natif (59.7275)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation>Enregistrer A/V...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation>Enregistrer GIF/WebP/APNG...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation>Capteurs de la Game Pak...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation>&amp;Cheats</translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation>Ouvrir la console de débug</translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation>Démarrer le serveur &amp;GDB</translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation>Voir la &amp;palette</translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation>Voir les &amp;sprites</translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation>Voir les &amp;tiles</translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation>Voir la &amp;map</translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation>Inspecteur de &amp;frame...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation>Voir la mémoire</translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation>Recherche dans la mémoire</translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation>Voir les registres d&apos;&amp;E/S...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation>Enregistrer le journal vidéo de débogage...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation>Arrêter le journal vidéo de débogage</translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation>Quitter le plein écran</translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation>Bouton GameShark (maintenir)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation>Tir automatique</translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation>Tir automatique A</translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation>Tir automatique B</translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation>Tir automatique L</translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation>Tir automatique R</translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation>Tir automatique Start</translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation>Tir automatique Select</translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation>Tir automatique Up</translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation>Tir automatique Right</translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation>Tir automatique Down</translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation>Tir automatique Gauche</translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation>Vider</translation>
</message>

View File

@ -216,6 +216,44 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<translation>Break</translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1204,27 +1242,27 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation>: %1</translation>
</message>
@ -3953,101 +3991,101 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation>%1 (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation>ROMを開く</translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation> (*.ips *.ups *.bps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation>eを開く</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation>e (*.raw *.bin *.bmp)</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation> (*.png *.gif *.jpg *.jpeg);; (*)</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation>GameSharkセーブファイル (*.sps *.xps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation> (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
@ -4056,624 +4094,629 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation>BIOS呼び出し</translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation>BIOS呼び出しを使用しますBIOSを使用してください</translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation> - %1 of %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation>%1 - %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation>%1 - %2 - %3</translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation>%1 - %2 (%3 fps) - %4</translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation>&amp; (&amp;F)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation>ROMをロード...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation>ROMをロード...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation>... (&amp;P)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation>BIOSを起動</translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation>ROMを交換...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation>eをスキャン...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation>ROM情報... (&amp;I)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation>ROM</translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation> (&amp;L)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation>GIF/WebP/APNGを記録</translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation> (&amp;S)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation>使</translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation>使</translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation> &amp;%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation>GameSharkスナップショットを読み込む</translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation>GameSharkスナップショットを書き出す</translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation>()</translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation> (&amp;X)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation> (&amp;E)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation> (&amp;R)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation> (&amp;U)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation> (&amp;P)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation> (&amp;N)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation>()</translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation> (&amp;F)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation>%0x</translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation>()</translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation> (&amp;R)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation>退</translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation> (&amp;V)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation> (&amp;A)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation>/ (&amp;V)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation> (&amp;S)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation>FPS</translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation>(59.7275)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation> (&amp;S)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation>F12</translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation>%1×</translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation>調...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation> (&amp;T)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation>... (&amp;L)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation>... (&amp;O)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation>... (&amp;C)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation>GDBサーバを起動... (&amp;G)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation>... (&amp;P)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation>... (&amp;S)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation>... (&amp;T)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation>... (&amp;M)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation>... (&amp;F)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation>IOビューアー... (&amp;I)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation>GameSharkボタン()</translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation> A</translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation> B</translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation> L</translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation> R</translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation> Start</translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation> Select</translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation> </translation>
</message>

View File

@ -216,6 +216,44 @@ Game Boy Advance는 Nintendo Co., Ltd.의 등록 상표입니다.</translation>
<translation></translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1204,27 +1242,27 @@ Game Boy Advance는 Nintendo Co., Ltd.의 등록 상표입니다.</translation>
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation> : %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation> : %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation> : %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation> : %1</translation>
</message>
@ -3953,96 +3991,96 @@ Game Boy Advance는 Nintendo Co., Ltd.의 등록 상표입니다.</translation>
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation>%1 (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation> (*.ips *.ups *.bps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation> (*.png *.gif *.jpg *.jpeg);; (*)</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation> (*.sps *.xps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation> (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
@ -4051,629 +4089,634 @@ Game Boy Advance는 Nintendo Co., Ltd.의 등록 상표입니다.</translation>
%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation> . .</translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation> ?</translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source>
<translation> . ?</translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation> .</translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation> - %1 %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation>%1 - %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation>%1 - %2 - %3</translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation>%1 - %2 (%3 fps) - %4</translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation> &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation> ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation> &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation>BIOS </translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation> ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation> &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation>&amp; </translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation>&amp; </translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation> &amp;%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation> ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation>&amp; </translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation> ()</translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation>&amp; </translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation>%0x</translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation> ()</translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation> &amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation> &amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation>/&amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation>FPS </translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation> &amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation>F12</translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation> &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation> &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation>&amp;..</translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation> ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation>GDB &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation> ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation> ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation type="unfinished">%1x {1×?}</translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation type="unfinished">Nativo (59.7) {59.7275)?}</translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation> ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation> &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation> &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation> &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation> &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation> ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation> ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation>I/O &amp;...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation> ()</translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation> A</translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation> B</translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation> L</translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation> R</translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation> </translation>
</message>

File diff suppressed because it is too large Load Diff

View File

@ -215,6 +215,44 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1203,27 +1241,27 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation type="unfinished"></translation>
</message>
@ -3952,725 +3990,730 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation type="unfinished"></translation>
</message>

View File

@ -216,6 +216,44 @@ Game Boy Advance é uma marca registrada da Nintendo Co., Ltd.</translation>
<translation>Pausar</translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1204,27 +1242,27 @@ Game Boy Advance é uma marca registrada da Nintendo Co., Ltd.</translation>
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation>Falha ao abrir o arquivo de salvamento: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation>Falha ao abrir o arquivo do jogo: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation>Falha ao abrir o arquivo de snapshot para leitura: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation>Falha ao abrir o arquivo de snapshot para escrita: %1</translation>
</message>
@ -3953,101 +3991,101 @@ Game Boy Advance é uma marca registrada da Nintendo Co., Ltd.</translation>
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation>ROMs de Game Boy Advance (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation>ROMs de Game Boy (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation>Todas as ROMs (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation>%1 Logs de Vídeo (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation>Arquivos (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation>Selecionar ROM</translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation>Selecionar pasta</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation>Selecionar salvamento</translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation>Selecione correção</translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation>Patches (*.ips *.ups *.bps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation>Selecione dotcode do e-Reader</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation>e-Reader card (*.raw *.bin *.bmp)</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation>Selecionar imagem</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation>Arquivo de imagem (*.png *.gif *.jpg *.jpeg);;Todos os arquivos (*)</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation>GameShark saves (*.sps *.xps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation>Selecionar registro de vídeo</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation>Video logs (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation>Travamento</translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
@ -4056,624 +4094,629 @@ Game Boy Advance é uma marca registrada da Nintendo Co., Ltd.</translation>
%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation>Chamada de BIOS não implementada</translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation>Este jogo usa uma chamada de BIOS que não está implementada. Por favor, use a BIOS oficial para uma melhor experiência.</translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation>Quer mesmo tornar portátil?</translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source>
<translation>Isto fará com que o emulador carregue sua configuração a partir do mesmo diretório que o executável. Você quer continuar?</translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation>É necessário reiniciar</translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation>Algumas alterações não terão efeito até que o emulador seja reiniciado.</translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation> - Jogador %1 de %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation>%1 - %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation>%1 - %2 - %3</translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation>%1 - %2 (%3 fps) - %4</translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation>&amp;Arquivo</translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation>Carregar &amp;ROM...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation>Carregar ROM em arquivo...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation>Adicionar pasta à biblioteca...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation>Carregar &amp;patch...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation>Rodar BIOS</translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation>Substituir ROM...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation>&amp;Informações da ROM...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation>Recente</translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation>Tornar portátil</translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation>&amp;Carregar Estado</translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation>Sobre...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation>Sensores de Game Pak...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation>Limpar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation>Carregar arquivo de estado...</translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation>&amp;Salvar Estado</translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation>Salvar arquivo de estado...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation>Carregamento rápido</translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation>Salvamento rápido</translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation>Carregar recente</translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation>Salvar recente</translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation>Desfazer carregar estado</translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation>Desfazer salvar estado</translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation>Estado &amp;%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation>Carregar imagem da câmera...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation>Nova janela multijogador</translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation>&amp;Sair</translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation>&amp;Emulação</translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation>&amp;Resetar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation>&amp;Desligar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation>Remover game pak</translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation>&amp;Pausar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation>&amp;Próximo quadro</translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation>Avançar rápido (segurado)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation>Avanço &amp;Rápido</translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation>Velocidade de avanço</translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation>Ilimitado</translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation>%0x</translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation>Retroceder (segurado)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation>Re&amp;troceder</translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation>Voltar um passo</translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation>Sincronizar para &amp;vídeo</translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation>Sincronizar para &amp;áudio</translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation>Sensor solar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation>Aumentar nível solar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation>Diminuir nível solar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation>Nível solar mais brilhante</translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation>Nível solar mais escuro</translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation>Brilho %1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation>Áudio/&amp;Vídeo</translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation>Tamanho do quadro</translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation>Alternar tela cheia</translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation>Fixar proporção</translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation>Forçar dimensionamento inteiro</translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation>Filtragem bilinear</translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation>&amp;Salto de quadro</translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation>Mudo</translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation>Meta de FPS</translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation>Nativo (59,7275)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation>Capturar &amp;tela</translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation>F12</translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation>Game Boy Printer...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation>BattleChip Gate...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation>%1×</translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation>Interframe blending</translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation>Gravar A/V...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation>Camadas de vídeo</translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation>Canais de áudio</translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation>Ajustar posicionamento da camada...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation>&amp;Ferramentas</translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation>Visualizar &amp;registros...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation>Game &amp;overrides...</translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation>Não foi possível Iniciar</translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation>Não foi possível iniciar o jogo.</translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation>Escanear dotcode do e-Reader...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation>Importar salvamento do GameShark...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation>Exportar salvamento do GameShark...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation>Gravar GIF/WebP/APNG...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation>&amp;Cheats...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation>Configurações...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation>Abrir console de depuração...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation>Iniciar servidor &amp;GDB...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation>Visualizar &amp;paleta...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation>Visualizar &amp;sprites...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation>Visualizar &amp;blocos...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation>Visualizar &amp;mapa...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation>Inspetor de &amp;quadro...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation>Visualizar memória...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation>Pesquisar memória...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation>Visualizar registros de &amp;E/S...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation>Gravar log de vídeo de depuração...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation>Parar log de vídeo de depuração</translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation>Sair da tela cheia</translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation>Botão de GameShark (segurado)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation>Disparo automático</translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation>Disparo automático A</translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation>Disparo automático B</translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation>Disparo automático L</translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation>Disparo automático R</translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation>Disparo automático Start</translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation>Disparo automático Select</translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation>Disparo automático Cima</translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation>Disparo automático Direita</translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation>Disparo automático Baixo</translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation>Disparo automático Esquerda</translation>
</message>

View File

@ -215,6 +215,44 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<translation>Прервать</translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1203,27 +1241,27 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation type="unfinished"></translation>
</message>
@ -3952,725 +3990,730 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation type="unfinished"></translation>
</message>

View File

@ -215,6 +215,44 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1203,27 +1241,27 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation type="unfinished"></translation>
</message>
@ -3952,725 +3990,730 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation type="unfinished"></translation>
</message>

View File

@ -216,6 +216,44 @@ Game Boy Advance, Nintendo Co., Ltd.&apos;nin tescilli ticari markasıdır.</tra
<translation></translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1204,27 +1242,27 @@ Game Boy Advance, Nintendo Co., Ltd.&apos;nin tescilli ticari markasıdır.</tra
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation>Kayıt dosyası ılamadı: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation>Oyun dosyası ılamadı: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation>Anlık görüntü dosyası okuma için ılamadı: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation>Anlık görüntü dosyası yazma için ılamadı: %1</translation>
</message>
@ -3953,101 +3991,101 @@ Game Boy Advance, Nintendo Co., Ltd.&apos;nin tescilli ticari markasıdır.</tra
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation>Game Boy Advance ROMları (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation>Game Boy ROMları (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation>Bütün ROMlar (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation>Arşivler (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation>ROM seç</translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation>Klasör seç</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation>Kayıt seç</translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation>Yama seç</translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation>Yamalar (*.ips *.ups *.bps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation>Resim seç</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation>Resim dosyası (*.png *.gif *.jpg *.jpeg);;All files (*)</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation>GameShark kayıtları (*.sps *.xps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation>Video günlüğü seç</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation>Video günlükleri (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation>Çökme</translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
@ -4056,624 +4094,629 @@ Game Boy Advance, Nintendo Co., Ltd.&apos;nin tescilli ticari markasıdır.</tra
%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation>Uygulanmamış BIOS girişi</translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation>Oyun BIOS dosyasına ihtiyacı var. Lütfen en iyi deneyim için resmi BIOS&apos;u kullanın.</translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation>Taşınabilir yapılsın mı?</translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source>
<translation>Emülatörün yapılandırmasını yürütülebilir dosya ile aynı dizinden yüklemesini sağlar. Devam etmek istiyor musun?</translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation>Yeniden başlatma gerekli</translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation>Bazı değişiklikler emülatör yeniden başlatılıncaya kadar etkili olmaz.</translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation>&amp;ROM yükle...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation>ROM&apos;u arşivden yükle ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation>Kütüphaneye klasör ekle ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation>&amp;Patch yükle...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation>BIOS boot et</translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation>ROM değişti...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation>ROM &amp;info...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation>Son kullanılanlar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation>Portatif yap</translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation>&amp;Kaydedilmiş konum yükle</translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation>Kaydedilmiş konum dosyası yükle...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation>&amp;Konumu kaydet</translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation>Konum dosyasını kaydet...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation>Hızlı Yükle</translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation>Hızlı kaydet</translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation>En son yükle</translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation>Hızlı kaydet</translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation>Kaydedilen konum yüklemeyi geri al</translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation>Konum kaydetmeyi geri al</translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation>Konum &amp;%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation>Kamera resmini yükle ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation>Yeni çokoyunculu ekranı</translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation>Hakkında...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation>Çıkış</translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation>Emülasyon</translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation>&amp;Reset</translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation>Kapat</translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation>&amp;Durdur</translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation>&amp;Sonraki kare</translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation>İleriye sar(basılı tutun)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation>&amp;İleriye sar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation>İleriye sarma hızı</translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation>Geri sar (basılı tutun)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation>Geri sar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation>Geriye doğru adım</translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation>&amp;Videoya eşitle</translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation>&amp;Sese eşitle</translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation>Solar seviyesini arttır</translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation>Solar seviyesini düşür</translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation>En parlak solar seviyesi</translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation>En karanlık solar seviyesi</translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation>Parlaklık:%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation>Game Boy yazıcısı...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation>Ses/&amp;Video</translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation>Çerçeve boyutu</translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation>Tamekranı /kapa</translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation>En boy oranını kilitle</translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation>Tamsayılı ölçeklendirmeyi zorla</translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation>Bilinear filtreleme</translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation>Kare atlama</translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation>Sessiz</translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation>FPS hedefi</translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation>Ekran görüntüsü al</translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation>Ses kanalları</translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation>Katman yerleşimini ayarlayın...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation>&amp;Araçlar</translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation>Kayıtları görüntüle...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation>Oyunların üzerine yazılanlar</translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation>&amp;Hileler...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation>Ayarlar...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation>Hata ayıklayıcı konsolunu ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation>&amp;GDB sunucusunu başlat...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation>&amp;Renk Paletini gör...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation>&amp;Spriteları gör...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation>&amp;Desenleri gör...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation>&amp;Haritayı gör</translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation>Hafıza gör...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation>Hafızada ara...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation>&amp;I/O kayıtlarını görüntüle</translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation>Tam ekrandan çık</translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation>GameShark Butonu (basılı tutun)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation>Otomatik basma</translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation>Otomatik basma A</translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation>Otomatik basma B</translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation>Otomatik basma L</translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation>Otomatik basma R</translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation>Otomatik basma Start</translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation>Otomatik basma Select</translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation>Otomatik basma Up</translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation>Otomatik basma Right</translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation>Otomatik basma Down</translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation>Otomatik basma Sol</translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation type="unfinished">Temizle</translation>
</message>

View File

@ -216,6 +216,44 @@ Game Boy Advance 是任天堂有限公司Nintendo Co., Ltd.)的注册商标
<translation></translation>
</message>
</context>
<context>
<name>DolphinConnector</name>
<message>
<location filename="../DolphinConnector.ui" line="14"/>
<source>Connect to Dolphin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="23"/>
<source>Local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="36"/>
<source>IP address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="55"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="68"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="78"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../DolphinConnector.ui" line="90"/>
<source>Reset on connect</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FrameView</name>
<message>
@ -1204,27 +1242,27 @@ Game Boy Advance 是任天堂有限公司Nintendo Co., Ltd.)的注册商标
<context>
<name>QGBA::CoreController</name>
<message>
<location filename="../CoreController.cpp" line="666"/>
<location filename="../CoreController.cpp" line="695"/>
<source>Failed to open save file: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="696"/>
<location filename="../CoreController.cpp" line="726"/>
<source>Failed to open game file: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="721"/>
<location filename="../CoreController.cpp" line="751"/>
<source>Can&apos;t yank pack in unexpected platform!</source>
<translation></translation>
</message>
<message>
<location filename="../CoreController.cpp" line="798"/>
<location filename="../CoreController.cpp" line="828"/>
<source>Failed to open snapshot file for reading: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../CoreController.cpp" line="814"/>
<location filename="../CoreController.cpp" line="844"/>
<source>Failed to open snapshot file for writing: %1</source>
<translation>: %1</translation>
</message>
@ -3953,101 +3991,101 @@ Game Boy Advance 是任天堂有限公司Nintendo Co., Ltd.)的注册商标
<context>
<name>QGBA::Window</name>
<message>
<location filename="../Window.cpp" line="282"/>
<location filename="../Window.cpp" line="283"/>
<source>Game Boy Advance ROMs (%1)</source>
<translation>Game Boy Advance ROM (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="299"/>
<location filename="../Window.cpp" line="300"/>
<source>Game Boy ROMs (%1)</source>
<translation>Game Boy ROM (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="303"/>
<location filename="../Window.cpp" line="304"/>
<source>All ROMs (%1)</source>
<translation> ROM (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="304"/>
<location filename="../Window.cpp" line="305"/>
<source>%1 Video Logs (*.mvl)</source>
<translation>%1 (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="319"/>
<location filename="../Window.cpp" line="320"/>
<source>Archives (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="324"/>
<location filename="../Window.cpp" line="332"/>
<location filename="../Window.cpp" line="359"/>
<location filename="../Window.cpp" line="325"/>
<location filename="../Window.cpp" line="337"/>
<location filename="../Window.cpp" line="364"/>
<source>Select ROM</source>
<translation> ROM</translation>
</message>
<message>
<location filename="../Window.cpp" line="350"/>
<location filename="../Window.cpp" line="355"/>
<source>Select folder</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>Select save</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Select patch</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="405"/>
<location filename="../Window.cpp" line="410"/>
<source>Patches (*.ips *.ups *.bps)</source>
<translation> (*.ips *.ups *.bps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>Select e-Reader dotcode</source>
<translation> e-Reader </translation>
</message>
<message>
<location filename="../Window.cpp" line="416"/>
<location filename="../Window.cpp" line="421"/>
<source>e-Reader card (*.raw *.bin *.bmp)</source>
<translation>e-Reader (*.raw *.bin *.bmp)</translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Select image</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="429"/>
<location filename="../Window.cpp" line="434"/>
<source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source>
<translation> (*.png *.gif *.jpg *.jpeg);; (*)</translation>
</message>
<message>
<location filename="../Window.cpp" line="436"/>
<location filename="../Window.cpp" line="443"/>
<location filename="../Window.cpp" line="441"/>
<location filename="../Window.cpp" line="448"/>
<source>GameShark saves (*.sps *.xps)</source>
<translation>GameShark (*.sps *.xps)</translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Select video log</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="475"/>
<location filename="../Window.cpp" line="480"/>
<source>Video logs (*.mvl)</source>
<translation> (*.mvl)</translation>
</message>
<message>
<location filename="../Window.cpp" line="842"/>
<location filename="../Window.cpp" line="859"/>
<source>Crash</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="843"/>
<location filename="../Window.cpp" line="860"/>
<source>The game has crashed with the following error:
%1</source>
@ -4056,624 +4094,629 @@ Game Boy Advance 是任天堂有限公司Nintendo Co., Ltd.)的注册商标
%1</translation>
</message>
<message>
<location filename="../Window.cpp" line="850"/>
<location filename="../Window.cpp" line="867"/>
<source>Couldn&apos;t Start</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="851"/>
<location filename="../Window.cpp" line="868"/>
<source>Could not start game.</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="865"/>
<location filename="../Window.cpp" line="882"/>
<source>Unimplemented BIOS call</source>
<translation> BIOS </translation>
</message>
<message>
<location filename="../Window.cpp" line="866"/>
<location filename="../Window.cpp" line="883"/>
<source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source>
<translation>使 BIOS 使 BIOS </translation>
</message>
<message>
<location filename="../Window.cpp" line="879"/>
<location filename="../Window.cpp" line="896"/>
<source>Failed to create an appropriate display device, falling back to software display. Games may run slowly, especially with larger windows.</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="971"/>
<location filename="../Window.cpp" line="988"/>
<source>Really make portable?</source>
<translation>便</translation>
</message>
<message>
<location filename="../Window.cpp" line="972"/>
<location filename="../Window.cpp" line="989"/>
<source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="984"/>
<location filename="../Window.cpp" line="1001"/>
<source>Restart needed</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="985"/>
<location filename="../Window.cpp" line="1002"/>
<source>Some changes will not take effect until the emulator is restarted.</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1024"/>
<location filename="../Window.cpp" line="1041"/>
<source> - Player %1 of %2</source>
<translation> - %1 %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1035"/>
<location filename="../Window.cpp" line="1052"/>
<source>%1 - %2</source>
<translation>%1 - %2</translation>
</message>
<message>
<location filename="../Window.cpp" line="1037"/>
<location filename="../Window.cpp" line="1054"/>
<source>%1 - %2 - %3</source>
<translation>%1 - %2 - %3</translation>
</message>
<message>
<location filename="../Window.cpp" line="1039"/>
<location filename="../Window.cpp" line="1056"/>
<source>%1 - %2 (%3 fps) - %4</source>
<translation>%1 - %2 (%3 fps) - %4</translation>
</message>
<message>
<location filename="../Window.cpp" line="1081"/>
<location filename="../Window.cpp" line="1098"/>
<source>&amp;File</source>
<translation>(&amp;F)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1083"/>
<location filename="../Window.cpp" line="1100"/>
<source>Load &amp;ROM...</source>
<translation> ROM(&amp;R)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1086"/>
<location filename="../Window.cpp" line="1103"/>
<source>Load ROM in archive...</source>
<translation> ROM...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1087"/>
<location filename="../Window.cpp" line="1104"/>
<source>Add folder to library...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="367"/>
<location filename="../Window.cpp" line="372"/>
<source>Save games (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="368"/>
<location filename="../Window.cpp" line="373"/>
<source>Select save game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="376"/>
<location filename="../Window.cpp" line="381"/>
<source>mGBA save state files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="378"/>
<location filename="../Window.cpp" line="383"/>
<location filename="../Window.cpp" line="388"/>
<source>Select save state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1090"/>
<location filename="../Window.cpp" line="1107"/>
<source>Load alternate save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1093"/>
<location filename="../Window.cpp" line="1110"/>
<source>Load temporary save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1097"/>
<location filename="../Window.cpp" line="1114"/>
<source>Load &amp;patch...</source>
<translation>(&amp;P)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1100"/>
<location filename="../Window.cpp" line="1117"/>
<source>Boot BIOS</source>
<translation> BIOS</translation>
</message>
<message>
<location filename="../Window.cpp" line="1105"/>
<location filename="../Window.cpp" line="1120"/>
<source>Replace ROM...</source>
<translation> ROM...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1107"/>
<location filename="../Window.cpp" line="1122"/>
<source>Scan e-Reader dotcodes...</source>
<translation> e-Reader ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1111"/>
<location filename="../Window.cpp" line="1126"/>
<source>ROM &amp;info...</source>
<translation>ROM (&amp;I)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1113"/>
<location filename="../Window.cpp" line="1128"/>
<source>Recent</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1116"/>
<location filename="../Window.cpp" line="1131"/>
<source>Make portable</source>
<translation>便</translation>
</message>
<message>
<location filename="../Window.cpp" line="1119"/>
<location filename="../Window.cpp" line="1134"/>
<source>&amp;Load state</source>
<translation>(&amp;L)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1124"/>
<location filename="../Window.cpp" line="1139"/>
<source>Load state file...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1129"/>
<location filename="../Window.cpp" line="1144"/>
<source>&amp;Save state</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1134"/>
<location filename="../Window.cpp" line="1149"/>
<source>Save state file...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1139"/>
<location filename="../Window.cpp" line="1154"/>
<source>Quick load</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1140"/>
<location filename="../Window.cpp" line="1155"/>
<source>Quick save</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1142"/>
<location filename="../Window.cpp" line="1157"/>
<source>Load recent</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1147"/>
<location filename="../Window.cpp" line="1162"/>
<source>Save recent</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1155"/>
<location filename="../Window.cpp" line="1170"/>
<source>Undo load state</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1158"/>
<location filename="../Window.cpp" line="1173"/>
<source>Undo save state</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1165"/>
<location filename="../Window.cpp" line="1170"/>
<location filename="../Window.cpp" line="1180"/>
<location filename="../Window.cpp" line="1185"/>
<source>State &amp;%1</source>
<translation> (&amp;%1)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1177"/>
<location filename="../Window.cpp" line="1192"/>
<source>Load camera image...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1181"/>
<location filename="../Window.cpp" line="1196"/>
<source>Convert save game...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1183"/>
<location filename="../Window.cpp" line="1198"/>
<source>Import GameShark Save...</source>
<translation> GameShark ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1186"/>
<location filename="../Window.cpp" line="1201"/>
<source>Export GameShark Save...</source>
<translation> GameShark ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1191"/>
<location filename="../Window.cpp" line="1206"/>
<source>New multiplayer window</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1199"/>
<location filename="../Window.cpp" line="1211"/>
<source>Connect to Dolphin...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Window.cpp" line="1217"/>
<source>Report bug...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1200"/>
<location filename="../Window.cpp" line="1223"/>
<source>About...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1203"/>
<location filename="../Window.cpp" line="1226"/>
<source>E&amp;xit</source>
<translation>退(&amp;X)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1206"/>
<location filename="../Window.cpp" line="1229"/>
<source>&amp;Emulation</source>
<translation>(&amp;E)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1207"/>
<location filename="../Window.cpp" line="1230"/>
<source>&amp;Reset</source>
<translation>(&amp;R)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1208"/>
<location filename="../Window.cpp" line="1231"/>
<source>Sh&amp;utdown</source>
<translation>(&amp;U)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1209"/>
<location filename="../Window.cpp" line="1232"/>
<source>Yank game pak</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1213"/>
<location filename="../Window.cpp" line="1236"/>
<source>&amp;Pause</source>
<translation>(&amp;P)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1222"/>
<location filename="../Window.cpp" line="1245"/>
<source>&amp;Next frame</source>
<translation>(&amp;N)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1226"/>
<location filename="../Window.cpp" line="1249"/>
<source>Fast forward (held)</source>
<translation> ()</translation>
</message>
<message>
<location filename="../Window.cpp" line="1232"/>
<location filename="../Window.cpp" line="1255"/>
<source>&amp;Fast forward</source>
<translation>(&amp;F)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1236"/>
<location filename="../Window.cpp" line="1259"/>
<source>Fast forward speed</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1241"/>
<location filename="../Window.cpp" line="1264"/>
<source>Unbounded</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1245"/>
<location filename="../Window.cpp" line="1268"/>
<source>%0x</source>
<translation>%0x</translation>
</message>
<message>
<location filename="../Window.cpp" line="1249"/>
<location filename="../Window.cpp" line="1272"/>
<source>Rewind (held)</source>
<translation> ()</translation>
</message>
<message>
<location filename="../Window.cpp" line="1256"/>
<location filename="../Window.cpp" line="1279"/>
<source>Re&amp;wind</source>
<translation>(&amp;W)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1261"/>
<location filename="../Window.cpp" line="1284"/>
<source>Step backwards</source>
<translation>退</translation>
</message>
<message>
<location filename="../Window.cpp" line="1267"/>
<location filename="../Window.cpp" line="1290"/>
<source>Sync to &amp;video</source>
<translation>(&amp;V)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1274"/>
<location filename="../Window.cpp" line="1297"/>
<source>Sync to &amp;audio</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1282"/>
<location filename="../Window.cpp" line="1305"/>
<source>Solar sensor</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1283"/>
<location filename="../Window.cpp" line="1306"/>
<source>Increase solar level</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1284"/>
<location filename="../Window.cpp" line="1307"/>
<source>Decrease solar level</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1285"/>
<location filename="../Window.cpp" line="1308"/>
<source>Brightest solar level</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1288"/>
<location filename="../Window.cpp" line="1311"/>
<source>Darkest solar level</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1294"/>
<location filename="../Window.cpp" line="1317"/>
<source>Brightness %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../Window.cpp" line="1300"/>
<location filename="../Window.cpp" line="1323"/>
<source>Game Boy Printer...</source>
<translation>Game Boy ...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1309"/>
<location filename="../Window.cpp" line="1332"/>
<source>BattleChip Gate...</source>
<translation>BattleChip Gate...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1313"/>
<location filename="../Window.cpp" line="1336"/>
<source>Audio/&amp;Video</source>
<translation>/(&amp;V)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1314"/>
<location filename="../Window.cpp" line="1337"/>
<source>Frame size</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1316"/>
<location filename="../Window.cpp" line="1339"/>
<source>%1×</source>
<translation>%1×</translation>
</message>
<message>
<location filename="../Window.cpp" line="1341"/>
<location filename="../Window.cpp" line="1364"/>
<source>Toggle fullscreen</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1344"/>
<location filename="../Window.cpp" line="1367"/>
<source>Lock aspect ratio</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1356"/>
<location filename="../Window.cpp" line="1379"/>
<source>Force integer scaling</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1368"/>
<location filename="../Window.cpp" line="1391"/>
<source>Interframe blending</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1377"/>
<location filename="../Window.cpp" line="1400"/>
<source>Bilinear filtering</source>
<translation>线</translation>
</message>
<message>
<location filename="../Window.cpp" line="1388"/>
<location filename="../Window.cpp" line="1411"/>
<source>Frame&amp;skip</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1401"/>
<location filename="../Window.cpp" line="1424"/>
<source>Mute</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1407"/>
<location filename="../Window.cpp" line="1430"/>
<source>FPS target</source>
<translation> FPS</translation>
</message>
<message>
<location filename="../Window.cpp" line="1415"/>
<location filename="../Window.cpp" line="1438"/>
<source>Native (59.7275)</source>
<translation> (59.7275)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1430"/>
<location filename="../Window.cpp" line="1453"/>
<source>Take &amp;screenshot</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1432"/>
<location filename="../Window.cpp" line="1455"/>
<source>F12</source>
<translation>F12</translation>
</message>
<message>
<location filename="../Window.cpp" line="1436"/>
<location filename="../Window.cpp" line="1459"/>
<source>Record A/V...</source>
<translation>/...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1437"/>
<location filename="../Window.cpp" line="1460"/>
<source>Record GIF/WebP/APNG...</source>
<translation> GIF/WebP/APNG...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1441"/>
<location filename="../Window.cpp" line="1464"/>
<source>Video layers</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1442"/>
<location filename="../Window.cpp" line="1465"/>
<source>Audio channels</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1444"/>
<location filename="../Window.cpp" line="1467"/>
<source>Adjust layer placement...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1446"/>
<location filename="../Window.cpp" line="1469"/>
<source>&amp;Tools</source>
<translation>(&amp;T)</translation>
</message>
<message>
<location filename="../Window.cpp" line="1447"/>
<location filename="../Window.cpp" line="1470"/>
<source>View &amp;logs...</source>
<translation>(&amp;L)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1449"/>
<location filename="../Window.cpp" line="1472"/>
<source>Game &amp;overrides...</source>
<translation>(&amp;O)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1461"/>
<location filename="../Window.cpp" line="1484"/>
<source>Game Pak sensors...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1463"/>
<location filename="../Window.cpp" line="1486"/>
<source>&amp;Cheats...</source>
<translation>(&amp;C)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1466"/>
<location filename="../Window.cpp" line="1489"/>
<source>Settings...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1470"/>
<location filename="../Window.cpp" line="1493"/>
<source>Open debugger console...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1472"/>
<location filename="../Window.cpp" line="1495"/>
<source>Start &amp;GDB server...</source>
<translation> GDB (&amp;G)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1478"/>
<location filename="../Window.cpp" line="1501"/>
<source>View &amp;palette...</source>
<translation>(&amp;P)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1479"/>
<location filename="../Window.cpp" line="1502"/>
<source>View &amp;sprites...</source>
<translation>(&amp;S)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1480"/>
<location filename="../Window.cpp" line="1503"/>
<source>View &amp;tiles...</source>
<translation>(&amp;T)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1481"/>
<location filename="../Window.cpp" line="1504"/>
<source>View &amp;map...</source>
<translation>(&amp;M)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1483"/>
<location filename="../Window.cpp" line="1506"/>
<source>&amp;Frame inspector...</source>
<translation>(&amp;F)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1499"/>
<location filename="../Window.cpp" line="1522"/>
<source>View memory...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1500"/>
<location filename="../Window.cpp" line="1523"/>
<source>Search memory...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1501"/>
<location filename="../Window.cpp" line="1524"/>
<source>View &amp;I/O registers...</source>
<translation> I/O (&amp;I)...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1504"/>
<location filename="../Window.cpp" line="1527"/>
<source>Record debug video log...</source>
<translation>...</translation>
</message>
<message>
<location filename="../Window.cpp" line="1505"/>
<location filename="../Window.cpp" line="1528"/>
<source>Stop debug video log</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1605"/>
<location filename="../Window.cpp" line="1628"/>
<source>Exit fullscreen</source>
<translation>退</translation>
</message>
<message>
<location filename="../Window.cpp" line="1607"/>
<location filename="../Window.cpp" line="1630"/>
<source>GameShark Button (held)</source>
<translation>GameShark ()</translation>
</message>
<message>
<location filename="../Window.cpp" line="1613"/>
<location filename="../Window.cpp" line="1636"/>
<source>Autofire</source>
<translation></translation>
</message>
<message>
<location filename="../Window.cpp" line="1614"/>
<location filename="../Window.cpp" line="1637"/>
<source>Autofire A</source>
<translation> A</translation>
</message>
<message>
<location filename="../Window.cpp" line="1619"/>
<location filename="../Window.cpp" line="1642"/>
<source>Autofire B</source>
<translation> B</translation>
</message>
<message>
<location filename="../Window.cpp" line="1624"/>
<location filename="../Window.cpp" line="1647"/>
<source>Autofire L</source>
<translation> L</translation>
</message>
<message>
<location filename="../Window.cpp" line="1629"/>
<location filename="../Window.cpp" line="1652"/>
<source>Autofire R</source>
<translation> R</translation>
</message>
<message>
<location filename="../Window.cpp" line="1634"/>
<location filename="../Window.cpp" line="1657"/>
<source>Autofire Start</source>
<translation> Start</translation>
</message>
<message>
<location filename="../Window.cpp" line="1639"/>
<location filename="../Window.cpp" line="1662"/>
<source>Autofire Select</source>
<translation> Select</translation>
</message>
<message>
<location filename="../Window.cpp" line="1644"/>
<location filename="../Window.cpp" line="1667"/>
<source>Autofire Up</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1649"/>
<location filename="../Window.cpp" line="1672"/>
<source>Autofire Right</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1654"/>
<location filename="../Window.cpp" line="1677"/>
<source>Autofire Down</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1659"/>
<location filename="../Window.cpp" line="1682"/>
<source>Autofire Left</source>
<translation> </translation>
</message>
<message>
<location filename="../Window.cpp" line="1713"/>
<location filename="../Window.cpp" line="1736"/>
<source>Clear</source>
<translation></translation>
</message>

View File

@ -14,6 +14,7 @@
#define GLYPH_HEIGHT 24
#define CELL_HEIGHT 32
#define CELL_WIDTH 32
#define MAX_GLYPHS 1024
static const GLfloat _offsets[] = {
0.f, 0.f,
@ -22,50 +23,70 @@ static const GLfloat _offsets[] = {
0.f, 1.f,
};
static const GLchar* const _gles2Header =
"#version 100\n"
static const GLchar* const _gles3Header =
"#version 300 es\n"
"precision mediump float;\n";
static const char* const _vertexShader =
"attribute vec2 offset;\n"
"uniform vec3 origin;\n"
"uniform vec2 glyph;\n"
"uniform vec2 dims;\n"
"uniform mat2 transform;\n"
"varying vec2 texCoord;\n"
"in vec2 offset;\n"
"in vec3 origin;\n"
"in vec2 glyph;\n"
"in vec2 dims;\n"
"in mat2 transform;\n"
"in vec4 color;\n"
"out vec4 fragColor;\n"
"out vec2 texCoord;\n"
"void main() {\n"
" texCoord = (glyph + offset * dims) / 512.0;\n"
" vec2 scaledOffset = (transform * (offset * 2.0 - vec2(1.0)) + vec2(1.0)) / 2.0 * dims;\n"
" fragColor = color;\n"
" gl_Position = vec4((origin.x + scaledOffset.x) / 640.0 - 1.0, -(origin.y + scaledOffset.y) / 360.0 + 1.0, origin.z, 1.0);\n"
"}";
static const char* const _fragmentShader =
"varying vec2 texCoord;\n"
"in vec2 texCoord;\n"
"in vec4 fragColor;\n"
"out vec4 outColor;\n"
"uniform sampler2D tex;\n"
"uniform vec4 color;\n"
"uniform float cutoff;\n"
"uniform vec3 colorModulus;\n"
"void main() {\n"
" vec4 texColor = texture2D(tex, texCoord);\n"
" texColor.a = clamp((texColor.a - cutoff) / (1.0 - cutoff), 0.0, 1.0);\n"
" texColor.rgb = color.rgb;\n"
" texColor.a *= color.a;\n"
" gl_FragColor = texColor;\n"
" texColor.rgb = fragColor.rgb * colorModulus;\n"
" texColor.a *= fragColor.a;\n"
" outColor = texColor;\n"
"}";
struct GUIFont {
GLuint font;
int currentGlyph;
GLuint program;
GLuint vbo;
GLuint vao;
GLuint texLocation;
GLuint dimsLocation;
GLuint transformLocation;
GLuint colorLocation;
GLuint cutoffLocation;
GLuint colorModulusLocation;
GLuint originLocation;
GLuint glyphLocation;
GLuint cutoffLocation;
GLuint dimsLocation;
GLuint transformLocation[2];
GLuint colorLocation;
GLuint originVbo;
GLuint glyphVbo;
GLuint dimsVbo;
GLuint transformVbo[2];
GLuint colorVbo;
GLfloat originData[MAX_GLYPHS][3];
GLfloat glyphData[MAX_GLYPHS][2];
GLfloat dimsData[MAX_GLYPHS][2];
GLfloat transformData[2][MAX_GLYPHS][2];
GLfloat colorData[MAX_GLYPHS][4];
};
static bool _loadTexture(const char* path) {
@ -120,12 +141,13 @@ struct GUIFont* GUIFontCreate(void) {
return NULL;
}
font->currentGlyph = 0;
font->program = glCreateProgram();
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
const GLchar* shaderBuffer[2];
shaderBuffer[0] = _gles2Header;
shaderBuffer[0] = _gles3Header;
shaderBuffer[1] = _vertexShader;
glShaderSource(vertexShader, 2, shaderBuffer, NULL);
@ -154,27 +176,82 @@ struct GUIFont* GUIFontCreate(void) {
glGetShaderInfoLog(vertexShader, sizeof(msg), NULL, msg);
puts(msg);
}
glLinkProgram(font->program);
glGetProgramiv(font->program, GL_LINK_STATUS, &success);
if (!success) {
GLchar msg[512];
glGetProgramInfoLog(font->program, sizeof(msg), NULL, msg);
puts(msg);
}
glDeleteShader(vertexShader);
glDeleteShader(fragmentShader);
font->texLocation = glGetUniformLocation(font->program, "tex");
font->colorLocation = glGetUniformLocation(font->program, "color");
font->dimsLocation = glGetUniformLocation(font->program, "dims");
font->transformLocation = glGetUniformLocation(font->program, "transform");
font->originLocation = glGetUniformLocation(font->program, "origin");
font->glyphLocation = glGetUniformLocation(font->program, "glyph");
font->cutoffLocation = glGetUniformLocation(font->program, "cutoff");
font->colorModulusLocation = glGetUniformLocation(font->program, "colorModulus");
font->originLocation = glGetAttribLocation(font->program, "origin");
font->glyphLocation = glGetAttribLocation(font->program, "glyph");
font->dimsLocation = glGetAttribLocation(font->program, "dims");
font->transformLocation[0] = glGetAttribLocation(font->program, "transform");
font->transformLocation[1] = font->transformLocation[0] + 1;
font->colorLocation = glGetAttribLocation(font->program, "color");
GLuint offsetLocation = glGetAttribLocation(font->program, "offset");
glGenBuffers(1, &font->vbo);
glGenVertexArrays(1, &font->vao);
glBindVertexArray(font->vao);
glGenBuffers(1, &font->vbo);
glBindBuffer(GL_ARRAY_BUFFER, font->vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(_offsets), _offsets, GL_STATIC_DRAW);
glVertexAttribPointer(offsetLocation, 2, GL_FLOAT, GL_FALSE, 0, NULL);
glVertexAttribDivisor(offsetLocation, 0);
glEnableVertexAttribArray(offsetLocation);
glGenBuffers(1, &font->originVbo);
glBindBuffer(GL_ARRAY_BUFFER, font->originVbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 3 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glVertexAttribPointer(font->originLocation, 3, GL_FLOAT, GL_FALSE, 0, NULL);
glVertexAttribDivisor(font->originLocation, 1);
glEnableVertexAttribArray(font->originLocation);
glGenBuffers(1, &font->glyphVbo);
glBindBuffer(GL_ARRAY_BUFFER, font->glyphVbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 2 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glVertexAttribPointer(font->glyphLocation, 2, GL_FLOAT, GL_FALSE, 0, NULL);
glVertexAttribDivisor(font->glyphLocation, 1);
glEnableVertexAttribArray(font->glyphLocation);
glGenBuffers(1, &font->dimsVbo);
glBindBuffer(GL_ARRAY_BUFFER, font->dimsVbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 2 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glVertexAttribPointer(font->dimsLocation, 2, GL_FLOAT, GL_FALSE, 0, NULL);
glVertexAttribDivisor(font->dimsLocation, 1);
glEnableVertexAttribArray(font->dimsLocation);
glGenBuffers(2, font->transformVbo);
glBindBuffer(GL_ARRAY_BUFFER, font->transformVbo[0]);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 2 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glVertexAttribPointer(font->transformLocation[0], 2, GL_FLOAT, GL_FALSE, 0, NULL);
glVertexAttribDivisor(font->transformLocation[0], 1);
glEnableVertexAttribArray(font->transformLocation[0]);
glBindBuffer(GL_ARRAY_BUFFER, font->transformVbo[1]);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 2 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glVertexAttribPointer(font->transformLocation[1], 2, GL_FLOAT, GL_FALSE, 0, NULL);
glVertexAttribDivisor(font->transformLocation[1], 1);
glEnableVertexAttribArray(font->transformLocation[1]);
glGenBuffers(1, &font->colorVbo);
glBindBuffer(GL_ARRAY_BUFFER, font->colorVbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 4 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glVertexAttribPointer(font->colorLocation, 4, GL_FLOAT, GL_FALSE, 0, NULL);
glVertexAttribDivisor(font->colorLocation, 1);
glEnableVertexAttribArray(font->colorLocation);
glBindVertexArray(0);
return font;
@ -182,6 +259,11 @@ struct GUIFont* GUIFontCreate(void) {
void GUIFontDestroy(struct GUIFont* font) {
glDeleteBuffers(1, &font->vbo);
glDeleteBuffers(1, &font->originVbo);
glDeleteBuffers(1, &font->glyphVbo);
glDeleteBuffers(1, &font->dimsVbo);
glDeleteBuffers(2, font->transformVbo);
glDeleteBuffers(1, &font->colorVbo);
glDeleteProgram(font->program);
glDeleteTextures(1, &font->font);
glDeleteVertexArrays(1, &font->vao);
@ -220,39 +302,38 @@ void GUIFontIconMetrics(const struct GUIFont* font, enum GUIIcon icon, unsigned*
}
}
void GUIFontDrawGlyph(const struct GUIFont* font, int x, int y, uint32_t color, uint32_t glyph) {
void GUIFontDrawGlyph(struct GUIFont* font, int x, int y, uint32_t color, uint32_t glyph) {
if (glyph > 0x7F) {
glyph = '?';
}
struct GUIFontGlyphMetric metric = defaultFontMetrics[glyph];
glUseProgram(font->program);
glBindVertexArray(font->vao);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, font->font);
if (font->currentGlyph >= MAX_GLYPHS) {
GUIFontDrawSubmit(font);
}
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
int offset = font->currentGlyph;
glUniform1i(font->texLocation, 0);
glUniform2f(font->glyphLocation, (glyph & 15) * CELL_WIDTH + metric.padding.left * 2, (glyph >> 4) * CELL_HEIGHT + metric.padding.top * 2);
glUniform2f(font->dimsLocation, CELL_WIDTH - (metric.padding.left + metric.padding.right) * 2, CELL_HEIGHT - (metric.padding.top + metric.padding.bottom) * 2);
glUniform3f(font->originLocation, x, y - GLYPH_HEIGHT + metric.padding.top * 2, 0);
glUniformMatrix2fv(font->transformLocation, 1, GL_FALSE, (float[4]) {1.0, 0.0, 0.0, 1.0});
font->originData[offset][0] = x;
font->originData[offset][1] = y - GLYPH_HEIGHT + metric.padding.top * 2;
font->originData[offset][2] = 0;
font->glyphData[offset][0] = (glyph & 15) * CELL_WIDTH + metric.padding.left * 2;
font->glyphData[offset][1] = (glyph >> 4) * CELL_HEIGHT + metric.padding.top * 2;
font->dimsData[offset][0] = CELL_WIDTH - (metric.padding.left + metric.padding.right) * 2;
font->dimsData[offset][1] = CELL_HEIGHT - (metric.padding.top + metric.padding.bottom) * 2;
font->transformData[0][offset][0] = 1.0f;
font->transformData[0][offset][1] = 0.0f;
font->transformData[1][offset][0] = 0.0f;
font->transformData[1][offset][1] = 1.0f;
font->colorData[offset][0] = (color & 0xFF) / 255.0f;
font->colorData[offset][1] = ((color >> 8) & 0xFF) / 255.0f;
font->colorData[offset][2] = ((color >> 16) & 0xFF) / 255.0f;
font->colorData[offset][3] = ((color >> 24) & 0xFF) / 255.0f;
glUniform1f(font->cutoffLocation, 0.1f);
glUniform4f(font->colorLocation, 0.0, 0.0, 0.0, ((color >> 24) & 0xFF) / 128.0f);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glUniform1f(font->cutoffLocation, 0.7f);
glUniform4f(font->colorLocation, (color & 0xFF) / 255.0f, ((color >> 8) & 0xFF) / 255.0f, ((color >> 16) & 0xFF) / 255.0f, ((color >> 24) & 0xFF) / 255.0f);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glBindVertexArray(0);
glUseProgram(0);
++font->currentGlyph;
}
void GUIFontDrawIcon(const struct GUIFont* font, int x, int y, enum GUIAlignment align, enum GUIOrientation orient, uint32_t color, enum GUIIcon icon) {
void GUIFontDrawIcon(struct GUIFont* font, int x, int y, enum GUIAlignment align, enum GUIOrientation orient, uint32_t color, enum GUIIcon icon) {
if (icon >= GUI_ICON_MAX) {
return;
}
@ -277,7 +358,6 @@ void GUIFontDrawIcon(const struct GUIFont* font, int x, int y, enum GUIAlignment
break;
}
glUseProgram(font->program);
switch (orient) {
case GUI_ORIENT_HMIRROR:
hFlip = -1.0;
@ -290,34 +370,32 @@ void GUIFontDrawIcon(const struct GUIFont* font, int x, int y, enum GUIAlignment
// TODO: Rotate
break;
}
if (font->currentGlyph >= MAX_GLYPHS) {
GUIFontDrawSubmit(font);
}
glUseProgram(font->program);
glBindVertexArray(font->vao);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, font->font);
int offset = font->currentGlyph;
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
font->originData[offset][0] = x;
font->originData[offset][1] = y;
font->originData[offset][2] = 0;
font->glyphData[offset][0] = metric.x * 2;
font->glyphData[offset][1] = metric.y * 2 + 256;
font->dimsData[offset][0] = metric.width * 2;
font->dimsData[offset][1] = metric.height * 2;
font->transformData[0][offset][0] = hFlip;
font->transformData[0][offset][1] = 0.0f;
font->transformData[1][offset][0] = 0.0f;
font->transformData[1][offset][1] = vFlip;
font->colorData[offset][0] = (color & 0xFF) / 255.0f;
font->colorData[offset][1] = ((color >> 8) & 0xFF) / 255.0f;
font->colorData[offset][2] = ((color >> 16) & 0xFF) / 255.0f;
font->colorData[offset][3] = ((color >> 24) & 0xFF) / 255.0f;
glUniform1i(font->texLocation, 0);
glUniform2f(font->glyphLocation, metric.x * 2, metric.y * 2 + 256);
glUniform2f(font->dimsLocation, metric.width * 2, metric.height * 2);
glUniform3f(font->originLocation, x, y, 0);
glUniformMatrix2fv(font->transformLocation, 1, GL_FALSE, (float[4]) {hFlip, 0.0, 0.0, vFlip});
glUniform1f(font->cutoffLocation, 0.1f);
glUniform4f(font->colorLocation, 0.0, 0.0, 0.0, ((color >> 24) & 0xFF) / 128.0f);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glUniform1f(font->cutoffLocation, 0.7f);
glUniform4f(font->colorLocation, (color & 0xFF) / 255.0f, ((color >> 8) & 0xFF) / 255.0f, ((color >> 16) & 0xFF) / 255.0f, ((color >> 24) & 0xFF) / 255.0f);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glBindVertexArray(0);
glUseProgram(0);
++font->currentGlyph;
}
void GUIFontDrawIconSize(const struct GUIFont* font, int x, int y, int w, int h, uint32_t color, enum GUIIcon icon) {
void GUIFontDrawIconSize(struct GUIFont* font, int x, int y, int w, int h, uint32_t color, enum GUIIcon icon) {
if (icon >= GUI_ICON_MAX) {
return;
}
@ -330,6 +408,32 @@ void GUIFontDrawIconSize(const struct GUIFont* font, int x, int y, int w, int h,
h = metric.height * 2;
}
if (font->currentGlyph >= MAX_GLYPHS) {
GUIFontDrawSubmit(font);
}
int offset = font->currentGlyph;
font->originData[offset][0] = x + w / 2 - metric.width;
font->originData[offset][1] = y + h / 2 - metric.height;
font->originData[offset][2] = 0;
font->glyphData[offset][0] = metric.x * 2;
font->glyphData[offset][1] = metric.y * 2 + 256;
font->dimsData[offset][0] = metric.width * 2;
font->dimsData[offset][1] = metric.height * 2;
font->transformData[0][offset][0] = w * 0.5f / metric.width;
font->transformData[0][offset][1] = 0.0f;
font->transformData[1][offset][0] = 0.0f;
font->transformData[1][offset][1] = h * 0.5f / metric.height;
font->colorData[offset][0] = (color & 0xFF) / 255.0f;
font->colorData[offset][1] = ((color >> 8) & 0xFF) / 255.0f;
font->colorData[offset][2] = ((color >> 16) & 0xFF) / 255.0f;
font->colorData[offset][3] = ((color >> 24) & 0xFF) / 255.0f;
++font->currentGlyph;
}
void GUIFontDrawSubmit(struct GUIFont* font) {
glUseProgram(font->program);
glBindVertexArray(font->vao);
glActiveTexture(GL_TEXTURE0);
@ -339,18 +443,40 @@ void GUIFontDrawIconSize(const struct GUIFont* font, int x, int y, int w, int h,
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glUniform1i(font->texLocation, 0);
glUniform2f(font->glyphLocation, metric.x * 2, metric.y * 2 + 256);
glUniform2f(font->dimsLocation, metric.width * 2, metric.height * 2);
glUniform3f(font->originLocation, x + w / 2 - metric.width, y + h / 2 - metric.height, 0);
glUniformMatrix2fv(font->transformLocation, 1, GL_FALSE, (float[4]) {w * 0.5f / metric.width, 0.0, 0.0, h * 0.5f / metric.height});
glBindBuffer(GL_ARRAY_BUFFER, font->originVbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 3 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(GLfloat) * 3 * font->currentGlyph, font->originData);
glBindBuffer(GL_ARRAY_BUFFER, font->glyphVbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 2 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(GLfloat) * 2 * font->currentGlyph, font->glyphData);
glBindBuffer(GL_ARRAY_BUFFER, font->dimsVbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 2 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(GLfloat) * 2 * font->currentGlyph, font->dimsData);
glBindBuffer(GL_ARRAY_BUFFER, font->transformVbo[0]);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 2 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(GLfloat) * 2 * font->currentGlyph, font->transformData[0]);
glBindBuffer(GL_ARRAY_BUFFER, font->transformVbo[1]);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 2 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(GLfloat) * 2 * font->currentGlyph, font->transformData[1]);
glBindBuffer(GL_ARRAY_BUFFER, font->colorVbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 4 * MAX_GLYPHS, NULL, GL_STREAM_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(GLfloat) * 4 * font->currentGlyph, font->colorData);
glUniform1f(font->cutoffLocation, 0.1f);
glUniform4f(font->colorLocation, 0.0, 0.0, 0.0, ((color >> 24) & 0xFF) / 128.0f);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glUniform3f(font->colorModulusLocation, 0.f, 0.f, 0.f);
glDrawArraysInstanced(GL_TRIANGLE_FAN, 0, 4, font->currentGlyph);
glUniform1f(font->cutoffLocation, 0.7f);
glUniform4f(font->colorLocation, ((color >> 16) & 0xFF) / 255.0f, ((color >> 8) & 0xFF) / 255.0f, (color & 0xFF) / 255.0f, ((color >> 24) & 0xFF) / 255.0f);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glUniform3f(font->colorModulusLocation, 1.f, 1.f, 1.f);
glDrawArraysInstanced(GL_TRIANGLE_FAN, 0, 4, font->currentGlyph);
font->currentGlyph = 0;
glBindVertexArray(0);
glUseProgram(0);

View File

@ -21,10 +21,15 @@
#define AUTO_INPUT 0x4E585031
#define SAMPLES 0x200
#define BUFFER_SIZE 0x1000
#define N_BUFFERS 4
#define ANALOG_DEADZONE 0x4000
#if (SAMPLES * 4) < 0x1000
#define BUFFER_SIZE 0x1000
#else
#define BUFFER_SIZE (SAMPLES * 4)
#endif
TimeType __nx_time_type = TimeType_UserSystemClock;
static EGLDisplay s_display;
@ -78,6 +83,7 @@ static GLuint colorLocation;
static GLuint tex;
static GLuint oldTex;
static struct GUIFont* font;
static color_t* frameBuffer;
static struct mAVStream stream;
static struct mSwitchRumble {
@ -88,7 +94,6 @@ static struct mSwitchRumble {
} rumble;
static struct mRotationSource rotation = {0};
static int audioBufferActive;
static struct GBAStereoSample audioBuffer[N_BUFFERS][SAMPLES] __attribute__((__aligned__(0x1000)));
static AudioOutBuffer audoutBuffer[N_BUFFERS];
static int enqueuedBuffers;
static bool frameLimiter = true;
@ -110,6 +115,8 @@ static float gyroZ = 0;
static float tiltX = 0;
static float tiltY = 0;
static struct GBAStereoSample audioBuffer[N_BUFFERS][BUFFER_SIZE / 4] __attribute__((__aligned__(0x1000)));
static enum ScreenMode {
SM_PA,
SM_AF,
@ -203,22 +210,22 @@ static uint32_t _pollInput(const struct mInputMap* map) {
HidAnalogStickState jspos = padGetStickPos(&pad, 0);
int l = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_LSTICK_LEFT));
int r = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_LSTICK_RIGHT));
int u = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_LSTICK_UP));
int d = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_LSTICK_DOWN));
int l = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(HidNpadButton_StickLLeft));
int r = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(HidNpadButton_StickLRight));
int u = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(HidNpadButton_StickLUp));
int d = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(HidNpadButton_StickLDown));
if (l == -1) {
l = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_DLEFT));
l = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(HidNpadButton_Left));
}
if (r == -1) {
r = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_DRIGHT));
r = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(HidNpadButton_Right));
}
if (u == -1) {
u = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_DUP));
u = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(HidNpadButton_Up));
}
if (d == -1) {
d = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_DDOWN));
d = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(HidNpadButton_Down));
}
if (jspos.x < -ANALOG_DEADZONE && l != -1) {
@ -247,6 +254,35 @@ static enum GUICursorState _pollCursor(unsigned* x, unsigned* y) {
return GUI_CURSOR_DOWN;
}
static void _updateRenderer(struct mGUIRunner* runner, bool gl) {
if (gl) {
runner->core->setVideoGLTex(runner->core, tex);
usePbo = false;
} else {
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
runner->core->setVideoBuffer(runner->core, frameBuffer, 256);
usePbo = true;
}
}
static int _audioWait(u64 timeout) {
AudioOutBuffer* releasedBuffers;
u32 nReleasedBuffers = 0;
Result rc;
if (timeout) {
rc = audoutWaitPlayFinish(&releasedBuffers, &nReleasedBuffers, timeout);
} else {
rc = audoutGetReleasedAudioOutBuffer(&releasedBuffers, &nReleasedBuffers);
}
if (R_FAILED(rc)) {
return 0;
}
enqueuedBuffers -= nReleasedBuffers;
return nReleasedBuffers;
}
static void _setup(struct mGUIRunner* runner) {
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_A, GBA_KEY_A);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_B, GBA_KEY_B);
@ -259,17 +295,11 @@ static void _setup(struct mGUIRunner* runner) {
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_L, GBA_KEY_L);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_R, GBA_KEY_R);
int fakeBool;
if (mCoreConfigGetIntValue(&runner->config, "hwaccelVideo", &fakeBool) && fakeBool && runner->core->supportsFeature(runner->core, mCORE_FEATURE_OPENGL)) {
runner->core->setVideoGLTex(runner->core, tex);
usePbo = false;
} else {
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
runner->core->setVideoBuffer(runner->core, frameBuffer, 256);
usePbo = true;
int fakeBool = false;
if (runner->core->supportsFeature(runner->core, mCORE_FEATURE_OPENGL)) {
mCoreConfigGetIntValue(&runner->config, "hwaccelVideo", &fakeBool);
}
_updateRenderer(runner, fakeBool);
runner->core->setPeripheral(runner->core, mPERIPH_RUMBLE, &rumble.d);
runner->core->setPeripheral(runner->core, mPERIPH_ROTATION, &rotation);
@ -322,9 +352,16 @@ static void _gameLoaded(struct mGUIRunner* runner) {
}
}
int scale;
if (mCoreConfigGetUIntValue(&runner->config, "videoScale", &scale)) {
runner->core->reloadConfigOption(runner->core, "videoScale", &runner->config);
if (runner->core->supportsFeature(runner->core, mCORE_FEATURE_OPENGL)) {
if (mCoreConfigGetIntValue(&runner->config, "hwaccelVideo", &fakeBool) && fakeBool == usePbo) {
_updateRenderer(runner, fakeBool);
runner->core->reloadConfigOption(runner->core, "hwaccelVideo", &runner->config);
}
unsigned scale;
if (mCoreConfigGetUIntValue(&runner->config, "videoScale", &scale)) {
runner->core->reloadConfigOption(runner->core, "videoScale", &runner->config);
}
}
rumble.up = 0;
@ -506,10 +543,7 @@ static void _setFrameLimiter(struct mGUIRunner* runner, bool limit) {
UNUSED(runner);
if (!frameLimiter && limit) {
while (enqueuedBuffers > 2) {
AudioOutBuffer* releasedBuffers;
u32 audoutNReleasedBuffers;
audoutWaitPlayFinish(&releasedBuffers, &audoutNReleasedBuffers, 100000000);
enqueuedBuffers -= audoutNReleasedBuffers;
_audioWait(100000000);
}
}
frameLimiter = limit;
@ -536,29 +570,25 @@ static bool _running(struct mGUIRunner* runner) {
static void _postAudioBuffer(struct mAVStream* stream, blip_t* left, blip_t* right) {
UNUSED(stream);
AudioOutBuffer* releasedBuffers;
u32 audoutNReleasedBuffers;
audoutGetReleasedAudioOutBuffer(&releasedBuffers, &audoutNReleasedBuffers);
enqueuedBuffers -= audoutNReleasedBuffers;
if (!frameLimiter && enqueuedBuffers >= N_BUFFERS) {
blip_clear(left);
blip_clear(right);
return;
}
if (enqueuedBuffers >= N_BUFFERS - 1 && R_SUCCEEDED(audoutWaitPlayFinish(&releasedBuffers, &audoutNReleasedBuffers, 10000000))) {
enqueuedBuffers -= audoutNReleasedBuffers;
_audioWait(0);
while (enqueuedBuffers >= N_BUFFERS - 1) {
if (!frameLimiter) {
blip_clear(left);
blip_clear(right);
return;
}
_audioWait(10000000);
}
if (enqueuedBuffers >= N_BUFFERS) {
blip_clear(left);
blip_clear(right);
return;
}
struct GBAStereoSample* samples = audioBuffer[audioBufferActive];
blip_read_samples(left, &samples[0].left, SAMPLES, true);
blip_read_samples(right, &samples[0].right, SAMPLES, true);
audoutAppendAudioOutBuffer(&audoutBuffer[audioBufferActive]);
audioBufferActive += 1;
++audioBufferActive;
audioBufferActive %= N_BUFFERS;
++enqueuedBuffers;
}
@ -640,6 +670,10 @@ static void _guiPrepare(void) {
glViewport(0, 1080 - vheight, vwidth, vheight);
}
static void _guiFinish(void) {
GUIFontDrawSubmit(font);
}
int main(int argc, char* argv[]) {
NWindow* window = nwindowGetDefault();
nwindowSetDimensions(window, 1920, 1080);
@ -651,7 +685,7 @@ int main(int argc, char* argv[]) {
audoutInitialize();
psmInitialize();
struct GUIFont* font = GUIFontCreate();
font = GUIFontCreate();
vmode = appletGetOperationMode();
if (vmode == AppletOperationMode_Console) {
@ -802,7 +836,7 @@ int main(int argc, char* argv[]) {
_drawStart, _drawEnd,
_pollInput, _pollCursor,
_batteryState,
_guiPrepare, NULL,
_guiPrepare, _guiFinish,
},
.keySources = (struct GUIInputKeys[]) {
{
@ -884,7 +918,7 @@ int main(int argc, char* argv[]) {
.nStates = 16
},
{
.title = "GPU-accelerated renderer (requires game reload)",
.title = "GPU-accelerated renderer",
.data = "hwaccelVideo",
.submenu = 0,
.state = 0,
@ -946,13 +980,13 @@ int main(int argc, char* argv[]) {
};
mGUIInit(&runner, "switch");
_mapKey(&runner.params.keyMap, AUTO_INPUT, KEY_A, GUI_INPUT_SELECT);
_mapKey(&runner.params.keyMap, AUTO_INPUT, KEY_B, GUI_INPUT_BACK);
_mapKey(&runner.params.keyMap, AUTO_INPUT, KEY_X, GUI_INPUT_CANCEL);
_mapKey(&runner.params.keyMap, AUTO_INPUT, KEY_DUP, GUI_INPUT_UP);
_mapKey(&runner.params.keyMap, AUTO_INPUT, KEY_DDOWN, GUI_INPUT_DOWN);
_mapKey(&runner.params.keyMap, AUTO_INPUT, KEY_DLEFT, GUI_INPUT_LEFT);
_mapKey(&runner.params.keyMap, AUTO_INPUT, KEY_DRIGHT, GUI_INPUT_RIGHT);
_mapKey(&runner.params.keyMap, AUTO_INPUT, HidNpadButton_A, GUI_INPUT_SELECT);
_mapKey(&runner.params.keyMap, AUTO_INPUT, HidNpadButton_B, GUI_INPUT_BACK);
_mapKey(&runner.params.keyMap, AUTO_INPUT, HidNpadButton_X, GUI_INPUT_CANCEL);
_mapKey(&runner.params.keyMap, AUTO_INPUT, HidNpadButton_Up, GUI_INPUT_UP);
_mapKey(&runner.params.keyMap, AUTO_INPUT, HidNpadButton_Down, GUI_INPUT_DOWN);
_mapKey(&runner.params.keyMap, AUTO_INPUT, HidNpadButton_Left, GUI_INPUT_LEFT);
_mapKey(&runner.params.keyMap, AUTO_INPUT, HidNpadButton_Right, GUI_INPUT_RIGHT);
audoutStartAudioOut();

View File

@ -84,12 +84,10 @@ void GUIFontIconMetrics(const struct GUIFont* font, enum GUIIcon icon, unsigned*
}
}
void GUIFontDrawGlyph(const struct GUIFont* font, int x, int y, uint32_t color, uint32_t glyph) {
void GUIFontDrawGlyph(struct GUIFont* font, int x, int y, uint32_t color, uint32_t glyph) {
color = (color >> 24) | (color << 8);
GXTexObj tex;
// Grumble grumble, libogc is bad about const-correctness
struct GUIFont* ncfont = font;
TPL_GetTexture(&ncfont->tdf, 0, &tex);
TPL_GetTexture(&font->tdf, 0, &tex);
GX_LoadTexObj(&tex, GX_TEXMAP0);
GX_SetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
@ -120,7 +118,7 @@ void GUIFontDrawGlyph(const struct GUIFont* font, int x, int y, uint32_t color,
GX_End();
}
void GUIFontDrawIcon(const struct GUIFont* font, int x, int y, enum GUIAlignment align, enum GUIOrientation orient, uint32_t color, enum GUIIcon icon) {
void GUIFontDrawIcon(struct GUIFont* font, int x, int y, enum GUIAlignment align, enum GUIOrientation orient, uint32_t color, enum GUIIcon icon) {
if (icon >= GUI_ICON_MAX) {
return;
}
@ -128,8 +126,7 @@ void GUIFontDrawIcon(const struct GUIFont* font, int x, int y, enum GUIAlignment
color = (color >> 24) | (color << 8);
GXTexObj tex;
struct GUIFont* ncfont = font;
TPL_GetTexture(&ncfont->iconsTdf, 0, &tex);
TPL_GetTexture(&font->iconsTdf, 0, &tex);
GX_LoadTexObj(&tex, GX_TEXMAP0);
GX_SetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
@ -198,7 +195,7 @@ void GUIFontDrawIcon(const struct GUIFont* font, int x, int y, enum GUIAlignment
GX_End();
}
void GUIFontDrawIconSize(const struct GUIFont* font, int x, int y, int w, int h, uint32_t color, enum GUIIcon icon) {
void GUIFontDrawIconSize(struct GUIFont* font, int x, int y, int w, int h, uint32_t color, enum GUIIcon icon) {
if (icon >= GUI_ICON_MAX) {
return;
}
@ -206,8 +203,7 @@ void GUIFontDrawIconSize(const struct GUIFont* font, int x, int y, int w, int h,
color = (color >> 24) | (color << 8);
GXTexObj tex;
struct GUIFont* ncfont = font;
TPL_GetTexture(&ncfont->iconsTdf, 0, &tex);
TPL_GetTexture(&font->iconsTdf, 0, &tex);
GX_LoadTexObj(&tex, GX_TEXMAP0);
GX_SetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);

View File

@ -26,7 +26,7 @@ unsigned GUIFontSpanWidth(const struct GUIFont* font, const char* text) {
return width;
}
void GUIFontPrint(const struct GUIFont* font, int x, int y, enum GUIAlignment align, uint32_t color, const char* text) {
void GUIFontPrint(struct GUIFont* font, int x, int y, enum GUIAlignment align, uint32_t color, const char* text) {
switch (align & GUI_ALIGN_HCENTER) {
case GUI_ALIGN_HCENTER:
x -= GUIFontSpanWidth(font, text) / 2;
@ -55,7 +55,7 @@ void GUIFontPrint(const struct GUIFont* font, int x, int y, enum GUIAlignment al
}
}
void GUIFontPrintf(const struct GUIFont* font, int x, int y, enum GUIAlignment align, uint32_t color, const char* text, ...) {
void GUIFontPrintf(struct GUIFont* font, int x, int y, enum GUIAlignment align, uint32_t color, const char* text, ...) {
char buffer[256];
va_list args;
va_start(args, text);