mirror of https://github.com/mgba-emu/mgba.git
Merge branch 'master' (early part) into medusa
This commit is contained in:
commit
c2d9a71f65
12
CHANGES
12
CHANGES
|
@ -44,29 +44,41 @@ Features:
|
|||
- Tool for converting scanned pictures of e-Reader cards to raw dotcode data
|
||||
- Options for muting when inactive, minimized, or for different players in multiplayer
|
||||
- Cheat code support in homebrew ports
|
||||
- Acclerometer and gyro support for controllers on PC
|
||||
- Support for combo "Super Game Boy Color" SGB + GBC ROM hacks
|
||||
- Support for 64 kiB SRAM saves used in some bootlegs
|
||||
- Discord Rich Presence now supports time elapsed
|
||||
- Additional scaling shaders
|
||||
Emulation fixes:
|
||||
- ARM7: Fix unsigned multiply timing
|
||||
- GB I/O: Fix incrementing SGB controller when P14 is low (fixes mgba.io/i/2202)
|
||||
- GB Memory: Add cursory cartridge open bus emulation (fixes mgba.io/i/2032)
|
||||
- GB Video: Render SGB border when unmasking with ATTR/PAL_SET (fixes mgba.io/i/2261)
|
||||
- GBA: Improve timing when not booting from BIOS
|
||||
- GBA I/O: Redo internal key input, enabling edge-based key IRQs
|
||||
- GBA Memory: Fix misaligned 32-bit I/O loads (fixes mgba.io/i/2307)
|
||||
- GBA SIO: Fix SI value for unattached MULTI mode
|
||||
- GBA Video: Fix backdrop color if DISPCNT is first set to 0 (fixes mgba.io/i/2260)
|
||||
- GBA Video: Don't iterate affine backgrounds when disabled
|
||||
- GBA Video: Delay enabling backgrounds in bitmap modes (fixes mgba.io/i/1668)
|
||||
Other fixes:
|
||||
- ARM Decoder: Fix decoding of lsl r0 (fixes mgba.io/i/2349)
|
||||
- Core: Don't attempt to restore rewind diffs past start of rewind
|
||||
- FFmpeg: Don't attempt to use YUV 4:2:0 for lossless videos (fixes mgba.io/i/2084)
|
||||
- GB Video: Fix memory leak when reseting SGB games
|
||||
- GBA: Fix out of bounds ROM accesses on patched ROMs smaller than 32 MiB
|
||||
- GBA: Fix maximum tile ID in caching for 256-color modes
|
||||
- Libretro: Fix crash when using Game Boy codes (fixes mgba.io/i/2281)
|
||||
- Qt: Fix corrupted savestate and fatal error text
|
||||
- Qt: Fix sprite compositing when sprite tiles go out of bounds (fixes mgba.io/i/2348)
|
||||
Misc:
|
||||
- Core: Suspend runloop when a core crashes
|
||||
- GBA I/O: Update KEYINPUT in internal I/O memory (fixes mgba.io/i/2235)
|
||||
- mGUI: Add margin to right-aligned menu text (fixes mgba.io/i/871)
|
||||
- Qt: Rearrange menus some
|
||||
- Qt: Clean up cheats dialog
|
||||
- Qt: Only set default controller bindings if loading fails (fixes mgba.io/i/799)
|
||||
- Wii: Add adjustable gyroscope settings (closes mgba.io/i/2245)
|
||||
|
||||
0.9.2: (2021-07-10)
|
||||
Emulation fixes:
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
CXX_GUARD_START
|
||||
|
||||
#ifndef DISABLE_THREADING
|
||||
#if __STDC_VERSION__ >= 201112L
|
||||
#if (__STDC_VERSION__ >= 201112L) && (__STDC_NO_THREADS__ != 1)
|
||||
#define ThreadLocal _Thread_local void*
|
||||
#define ThreadLocalInitKey(X)
|
||||
#define ThreadLocalSetKey(K, V) K = V
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
#define ARM_V_ADDITION(M, N, D) (!(ARM_SIGN((M) ^ (N))) && (ARM_SIGN((M) ^ (D))))
|
||||
#define ARM_V_SUBTRACTION(M, N, D) ((ARM_SIGN((M) ^ (N))) && (ARM_SIGN((M) ^ (D))))
|
||||
|
||||
#define ARM_WAIT_MUL(R, WAIT) \
|
||||
#define ARM_WAIT_SMUL(R, WAIT) \
|
||||
{ \
|
||||
int32_t wait = WAIT; \
|
||||
if ((R & 0xFFFFFF00) == 0xFFFFFF00 || !(R & 0xFFFFFF00)) { \
|
||||
|
@ -52,6 +52,21 @@
|
|||
currentCycles += cpu->memory.stall(cpu, wait); \
|
||||
}
|
||||
|
||||
#define ARM_WAIT_UMUL(R, WAIT) \
|
||||
{ \
|
||||
int32_t wait = WAIT; \
|
||||
if (!(R & 0xFFFFFF00)) { \
|
||||
wait += 1; \
|
||||
} else if (!(R & 0xFFFF0000)) { \
|
||||
wait += 2; \
|
||||
} else if (!(R & 0xFF000000)) { \
|
||||
wait += 3; \
|
||||
} else { \
|
||||
wait += 4; \
|
||||
} \
|
||||
currentCycles += cpu->memory.stall(cpu, wait); \
|
||||
}
|
||||
|
||||
#define ARM_STUB cpu->irqh.hitStub(cpu, opcode)
|
||||
#define ARM_ILL cpu->irqh.hitIllegal(cpu, opcode)
|
||||
|
||||
|
|
|
@ -85,7 +85,8 @@ struct GBA {
|
|||
struct mTimingEvent irqEvent;
|
||||
|
||||
uint32_t biosChecksum;
|
||||
int* keySource;
|
||||
uint16_t keysActive;
|
||||
uint16_t keysLast;
|
||||
struct mRotationSource* rotationSource;
|
||||
struct GBALuminanceSource* luminanceSource;
|
||||
struct mRTCSource* rtcSource;
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
#define ADDR_MODE_1_LSL \
|
||||
ADDR_MODE_1_SHIFT(LSL) \
|
||||
if (!info->op3.shifterImm) { \
|
||||
if ((info->operandFormat & ARM_OPERAND_SHIFT_IMMEDIATE_3) && !info->op3.shifterImm) { \
|
||||
info->operandFormat &= ~ARM_OPERAND_SHIFT_IMMEDIATE_3; \
|
||||
info->op3.shifterOp = ARM_SHIFT_NONE; \
|
||||
}
|
||||
|
|
|
@ -339,38 +339,38 @@ ATTRIBUTE_NOINLINE static void _neutralS(struct ARMCore* cpu, int32_t d) {
|
|||
DEFINE_ALU_INSTRUCTION_EX_ARM(NAME ## _ROR, S_BODY, _shiftROR, BODY) \
|
||||
DEFINE_ALU_INSTRUCTION_EX_ARM(NAME ## I, S_BODY, _immediate, BODY)
|
||||
|
||||
#define DEFINE_MULTIPLY_INSTRUCTION_EX_ARM(NAME, BODY, S_BODY) \
|
||||
#define DEFINE_MULTIPLY_INSTRUCTION_EX_ARM(NAME, BODY, S_BODY, SIGNED) \
|
||||
DEFINE_INSTRUCTION_ARM(NAME, \
|
||||
int rd = (opcode >> 16) & 0xF; \
|
||||
int rs = (opcode >> 8) & 0xF; \
|
||||
int rm = opcode & 0xF; \
|
||||
if (rd != ARM_PC) { \
|
||||
ARM_WAIT_MUL(cpu->gprs[rs], 0); \
|
||||
ARM_WAIT_ ## SIGNED ## MUL(cpu->gprs[rs], 0); \
|
||||
BODY; \
|
||||
S_BODY; \
|
||||
} \
|
||||
currentCycles += cpu->memory.activeNonseqCycles32 - cpu->memory.activeSeqCycles32)
|
||||
|
||||
#define DEFINE_MULTIPLY_INSTRUCTION_2_EX_ARM(NAME, BODY, S_BODY, WAIT) \
|
||||
#define DEFINE_MULTIPLY_INSTRUCTION_2_EX_ARM(NAME, BODY, S_BODY, SIGNED, WAIT) \
|
||||
DEFINE_INSTRUCTION_ARM(NAME, \
|
||||
int rd = (opcode >> 12) & 0xF; \
|
||||
int rdHi = (opcode >> 16) & 0xF; \
|
||||
int rs = (opcode >> 8) & 0xF; \
|
||||
int rm = opcode & 0xF; \
|
||||
if (rdHi != ARM_PC && rd != ARM_PC) { \
|
||||
ARM_WAIT_MUL(cpu->gprs[rs], WAIT); \
|
||||
ARM_WAIT_ ## SIGNED ## MUL(cpu->gprs[rs], WAIT); \
|
||||
BODY; \
|
||||
S_BODY; \
|
||||
} \
|
||||
currentCycles += cpu->memory.activeNonseqCycles32 - cpu->memory.activeSeqCycles32)
|
||||
|
||||
#define DEFINE_MULTIPLY_INSTRUCTION_ARM(NAME, BODY, S_BODY) \
|
||||
DEFINE_MULTIPLY_INSTRUCTION_EX_ARM(NAME, BODY, ) \
|
||||
DEFINE_MULTIPLY_INSTRUCTION_EX_ARM(NAME ## S, BODY, S_BODY)
|
||||
#define DEFINE_MULTIPLY_INSTRUCTION_ARM(NAME, BODY, S_BODY, SIGNED) \
|
||||
DEFINE_MULTIPLY_INSTRUCTION_EX_ARM(NAME, BODY, , SIGNED) \
|
||||
DEFINE_MULTIPLY_INSTRUCTION_EX_ARM(NAME ## S, BODY, S_BODY, SIGNED)
|
||||
|
||||
#define DEFINE_MULTIPLY_INSTRUCTION_2_ARM(NAME, BODY, S_BODY, WAIT) \
|
||||
DEFINE_MULTIPLY_INSTRUCTION_2_EX_ARM(NAME, BODY, , WAIT) \
|
||||
DEFINE_MULTIPLY_INSTRUCTION_2_EX_ARM(NAME ## S, BODY, S_BODY, WAIT)
|
||||
#define DEFINE_MULTIPLY_INSTRUCTION_2_ARM(NAME, BODY, S_BODY, SIGNED, WAIT) \
|
||||
DEFINE_MULTIPLY_INSTRUCTION_2_EX_ARM(NAME, BODY, , SIGNED, WAIT) \
|
||||
DEFINE_MULTIPLY_INSTRUCTION_2_EX_ARM(NAME ## S, BODY, S_BODY, SIGNED, WAIT)
|
||||
|
||||
#define DEFINE_MULTIPLY_INSTRUCTION_3_ARM(NAME, BODY) \
|
||||
DEFINE_INSTRUCTION_ARM(NAME, \
|
||||
|
@ -588,15 +588,15 @@ DEFINE_ALU_INSTRUCTION_S_ONLY_ARM(TST, ARM_NEUTRAL_S(n, cpu->shifterOperand, alu
|
|||
|
||||
// Begin multiply definitions
|
||||
|
||||
DEFINE_MULTIPLY_INSTRUCTION_2_ARM(MLA, cpu->gprs[rdHi] = cpu->gprs[rm] * cpu->gprs[rs] + cpu->gprs[rd], ARM_NEUTRAL_S(, , cpu->gprs[rdHi]), 1)
|
||||
DEFINE_MULTIPLY_INSTRUCTION_ARM(MUL, cpu->gprs[rd] = cpu->gprs[rm] * cpu->gprs[rs], ARM_NEUTRAL_S(cpu->gprs[rm], cpu->gprs[rs], cpu->gprs[rd]))
|
||||
DEFINE_MULTIPLY_INSTRUCTION_2_ARM(MLA, cpu->gprs[rdHi] = cpu->gprs[rm] * cpu->gprs[rs] + cpu->gprs[rd], ARM_NEUTRAL_S(, , cpu->gprs[rdHi]), S, 1)
|
||||
DEFINE_MULTIPLY_INSTRUCTION_ARM(MUL, cpu->gprs[rd] = cpu->gprs[rm] * cpu->gprs[rs], ARM_NEUTRAL_S(cpu->gprs[rm], cpu->gprs[rs], cpu->gprs[rd]), S)
|
||||
|
||||
DEFINE_MULTIPLY_INSTRUCTION_2_ARM(SMLAL,
|
||||
int64_t d = ((int64_t) cpu->gprs[rm]) * ((int64_t) cpu->gprs[rs]) + ((uint32_t) cpu->gprs[rd]);
|
||||
int32_t dHi = cpu->gprs[rdHi] + (d >> 32);
|
||||
cpu->gprs[rd] = d;
|
||||
cpu->gprs[rdHi] = dHi;,
|
||||
ARM_NEUTRAL_HI_S(cpu->gprs[rd], dHi), 2)
|
||||
ARM_NEUTRAL_HI_S(cpu->gprs[rd], dHi), S, 2)
|
||||
|
||||
DEFINE_MULTIPLY_INSTRUCTION_XY_ARM(SMLA,
|
||||
int32_t dn = cpu->gprs[rn]; \
|
||||
|
@ -618,20 +618,20 @@ DEFINE_MULTIPLY_INSTRUCTION_2_ARM(SMULL,
|
|||
int64_t d = ((int64_t) cpu->gprs[rm]) * ((int64_t) cpu->gprs[rs]);
|
||||
cpu->gprs[rd] = d;
|
||||
cpu->gprs[rdHi] = d >> 32;,
|
||||
ARM_NEUTRAL_HI_S(cpu->gprs[rd], cpu->gprs[rdHi]), 1)
|
||||
ARM_NEUTRAL_HI_S(cpu->gprs[rd], cpu->gprs[rdHi]), S, 1)
|
||||
|
||||
DEFINE_MULTIPLY_INSTRUCTION_2_ARM(UMLAL,
|
||||
uint64_t d = ARM_UXT_64(cpu->gprs[rm]) * ARM_UXT_64(cpu->gprs[rs]) + ((uint32_t) cpu->gprs[rd]);
|
||||
uint32_t dHi = ((uint32_t) cpu->gprs[rdHi]) + (d >> 32);
|
||||
cpu->gprs[rd] = d;
|
||||
cpu->gprs[rdHi] = dHi;,
|
||||
ARM_NEUTRAL_HI_S(cpu->gprs[rd], dHi), 2)
|
||||
ARM_NEUTRAL_HI_S(cpu->gprs[rd], dHi), U, 2)
|
||||
|
||||
DEFINE_MULTIPLY_INSTRUCTION_2_ARM(UMULL,
|
||||
uint64_t d = ARM_UXT_64(cpu->gprs[rm]) * ARM_UXT_64(cpu->gprs[rs]);
|
||||
cpu->gprs[rd] = d;
|
||||
cpu->gprs[rdHi] = d >> 32;,
|
||||
ARM_NEUTRAL_HI_S(cpu->gprs[rd], cpu->gprs[rdHi]), 1)
|
||||
ARM_NEUTRAL_HI_S(cpu->gprs[rd], cpu->gprs[rdHi]), U, 1)
|
||||
|
||||
// End multiply definitions
|
||||
|
||||
|
|
|
@ -232,7 +232,7 @@ DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(NEG, THUMB_SUBTRACTION(cpu->gprs[rd], 0, cp
|
|||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(CMP2, int32_t aluOut = cpu->gprs[rd] - cpu->gprs[rn]; THUMB_SUBTRACTION_S(cpu->gprs[rd], cpu->gprs[rn], aluOut))
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(CMN, int32_t aluOut = cpu->gprs[rd] + cpu->gprs[rn]; THUMB_ADDITION_S(cpu->gprs[rd], cpu->gprs[rn], aluOut))
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ORR, cpu->gprs[rd] = cpu->gprs[rd] | cpu->gprs[rn]; THUMB_NEUTRAL_S( , , cpu->gprs[rd]))
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(MUL, ARM_WAIT_MUL(cpu->gprs[rd], 0); cpu->gprs[rd] *= cpu->gprs[rn]; THUMB_NEUTRAL_S( , , cpu->gprs[rd]); currentCycles += cpu->memory.activeNonseqCycles16 - cpu->memory.activeSeqCycles16)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(MUL, ARM_WAIT_SMUL(cpu->gprs[rd], 0); cpu->gprs[rd] *= cpu->gprs[rn]; THUMB_NEUTRAL_S( , , cpu->gprs[rd]); currentCycles += cpu->memory.activeNonseqCycles16 - cpu->memory.activeSeqCycles16)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(BIC, cpu->gprs[rd] = cpu->gprs[rd] & ~cpu->gprs[rn]; THUMB_NEUTRAL_S( , , cpu->gprs[rd]))
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(MVN, cpu->gprs[rd] = ~cpu->gprs[rn]; THUMB_NEUTRAL_S( , , cpu->gprs[rd]))
|
||||
|
||||
|
|
|
@ -72,6 +72,8 @@ static void _gdbStubEntered(struct mDebugger* debugger, enum mDebuggerEntryReaso
|
|||
case WATCHPOINT_RW:
|
||||
type = "awatch";
|
||||
break;
|
||||
case WATCHPOINT_CHANGE:
|
||||
break;
|
||||
}
|
||||
snprintf(stub->outgoing, GDB_STUB_MAX_LINE - 4, "T%02x%s:%08x;", SIGTRAP, type, info->address);
|
||||
} else {
|
||||
|
@ -629,6 +631,7 @@ size_t _parseGDBMessage(struct GDBStub* stub, const char* message) {
|
|||
_readGPRs(stub, message);
|
||||
break;
|
||||
case 'H':
|
||||
case 'T':
|
||||
// This is faked because we only have one thread
|
||||
strncpy(stub->outgoing, "OK", GDB_STUB_MAX_LINE - 4);
|
||||
_sendMessage(stub);
|
||||
|
|
|
@ -95,6 +95,9 @@ static bool _testExtensions(const char* name) {
|
|||
if (!strncmp(ext, "ini", PATH_MAX)) {
|
||||
return false;
|
||||
}
|
||||
if (!strncmp(ext, "cheats", PATH_MAX)) {
|
||||
return false;
|
||||
}
|
||||
if (!strncmp(ext, "ss", 2)) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -150,7 +150,6 @@ struct GBACore {
|
|||
#ifndef DISABLE_THREADING
|
||||
struct mVideoThreadProxy threadProxy;
|
||||
#endif
|
||||
int keys;
|
||||
struct mCPUComponent* components[CPU_COMPONENT_MAX];
|
||||
const struct Configuration* overrides;
|
||||
struct mDebuggerPlatform* debuggerPlatform;
|
||||
|
@ -209,9 +208,6 @@ static bool _GBACoreInit(struct mCore* core) {
|
|||
gbacore->proxyRenderer.logger = NULL;
|
||||
#endif
|
||||
|
||||
gbacore->keys = 0;
|
||||
gba->keySource = &gbacore->keys;
|
||||
|
||||
#if !defined(MINIMAL_CORE) || MINIMAL_CORE < 2
|
||||
mDirectorySetInit(&core->dirs);
|
||||
#endif
|
||||
|
@ -718,20 +714,20 @@ static bool _GBACoreSaveState(struct mCore* core, void* state) {
|
|||
}
|
||||
|
||||
static void _GBACoreSetKeys(struct mCore* core, uint32_t keys) {
|
||||
struct GBACore* gbacore = (struct GBACore*) core;
|
||||
gbacore->keys = keys;
|
||||
GBATestKeypadIRQ(core->board);
|
||||
struct GBA* gba = core->board;
|
||||
gba->keysActive = keys;
|
||||
GBATestKeypadIRQ(gba);
|
||||
}
|
||||
|
||||
static void _GBACoreAddKeys(struct mCore* core, uint32_t keys) {
|
||||
struct GBACore* gbacore = (struct GBACore*) core;
|
||||
gbacore->keys |= keys;
|
||||
GBATestKeypadIRQ(core->board);
|
||||
struct GBA* gba = core->board;
|
||||
gba->keysActive |= keys;
|
||||
GBATestKeypadIRQ(gba);
|
||||
}
|
||||
|
||||
static void _GBACoreClearKeys(struct mCore* core, uint32_t keys) {
|
||||
struct GBACore* gbacore = (struct GBACore*) core;
|
||||
gbacore->keys &= ~keys;
|
||||
struct GBA* gba = core->board;
|
||||
gba->keysActive &= ~keys;
|
||||
}
|
||||
|
||||
static void _GBACoreSetCursorLocation(struct mCore* core, int x, int y) {
|
||||
|
|
|
@ -90,7 +90,8 @@ static void GBAInit(void* cpu, struct mCPUComponent* component) {
|
|||
|
||||
GBAHardwareInit(&gba->memory.hw, NULL);
|
||||
|
||||
gba->keySource = 0;
|
||||
gba->keysActive = 0;
|
||||
gba->keysLast = 0;
|
||||
gba->rotationSource = 0;
|
||||
gba->luminanceSource = 0;
|
||||
gba->rtcSource = 0;
|
||||
|
@ -876,18 +877,22 @@ void GBAFrameEnded(struct GBA* gba) {
|
|||
}
|
||||
|
||||
void GBATestKeypadIRQ(struct GBA* gba) {
|
||||
if (gba->keysActive == gba->keysLast) {
|
||||
return;
|
||||
}
|
||||
uint16_t keycnt = gba->memory.io[REG_KEYCNT >> 1];
|
||||
if (!(keycnt & 0x4000)) {
|
||||
return;
|
||||
}
|
||||
int isAnd = keycnt & 0x8000;
|
||||
if (!gba->keySource) {
|
||||
// TODO?
|
||||
return;
|
||||
}
|
||||
|
||||
keycnt &= 0x3FF;
|
||||
uint16_t keyInput = *gba->keySource & keycnt;
|
||||
uint16_t keyInput = gba->keysActive & keycnt;
|
||||
uint16_t lastInput = gba->keysLast & keycnt;
|
||||
gba->keysLast = gba->keysActive;
|
||||
if (keyInput == lastInput) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isAnd && keycnt == keyInput) {
|
||||
GBARaiseIRQ(gba, IRQ_KEYPAD, 0);
|
||||
|
|
30
src/gba/io.c
30
src/gba/io.c
|
@ -743,28 +743,24 @@ uint16_t GBAIORead(struct GBA* gba, uint32_t address) {
|
|||
callbacks->keysRead(callbacks->context);
|
||||
}
|
||||
}
|
||||
uint16_t input = 0;
|
||||
if (gba->keyCallback) {
|
||||
input = gba->keyCallback->readKeys(gba->keyCallback);
|
||||
if (gba->keySource) {
|
||||
*gba->keySource = input;
|
||||
gba->keysActive = gba->keyCallback->readKeys(gba->keyCallback);
|
||||
}
|
||||
uint16_t input = gba->keysActive;
|
||||
if (!gba->allowOpposingDirections) {
|
||||
unsigned rl = input & 0x030;
|
||||
unsigned ud = input & 0x0C0;
|
||||
input &= 0x30F;
|
||||
if (rl != 0x030) {
|
||||
input |= rl;
|
||||
}
|
||||
} else if (gba->keySource) {
|
||||
input = *gba->keySource;
|
||||
if (!gba->allowOpposingDirections) {
|
||||
unsigned rl = input & 0x030;
|
||||
unsigned ud = input & 0x0C0;
|
||||
input &= 0x30F;
|
||||
if (rl != 0x030) {
|
||||
input |= rl;
|
||||
}
|
||||
if (ud != 0x0C0) {
|
||||
input |= ud;
|
||||
}
|
||||
if (ud != 0x0C0) {
|
||||
input |= ud;
|
||||
}
|
||||
}
|
||||
return 0x3FF ^ input;
|
||||
gba->memory.io[address >> 1] = 0x3FF ^ input;
|
||||
}
|
||||
break;
|
||||
case REG_SIOCNT:
|
||||
return gba->sio.siocnt;
|
||||
case REG_RCNT:
|
||||
|
|
|
@ -381,7 +381,7 @@ static void GBASetActiveRegion(struct ARMCore* cpu, uint32_t address) {
|
|||
wait += waitstatesRegion[REGION_WORKING_RAM];
|
||||
|
||||
#define LOAD_WORKING_IRAM LOAD_32(value, address & (SIZE_WORKING_IRAM - 4), memory->iwram);
|
||||
#define LOAD_IO value = GBAIORead(gba, address & OFFSET_MASK & ~2) | (GBAIORead(gba, (address & OFFSET_MASK) | 2) << 16);
|
||||
#define LOAD_IO value = GBAIORead(gba, address & OFFSET_MASK & ~3) | (GBAIORead(gba, (address & OFFSET_MASK & ~1) | 2) << 16);
|
||||
|
||||
#define LOAD_PALETTE_RAM \
|
||||
LOAD_32(value, address & (SIZE_PALETTE_RAM - 4), gba->video.palette); \
|
||||
|
|
|
@ -25,10 +25,10 @@ void GBAVideoCacheInit(struct mCacheSet* cache) {
|
|||
|
||||
sysconfig = mTileCacheSystemInfoSetPaletteBPP(sysconfig, 3); // 2^(2^3) = 256 entries
|
||||
sysconfig = mTileCacheSystemInfoSetPaletteCount(sysconfig, 0); // 1 palettes
|
||||
sysconfig = mTileCacheSystemInfoSetMaxTiles(sysconfig, 2048);
|
||||
sysconfig = mTileCacheSystemInfoSetMaxTiles(sysconfig, 1024);
|
||||
mTileCacheConfigureSystem(mTileCacheSetGetPointer(&cache->tiles, 1), sysconfig, 0, 0);
|
||||
mTileCacheConfigure(mTileCacheSetGetPointer(&cache->tiles, 1), config);
|
||||
sysconfig = mTileCacheSystemInfoSetMaxTiles(sysconfig, 1024);
|
||||
sysconfig = mTileCacheSystemInfoSetMaxTiles(sysconfig, 512);
|
||||
mTileCacheConfigureSystem(mTileCacheSetGetPointer(&cache->tiles, 3), sysconfig, 0x10000, 0x100);
|
||||
mTileCacheConfigure(mTileCacheSetGetPointer(&cache->tiles, 3), config);
|
||||
|
||||
|
|
|
@ -1414,7 +1414,7 @@ void GBAVideoGLRendererDrawScanline(struct GBAVideoRenderer* renderer, int y) {
|
|||
if (y == 0) {
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
glClearColor(0, 0, 0, 0);
|
||||
#ifdef BUILD_GLES3
|
||||
#ifdef GL_GLES_PROTOTYPES
|
||||
glClearDepthf(1.f);
|
||||
#else
|
||||
glClearDepth(1);
|
||||
|
@ -1439,10 +1439,14 @@ void GBAVideoGLRendererDrawScanline(struct GBAVideoRenderer* renderer, int y) {
|
|||
}
|
||||
|
||||
if (GBARegisterDISPCNTGetMode(glRenderer->dispcnt) != 0) {
|
||||
glRenderer->bg[2].affine.sx += glRenderer->bg[2].affine.dmx;
|
||||
glRenderer->bg[2].affine.sy += glRenderer->bg[2].affine.dmy;
|
||||
glRenderer->bg[3].affine.sx += glRenderer->bg[3].affine.dmx;
|
||||
glRenderer->bg[3].affine.sy += glRenderer->bg[3].affine.dmy;
|
||||
if (glRenderer->bg[2].enabled == 4) {
|
||||
glRenderer->bg[2].affine.sx += glRenderer->bg[2].affine.dmx;
|
||||
glRenderer->bg[2].affine.sy += glRenderer->bg[2].affine.dmy;
|
||||
}
|
||||
if (glRenderer->bg[3].enabled == 4) {
|
||||
glRenderer->bg[3].affine.sx += glRenderer->bg[3].affine.dmx;
|
||||
glRenderer->bg[3].affine.sy += glRenderer->bg[3].affine.dmy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -563,10 +563,14 @@ static void GBAVideoSoftwareRendererDrawScanline(struct GBAVideoRenderer* render
|
|||
|
||||
if (!dirty) {
|
||||
if (GBARegisterDISPCNTGetMode(softwareRenderer->dispcnt) != 0) {
|
||||
softwareRenderer->bg[2].sx += softwareRenderer->bg[2].dmx;
|
||||
softwareRenderer->bg[2].sy += softwareRenderer->bg[2].dmy;
|
||||
softwareRenderer->bg[3].sx += softwareRenderer->bg[3].dmx;
|
||||
softwareRenderer->bg[3].sy += softwareRenderer->bg[3].dmy;
|
||||
if (softwareRenderer->bg[2].enabled == 4) {
|
||||
softwareRenderer->bg[2].sx += softwareRenderer->bg[2].dmx;
|
||||
softwareRenderer->bg[2].sy += softwareRenderer->bg[2].dmy;
|
||||
}
|
||||
if (softwareRenderer->bg[3].enabled == 4) {
|
||||
softwareRenderer->bg[3].sx += softwareRenderer->bg[3].dmx;
|
||||
softwareRenderer->bg[3].sy += softwareRenderer->bg[3].dmy;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -645,25 +649,29 @@ static void GBAVideoSoftwareRendererDrawScanline(struct GBAVideoRenderer* render
|
|||
GBAVideoSoftwareRendererPostprocessBuffer(softwareRenderer);
|
||||
|
||||
if (GBARegisterDISPCNTGetMode(softwareRenderer->dispcnt) != 0) {
|
||||
softwareRenderer->bg[2].sx += softwareRenderer->bg[2].dmx;
|
||||
softwareRenderer->bg[2].sy += softwareRenderer->bg[2].dmy;
|
||||
softwareRenderer->bg[3].sx += softwareRenderer->bg[3].dmx;
|
||||
softwareRenderer->bg[3].sy += softwareRenderer->bg[3].dmy;
|
||||
if (softwareRenderer->bg[2].enabled == 4) {
|
||||
softwareRenderer->bg[2].sx += softwareRenderer->bg[2].dmx;
|
||||
softwareRenderer->bg[2].sy += softwareRenderer->bg[2].dmy;
|
||||
}
|
||||
if (softwareRenderer->bg[3].enabled == 4) {
|
||||
softwareRenderer->bg[3].sx += softwareRenderer->bg[3].dmx;
|
||||
softwareRenderer->bg[3].sy += softwareRenderer->bg[3].dmy;
|
||||
}
|
||||
}
|
||||
|
||||
if (softwareRenderer->bg[0].enabled > 0 && softwareRenderer->bg[0].enabled < 4) {
|
||||
if (softwareRenderer->bg[0].enabled != 0 && softwareRenderer->bg[0].enabled < 4) {
|
||||
++softwareRenderer->bg[0].enabled;
|
||||
DIRTY_SCANLINE(softwareRenderer, y);
|
||||
}
|
||||
if (softwareRenderer->bg[1].enabled > 0 && softwareRenderer->bg[1].enabled < 4) {
|
||||
if (softwareRenderer->bg[1].enabled != 0 && softwareRenderer->bg[1].enabled < 4) {
|
||||
++softwareRenderer->bg[1].enabled;
|
||||
DIRTY_SCANLINE(softwareRenderer, y);
|
||||
}
|
||||
if (softwareRenderer->bg[2].enabled > 0 && softwareRenderer->bg[2].enabled < 4) {
|
||||
if (softwareRenderer->bg[2].enabled != 0 && softwareRenderer->bg[2].enabled < 4) {
|
||||
++softwareRenderer->bg[2].enabled;
|
||||
DIRTY_SCANLINE(softwareRenderer, y);
|
||||
}
|
||||
if (softwareRenderer->bg[3].enabled > 0 && softwareRenderer->bg[3].enabled < 4) {
|
||||
if (softwareRenderer->bg[3].enabled != 0 && softwareRenderer->bg[3].enabled < 4) {
|
||||
++softwareRenderer->bg[3].enabled;
|
||||
DIRTY_SCANLINE(softwareRenderer, y);
|
||||
}
|
||||
|
@ -741,14 +749,22 @@ static void GBAVideoSoftwareRendererPutPixels(struct GBAVideoRenderer* renderer,
|
|||
static void _enableBg(struct GBAVideoSoftwareRenderer* renderer, int bg, bool active) {
|
||||
int wasActive = renderer->bg[bg].enabled;
|
||||
if (!active) {
|
||||
renderer->bg[bg].enabled = 0;
|
||||
if (renderer->nextY == 0 || (wasActive > 0 && wasActive < 4)) {
|
||||
renderer->bg[bg].enabled = 0;
|
||||
} else if (wasActive == 4) {
|
||||
renderer->bg[bg].enabled = -2;
|
||||
}
|
||||
} else if (!wasActive && active) {
|
||||
if (renderer->nextY == 0 || GBARegisterDISPCNTGetMode(renderer->dispcnt) > 2) {
|
||||
if (renderer->nextY == 0) {
|
||||
// TODO: Investigate in more depth how switching background works in different modes
|
||||
renderer->bg[bg].enabled = 4;
|
||||
} else if (GBARegisterDISPCNTGetMode(renderer->dispcnt) > 2) {
|
||||
renderer->bg[bg].enabled = 2;
|
||||
} else {
|
||||
renderer->bg[bg].enabled = 1;
|
||||
}
|
||||
} else if (wasActive < 0 && active) {
|
||||
renderer->bg[bg].enabled = 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -462,6 +462,8 @@ static void _GBASIOLockstepNodeProcessEvents(struct mTiming* timing, void* user,
|
|||
node->eventDiff = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (node->nextEvent <= 0) {
|
||||
if (!node->id) {
|
||||
|
|
|
@ -23,10 +23,10 @@
|
|||
#define CXX_GUARD_END
|
||||
|
||||
#define PYCPARSE
|
||||
#define va_list void*
|
||||
|
||||
typedef int... time_t;
|
||||
typedef int... off_t;
|
||||
typedef ... va_list;
|
||||
typedef ...* png_structp;
|
||||
typedef ...* png_infop;
|
||||
typedef ...* png_unknown_chunkp;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<item>
|
||||
<widget class="QLabel" name="text">
|
||||
<property name="text">
|
||||
<string>{text}</string>
|
||||
<string notr="true">{text}</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
|
@ -30,7 +30,7 @@
|
|||
<item>
|
||||
<widget class="QLabel" name="details">
|
||||
<property name="text">
|
||||
<string>{details}</string>
|
||||
<string notr="true">{details}</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
@ -131,6 +131,7 @@ QImage AssetView::compositeMap(int map, mMapCacheEntry* mapStatus) {
|
|||
|
||||
QImage AssetView::compositeObj(const ObjInfo& objInfo) {
|
||||
mTileCache* tileCache = mTileCacheSetGetPointer(&m_cacheSet->tiles, objInfo.paletteSet);
|
||||
unsigned maxTiles = mTileCacheSystemInfoGetMaxTiles(tileCache->sysConfig);
|
||||
const color_t* rawPalette = mTileCacheGetPalette(tileCache, objInfo.paletteId);
|
||||
unsigned colors = 1 << objInfo.bits;
|
||||
QVector<QRgb> palette;
|
||||
|
@ -142,10 +143,11 @@ QImage AssetView::compositeObj(const ObjInfo& objInfo) {
|
|||
|
||||
QImage image = QImage(QSize(objInfo.width * 8, objInfo.height * 8), QImage::Format_Indexed8);
|
||||
image.setColorTable(palette);
|
||||
image.fill(0);
|
||||
uchar* bits = image.bits();
|
||||
unsigned t = objInfo.tile;
|
||||
for (unsigned y = 0; y < objInfo.height; ++y) {
|
||||
for (unsigned x = 0; x < objInfo.width; ++x, ++t) {
|
||||
for (unsigned y = 0; y < objInfo.height && t < maxTiles; ++y) {
|
||||
for (unsigned x = 0; x < objInfo.width && t < maxTiles; ++x, ++t) {
|
||||
compositeTile(static_cast<const void*>(mTileCacheGetVRAM(tileCache, t)), bits, objInfo.width * 8, x * 8, y * 8, objInfo.bits);
|
||||
}
|
||||
t += objInfo.stride - objInfo.width;
|
||||
|
|
|
@ -183,14 +183,17 @@ CoreController::CoreController(mCore* core, QObject* parent)
|
|||
return;
|
||||
}
|
||||
}
|
||||
message = QString().vsprintf(format, args);
|
||||
va_list argc;
|
||||
va_copy(argc, args);
|
||||
message = QString().vsprintf(format, argc);
|
||||
va_end(argc);
|
||||
QMetaObject::invokeMethod(controller, "statusPosted", Q_ARG(const QString&, message));
|
||||
}
|
||||
message = QString().vsprintf(format, args);
|
||||
QMetaObject::invokeMethod(controller, "logPosted", Q_ARG(int, level), Q_ARG(int, category), Q_ARG(const QString&, message));
|
||||
if (level == mLOG_FATAL) {
|
||||
mCoreThreadMarkCrashed(controller->thread());
|
||||
QMetaObject::invokeMethod(controller, "crashed", Q_ARG(const QString&, QString().vsprintf(format, args)));
|
||||
QMetaObject::invokeMethod(controller, "crashed", Q_ARG(const QString&, message));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="name">
|
||||
<property name="text">
|
||||
<string>{NAME}</string>
|
||||
<string notr="true">{NAME}</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
|
@ -50,7 +50,7 @@
|
|||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="title">
|
||||
<property name="text">
|
||||
<string>{TITLE}</string>
|
||||
<string notr="true">{TITLE}</string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||
|
@ -67,7 +67,7 @@
|
|||
<item row="2" column="1">
|
||||
<widget class="QLabel" name="id">
|
||||
<property name="text">
|
||||
<string>{ID}</string>
|
||||
<string notr="true">{ID}</string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||
|
@ -84,7 +84,7 @@
|
|||
<item row="3" column="1">
|
||||
<widget class="QLabel" name="size">
|
||||
<property name="text">
|
||||
<string>{SIZE}</string>
|
||||
<string notr="true">{SIZE}</string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||
|
@ -101,7 +101,7 @@
|
|||
<item row="4" column="1">
|
||||
<widget class="QLabel" name="crc">
|
||||
<property name="text">
|
||||
<string>{CRC}</string>
|
||||
<string notr="true">{CRC}</string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||
|
|
|
@ -336,7 +336,8 @@ SettingsView::SettingsView(ConfigController* controller, InputController* inputC
|
|||
}
|
||||
});
|
||||
|
||||
m_ui.languages->setItemData(0, QLocale("en"));
|
||||
QLocale englishLocale("en");
|
||||
m_ui.languages->addItem(englishLocale.nativeLanguageName(), englishLocale);
|
||||
QDir ts(":/translations/");
|
||||
for (auto name : ts.entryList()) {
|
||||
if (!name.endsWith(".qm") || !name.startsWith(binaryName)) {
|
||||
|
@ -651,7 +652,7 @@ void SettingsView::updateConfig() {
|
|||
emit biosLoaded(mPLATFORM_GBA, m_ui.gbaBios->text());
|
||||
}
|
||||
|
||||
void SettingsView::reloadConfig() {
|
||||
void SettingsView::reloadConfig() {
|
||||
loadSetting("bios", m_ui.gbaBios);
|
||||
loadSetting("gba.bios", m_ui.gbaBios);
|
||||
loadSetting("gb.bios", m_ui.gbBios);
|
||||
|
@ -825,7 +826,7 @@ void SettingsView::reloadConfig() {
|
|||
} else if (multiplayerAudio == QLatin1String("active")) {
|
||||
m_ui.multiplayerAudioActive->setChecked(true);
|
||||
} else {
|
||||
m_ui.multiplayerAudioAll->setChecked(true);
|
||||
m_ui.multiplayerAudioAll->setChecked(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -523,13 +523,7 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="languages">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>English</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
<widget class="QComboBox" name="languages"/>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="Line" name="line_10">
|
||||
|
|
|
@ -58,16 +58,6 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
|
|||
<source>An update is available</source>
|
||||
<translation>Ein Update ist verfügbar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation>{text}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation>{details}</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1255,22 +1245,22 @@ Download-Größe: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation>Stabil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation>Entwicklung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation>Unbekannt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation>(keiner)</translation>
|
||||
</message>
|
||||
|
@ -1321,27 +1311,27 @@ Download-Größe: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Fehler beim Öffnen der Speicherdatei: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Fehler beim Öffnen der Spieldatei: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can'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="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<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="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Konnte Snapshot-Datei %1 nicht zum Schreiben öffnen</translation>
|
||||
</message>
|
||||
|
@ -4990,51 +4980,26 @@ Download-Größe: %3</translation>
|
|||
<source>Game name:</source>
|
||||
<translation>Spielname:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation>{NAME}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation>Interner Name:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation>{TITLE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation>Spiele-ID:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation>{ID}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation>Dateigröße:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation>{SIZE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation>CRC32:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation>{CRC}</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5582,11 +5547,6 @@ Download-Größe: %3</translation>
|
|||
<source>Language</source>
|
||||
<translation>Sprache</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation>Englisch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="552"/>
|
||||
<source>List view</source>
|
||||
|
|
|
@ -41,17 +41,7 @@ Game Boy Advance es una marca registrada de Nintendo Co., Ltd.</translation>
|
|||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="14"/>
|
||||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Hay una actualización disponible</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -173,7 +163,7 @@ Game Boy Advance es una marca registrada de Nintendo Co., Ltd.</translation>
|
|||
<message>
|
||||
<location filename="../CheatsView.ui" line="39"/>
|
||||
<source>Add New Code</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Añadir nuevo código</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CheatsView.ui" line="60"/>
|
||||
|
@ -183,12 +173,12 @@ Game Boy Advance es una marca registrada de Nintendo Co., Ltd.</translation>
|
|||
<message>
|
||||
<location filename="../CheatsView.ui" line="93"/>
|
||||
<source>Add Lines</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Añadir líneas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CheatsView.ui" line="100"/>
|
||||
<source>Code type</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Tipo de código</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CheatsView.ui" line="53"/>
|
||||
|
@ -1013,7 +1003,7 @@ Game Boy Advance es una marca registrada de Nintendo Co., Ltd.</translation>
|
|||
<message>
|
||||
<location filename="../OverrideView.ui" line="146"/>
|
||||
<source>EEPROM 8kB</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>EEPROM 8kB</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../OverrideView.ui" line="151"/>
|
||||
|
@ -1023,7 +1013,7 @@ Game Boy Advance es una marca registrada de Nintendo Co., Ltd.</translation>
|
|||
<message>
|
||||
<location filename="../OverrideView.ui" line="156"/>
|
||||
<source>SRAM 64kB (bootlegs only)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>SRAM 64kB (sólo bootlegs)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../OverrideView.ui" line="164"/>
|
||||
|
@ -1237,22 +1227,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished">Desconocido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1303,27 +1293,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Error al abrir el archivo de guardado: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Error al abrir el archivo del juego: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>¡No se puede remover el cartucho en esta plataforma!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Error al leer del archivo de captura: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Error al escribir al archivo de captura: %1</translation>
|
||||
</message>
|
||||
|
@ -4911,51 +4901,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation>Nombre del juego:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation>{NAME}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation>Nombre interno:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation>{TITLE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation>Id. de juego:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation>{ID}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation>Tamaño del archivo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation>{SIZE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation>CRC32:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation>{CRC}</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5579,11 +5544,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation>Idioma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation>English</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
|
@ -43,16 +43,6 @@ Game Boy Advance è un marchio registrato di Nintendo Co., Ltd.</translation>
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1237,22 +1227,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished">Sconosciuto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1303,27 +1293,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Impossibile aprire il file di salvataggio: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Impossibile aprire il file di gioco: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can'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="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<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="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Impossibile aprire il file snapshot per la scrittura: %1</translation>
|
||||
</message>
|
||||
|
@ -4911,51 +4901,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation>Nome del gioco:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation>{NAME}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation>Nome interno:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation>{TITLE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation>ID del gioco:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation>{ID}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation>Dimensioni del file:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation>{SIZE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation>CRC32:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation>{CRC}</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5770,11 +5735,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation>Lingua</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation>inglese</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="552"/>
|
||||
<source>List view</source>
|
||||
|
|
|
@ -42,16 +42,6 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1236,22 +1226,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1302,27 +1292,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -4908,51 +4898,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5510,11 +5475,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
|
@ -43,16 +43,6 @@ Game Boy Advance on Nintendo Co., Ltd rekisteröimä tuotemerkki.</translation>
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1237,22 +1227,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1303,27 +1293,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -4909,51 +4899,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5511,11 +5476,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
|
@ -43,16 +43,6 @@ Game Boy Advance est une marque de fabrique enregistré par Nintendo Co., Ltd.</
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1238,22 +1228,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1304,27 +1294,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Échec de l'ouverture du fichier de sauvegarde : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Échec de l'ouverture du fichier de jeu : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Échec de l'ouverture de l'instantané pour lire : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Échec de l'ouverture de l'instantané pour écrire : %1</translation>
|
||||
</message>
|
||||
|
@ -4930,51 +4920,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation>Nom du jeu :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation>{NAME}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation>Nom interne :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation>{TITLE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation>ID du jeu :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation>{ID}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation>Taille du fichier :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation>{SIZE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation>CRC32 :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation>{CRC}</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5604,11 +5569,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation>Langue</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation>anglais</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
|
@ -43,16 +43,6 @@ A Game Boy Advance a Nintendo Co., Ltd. bejegyzett védjegye</translation>
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1237,22 +1227,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1303,27 +1293,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Nem sikerült a mentésfájl megnyitása: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Nem sikerült a játékfájl megnyitása: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished">A játékkazettát nem lehet kirántani ismeretlen platformon!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished">A pillanatkép fájljának olvasásra való megnyitása sikertelen: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished">A pillanatkép fájljának írásra való megnyitása sikertelen: %1</translation>
|
||||
</message>
|
||||
|
@ -4907,51 +4897,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5453,11 +5418,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
|
@ -43,16 +43,6 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1237,22 +1227,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished">不明</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1303,27 +1293,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>セーブファイルを開けませんでした: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>ゲームファイルを開けませんでした: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>予期しないプラットフォームでパックをヤンクすることはできません!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>読み取り用のスナップショットファイルを開けませんでした: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>書き込み用のスナップショットファイルを開けませんでした: %1</translation>
|
||||
</message>
|
||||
|
@ -4909,51 +4899,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation>ゲーム名:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation>{NAME}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation>内部名:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation>{TITLE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation>ゲームID:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation>{ID}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation>ファイルサイズ:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation>{SIZE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation>CRC32:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation>{CRC}</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5607,11 +5572,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation>言語</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation>English</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
|
@ -43,16 +43,6 @@ Game Boy Advance는 Nintendo Co., Ltd.의 등록 상표입니다.</translation>
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1237,22 +1227,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1303,27 +1293,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>저장 파일을 열지 못했습니다: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>게임 파일을 열지 못했습니다: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>읽기 용 스냅샷 파일을 열지 못했습니다: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>쓰기 용 스냅샷 파일을 열지 못했습니다: %1</translation>
|
||||
</message>
|
||||
|
@ -4909,51 +4899,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation>게임 이름:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation>{이름}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation>내부 이름:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation>{제목}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation>게임 ID:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation>{ID}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation>파일 크기:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation>{크기}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation>CRC32:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation>{CRC}</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5768,11 +5733,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation>언어</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation>영어</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="552"/>
|
||||
<source>List view</source>
|
||||
|
|
|
@ -42,16 +42,6 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1236,22 +1226,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1302,27 +1292,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Gagal membuka fail tersimpan: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Gagal membuka fail permainan: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished">Gagal membuka fail snapshot untuk baca: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished">Gagal membuka fail snapshot untuk menulis: %1</translation>
|
||||
</message>
|
||||
|
@ -4908,51 +4898,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation>Nama permainan:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation>{NAME}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation>Nama dalaman:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation>{TITLE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation>ID Permainan:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation>{ID}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation>Saiz fail:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation>{SIZE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation>CRC32:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation>{CRC}</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5510,11 +5475,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation>Bahasa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation>Inggeris</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
|
@ -43,16 +43,6 @@ Game Boy Advance er et registrert varemerke tilhørende Nintendo Co., Ltd.</tran
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1237,22 +1227,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished">Ukjent</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1303,27 +1293,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Klarte ikke å åpne spillfil: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -4909,51 +4899,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5511,11 +5476,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -42,16 +42,6 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1236,22 +1226,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1302,27 +1292,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -4910,51 +4900,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation type="unfinished">CRC32:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5512,11 +5477,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
|
@ -43,16 +43,6 @@ Game Boy Advance é uma marca registrada da Nintendo Co., Ltd.</translation>
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1237,22 +1227,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished">Desconhecido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1303,27 +1293,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Falhou em abrir o arquivo do save: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Falhou em abrir o arquivo do jogo: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>Não pode arrancar o pacote numa plataforma inesperada!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Falhou em abrir o arquivo do snapshot pra leitura: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Falhou em abrir o arquivo do snapshot pra gravação: %1</translation>
|
||||
</message>
|
||||
|
@ -4911,51 +4901,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation>Nome do jogo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation>{NAME}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation>Nome interno:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation>{TITLE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation>ID do Jogo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation>{ID}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation>Tamanho do arquivo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation>{SIZE}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation>CRC32:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation>{CRC}</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5579,11 +5544,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation>Idioma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation>Inglês</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -42,16 +42,6 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1236,22 +1226,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1302,27 +1292,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -4906,51 +4896,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5508,11 +5473,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
|
@ -43,16 +43,6 @@ Game Boy Advance, Nintendo Co., Ltd.'nin tescilli ticari markasıdır.</tra
|
|||
<source>An update is available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="23"/>
|
||||
<source>{text}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdatePrompt.ui" line="33"/>
|
||||
<source>{details}</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ArchiveInspector</name>
|
||||
|
@ -1237,22 +1227,22 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::ApplicationUpdater</name>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="91"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="90"/>
|
||||
<source>Stable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="94"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="93"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="96"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="95"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished">Bilinmeyen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ApplicationUpdater.cpp" line="219"/>
|
||||
<location filename="../ApplicationUpdater.cpp" line="218"/>
|
||||
<source>(None)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1303,27 +1293,27 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="712"/>
|
||||
<location filename="../CoreController.cpp" line="715"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Kayıt dosyası açılamadı: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="743"/>
|
||||
<location filename="../CoreController.cpp" line="746"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Oyun dosyası açılamadı: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="768"/>
|
||||
<location filename="../CoreController.cpp" line="771"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>Beklenmedik bir platformda kartı çıkaramazsın!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="845"/>
|
||||
<location filename="../CoreController.cpp" line="848"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Anlık görüntü dosyası okuma için açılamadı: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="861"/>
|
||||
<location filename="../CoreController.cpp" line="864"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Anlık görüntü dosyası yazma için açılamadı: %1</translation>
|
||||
</message>
|
||||
|
@ -4909,51 +4899,26 @@ Download size: %3</source>
|
|||
<source>Game name:</source>
|
||||
<translation>Oyun adı:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="33"/>
|
||||
<source>{NAME}</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="46"/>
|
||||
<source>Internal name:</source>
|
||||
<translation>Dahili İsim:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="53"/>
|
||||
<source>{TITLE}</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="63"/>
|
||||
<source>Game ID:</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="70"/>
|
||||
<source>{ID}</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="80"/>
|
||||
<source>File size:</source>
|
||||
<translation>Dosya boyutu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="87"/>
|
||||
<source>{SIZE}</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="97"/>
|
||||
<source>CRC32:</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ROMInfo.ui" line="104"/>
|
||||
<source>{CRC}</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReportView</name>
|
||||
|
@ -5546,11 +5511,6 @@ Download size: %3</source>
|
|||
<source>Language</source>
|
||||
<translation>Dil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="529"/>
|
||||
<source>English</source>
|
||||
<translation>İngilizce</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsView.ui" line="544"/>
|
||||
<source>Library:</source>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -37,6 +37,34 @@ static int32_t _mSDLReadTiltY(struct mRotationSource* rumble);
|
|||
static int32_t _mSDLReadGyroZ(struct mRotationSource* rumble);
|
||||
static void _mSDLRotationSample(struct mRotationSource* source);
|
||||
|
||||
static struct SDL_JoystickCombo* _mSDLOpenJoystick(struct mSDLEvents* events, int i) {
|
||||
SDL_Joystick* sdlJoystick = SDL_JoystickOpen(i);
|
||||
if (!sdlJoystick) {
|
||||
return NULL;
|
||||
}
|
||||
struct SDL_JoystickCombo* joystick = SDL_JoystickListAppend(&events->joysticks);
|
||||
joystick->index = SDL_JoystickListSize(&events->joysticks) - 1;
|
||||
joystick->joystick = sdlJoystick;
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
||||
joystick->id = SDL_JoystickInstanceID(joystick->joystick);
|
||||
joystick->haptic = SDL_HapticOpenFromJoystick(joystick->joystick);
|
||||
joystick->controller = SDL_GameControllerOpen(i);
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 14)
|
||||
if (joystick->controller) {
|
||||
if (SDL_GameControllerHasSensor(joystick->controller, SDL_SENSOR_GYRO) && !SDL_GameControllerIsSensorEnabled(joystick->controller, SDL_SENSOR_GYRO)) {
|
||||
SDL_GameControllerSetSensorEnabled(joystick->controller, SDL_SENSOR_GYRO, SDL_TRUE);
|
||||
}
|
||||
if (SDL_GameControllerHasSensor(joystick->controller, SDL_SENSOR_ACCEL) && !SDL_GameControllerIsSensorEnabled(joystick->controller, SDL_SENSOR_ACCEL)) {
|
||||
SDL_GameControllerSetSensorEnabled(joystick->controller, SDL_SENSOR_ACCEL, SDL_TRUE);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
joystick->id = SDL_JoystickIndex(joystick->joystick);
|
||||
#endif
|
||||
return joystick;
|
||||
}
|
||||
|
||||
bool mSDLInitEvents(struct mSDLEvents* context) {
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 4)
|
||||
SDL_SetHint(SDL_HINT_NO_SIGNAL_HANDLERS, "1");
|
||||
|
@ -50,6 +78,9 @@ bool mSDLInitEvents(struct mSDLEvents* context) {
|
|||
if (SDL_InitSubSystem(SDL_INIT_HAPTIC) < 0) {
|
||||
mLOG(SDL_EVENTS, ERROR, "SDL haptic initialization failed: %s", SDL_GetError());
|
||||
}
|
||||
if (SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER) < 0) {
|
||||
mLOG(SDL_EVENTS, ERROR, "SDL game controller initialization failed: %s", SDL_GetError());
|
||||
}
|
||||
if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) {
|
||||
mLOG(SDL_EVENTS, ERROR, "SDL video initialization failed: %s", SDL_GetError());
|
||||
}
|
||||
|
@ -64,19 +95,7 @@ bool mSDLInitEvents(struct mSDLEvents* context) {
|
|||
if (!SDL_JoystickListSize(&context->joysticks)) {
|
||||
int i;
|
||||
for (i = 0; i < nJoysticks; ++i) {
|
||||
SDL_Joystick* sdlJoystick = SDL_JoystickOpen(i);
|
||||
if (!sdlJoystick) {
|
||||
continue;
|
||||
}
|
||||
struct SDL_JoystickCombo* joystick = SDL_JoystickListAppend(&context->joysticks);
|
||||
joystick->joystick = sdlJoystick;
|
||||
joystick->index = SDL_JoystickListSize(&context->joysticks) - 1;
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
||||
joystick->id = SDL_JoystickInstanceID(joystick->joystick);
|
||||
joystick->haptic = SDL_HapticOpenFromJoystick(joystick->joystick);
|
||||
#else
|
||||
joystick->id = SDL_JoystickIndex(joystick->joystick);
|
||||
#endif
|
||||
_mSDLOpenJoystick(context, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -101,6 +120,7 @@ void mSDLDeinitEvents(struct mSDLEvents* context) {
|
|||
for (i = 0; i < SDL_JoystickListSize(&context->joysticks); ++i) {
|
||||
struct SDL_JoystickCombo* joystick = SDL_JoystickListGetPointer(&context->joysticks, i);
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
||||
SDL_GameControllerClose(joystick->controller);
|
||||
SDL_HapticClose(joystick->haptic);
|
||||
#endif
|
||||
SDL_JoystickClose(joystick->joystick);
|
||||
|
@ -347,10 +367,6 @@ void mSDLUpdateJoysticks(struct mSDLEvents* events, const struct Configuration*
|
|||
SDL_Event event;
|
||||
while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_JOYDEVICEADDED, SDL_JOYDEVICEREMOVED) > 0) {
|
||||
if (event.type == SDL_JOYDEVICEADDED) {
|
||||
SDL_Joystick* sdlJoystick = SDL_JoystickOpen(event.jdevice.which);
|
||||
if (!sdlJoystick) {
|
||||
continue;
|
||||
}
|
||||
ssize_t joysticks[MAX_PLAYERS];
|
||||
ssize_t i;
|
||||
// Pointers can get invalidated, so we'll need to refresh them
|
||||
|
@ -358,38 +374,26 @@ void mSDLUpdateJoysticks(struct mSDLEvents* events, const struct Configuration*
|
|||
joysticks[i] = events->players[i]->joystick ? (ssize_t) SDL_JoystickListIndex(&events->joysticks, events->players[i]->joystick) : -1;
|
||||
events->players[i]->joystick = NULL;
|
||||
}
|
||||
struct SDL_JoystickCombo* joystick = SDL_JoystickListAppend(&events->joysticks);
|
||||
joystick->joystick = sdlJoystick;
|
||||
joystick->id = SDL_JoystickInstanceID(joystick->joystick);
|
||||
joystick->index = SDL_JoystickListSize(&events->joysticks) - 1;
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
||||
joystick->haptic = SDL_HapticOpenFromJoystick(joystick->joystick);
|
||||
#endif
|
||||
struct SDL_JoystickCombo* joystick = _mSDLOpenJoystick(events, event.jdevice.which);
|
||||
|
||||
for (i = 0; i < events->playersAttached && i < MAX_PLAYERS; ++i) {
|
||||
if (joysticks[i] != -1) {
|
||||
events->players[i]->joystick = SDL_JoystickListGetPointer(&events->joysticks, joysticks[i]);
|
||||
}
|
||||
}
|
||||
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
||||
char joystickName[34] = {0};
|
||||
SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick->joystick), joystickName, sizeof(joystickName));
|
||||
#else
|
||||
const char* joystickName = SDL_JoystickName(SDL_JoystickIndex(joystick->joystick));
|
||||
if (joystickName)
|
||||
#endif
|
||||
{
|
||||
for (i = 0; (int) i < events->playersAttached; ++i) {
|
||||
if (events->players[i]->joystick) {
|
||||
continue;
|
||||
}
|
||||
if (events->preferredJoysticks[i] && strcmp(events->preferredJoysticks[i], joystickName) == 0) {
|
||||
events->players[i]->joystick = joystick;
|
||||
if (config && events->players[i]->bindings) {
|
||||
mInputProfileLoad(events->players[i]->bindings, SDL_BINDING_BUTTON, config, joystickName);
|
||||
}
|
||||
return;
|
||||
for (i = 0; (int) i < events->playersAttached; ++i) {
|
||||
if (events->players[i]->joystick) {
|
||||
continue;
|
||||
}
|
||||
if (events->preferredJoysticks[i] && strcmp(events->preferredJoysticks[i], joystickName) == 0) {
|
||||
events->players[i]->joystick = joystick;
|
||||
if (config) {
|
||||
mInputProfileLoad(events->players[i]->bindings, SDL_BINDING_BUTTON, config, joystickName);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
for (i = 0; (int) i < events->playersAttached; ++i) {
|
||||
|
@ -397,11 +401,7 @@ void mSDLUpdateJoysticks(struct mSDLEvents* events, const struct Configuration*
|
|||
continue;
|
||||
}
|
||||
events->players[i]->joystick = joystick;
|
||||
if (config && events->players[i]->bindings
|
||||
#if !SDL_VERSION_ATLEAST(2, 0, 0)
|
||||
&& joystickName
|
||||
#endif
|
||||
) {
|
||||
if (config && joystickName[0]) {
|
||||
mInputProfileLoad(events->players[i]->bindings, SDL_BINDING_BUTTON, config, joystickName);
|
||||
}
|
||||
break;
|
||||
|
@ -726,11 +726,17 @@ static int32_t _readTilt(struct mSDLPlayer* player, int axis) {
|
|||
|
||||
static int32_t _mSDLReadTiltX(struct mRotationSource* source) {
|
||||
struct mSDLRotation* rotation = (struct mSDLRotation*) source;
|
||||
if (rotation->axisX < 0) {
|
||||
return rotation->accelX * -0x2000000;
|
||||
}
|
||||
return _readTilt(rotation->p, rotation->axisX);
|
||||
}
|
||||
|
||||
static int32_t _mSDLReadTiltY(struct mRotationSource* source) {
|
||||
struct mSDLRotation* rotation = (struct mSDLRotation*) source;
|
||||
if (rotation->axisY < 0) {
|
||||
return rotation->accelY * -0x2000000;
|
||||
}
|
||||
return _readTilt(rotation->p, rotation->axisY);
|
||||
}
|
||||
|
||||
|
@ -747,6 +753,30 @@ static void _mSDLRotationSample(struct mRotationSource* source) {
|
|||
return;
|
||||
}
|
||||
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 14)
|
||||
if (rotation->p->joystick->controller) {
|
||||
SDL_GameController* controller = rotation->p->joystick->controller;
|
||||
if (SDL_GameControllerHasSensor(controller, SDL_SENSOR_ACCEL)) {
|
||||
float accel[3];
|
||||
int count = SDL_GameControllerGetSensorData(controller, SDL_SENSOR_ACCEL, accel, 3);
|
||||
if (count >= 0) {
|
||||
rotation->accelX = accel[0];
|
||||
rotation->accelY = accel[2];
|
||||
rotation->axisX = -1;
|
||||
rotation->axisY = -1;
|
||||
}
|
||||
}
|
||||
if (SDL_GameControllerHasSensor(controller, SDL_SENSOR_GYRO)) {
|
||||
float theta[3];
|
||||
int count = SDL_GameControllerGetSensorData(controller, SDL_SENSOR_GYRO, theta, 3);
|
||||
if (count >= 0) {
|
||||
rotation->zDelta = theta[1] / -10.f;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
int x = SDL_JoystickGetAxis(rotation->p->joystick->joystick, rotation->gyroX);
|
||||
int y = SDL_JoystickGetAxis(rotation->p->joystick->joystick, rotation->gyroY);
|
||||
union {
|
||||
|
|
|
@ -38,6 +38,7 @@ struct SDL_JoystickCombo {
|
|||
size_t index;
|
||||
SDL_Joystick* joystick;
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
||||
SDL_GameController* controller;
|
||||
SDL_Haptic* haptic;
|
||||
SDL_JoystickID id;
|
||||
#else
|
||||
|
@ -88,6 +89,8 @@ struct mSDLPlayer {
|
|||
// Tilt
|
||||
int axisX;
|
||||
int axisY;
|
||||
float accelX;
|
||||
float accelY;
|
||||
|
||||
// Gyro
|
||||
int gyroX;
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
|
||||
#define ANALOG_DEADZONE 0x30
|
||||
|
||||
static void _mapKey(struct mInputMap* map, uint32_t binding, int nativeKey, enum GBAKey key) {
|
||||
static void _mapKey(struct mInputMap* map, uint32_t binding, int nativeKey, int key) {
|
||||
mInputBindKey(map, binding, __builtin_ctz(nativeKey), key);
|
||||
}
|
||||
|
||||
|
@ -124,6 +124,7 @@ static bool sgbCrop = false;
|
|||
static int32_t tiltX;
|
||||
static int32_t tiltY;
|
||||
static int32_t gyroZ;
|
||||
static float gyroSensitivity = 1.f;
|
||||
static uint32_t retraceCount;
|
||||
static uint32_t referenceRetraceCount;
|
||||
static bool frameLimiter = true;
|
||||
|
@ -564,8 +565,26 @@ int main(int argc, char* argv[]) {
|
|||
},
|
||||
.nStates = 8
|
||||
},
|
||||
{
|
||||
.title = "Gyroscope sensitivity",
|
||||
.data = GUI_V_S("gyroSensitivity"),
|
||||
.submenu = 0,
|
||||
.state = 0,
|
||||
.validStates = (const char*[]) {
|
||||
"1x", "1x flipped", "2x", "2x flipped", "1/2x", "1/2x flipped"
|
||||
},
|
||||
.stateMappings = (const struct GUIVariant[]) {
|
||||
GUI_V_F(1.f),
|
||||
GUI_V_F(-1.f),
|
||||
GUI_V_F(2.f),
|
||||
GUI_V_F(-2.f),
|
||||
GUI_V_F(0.5f),
|
||||
GUI_V_F(-0.5f),
|
||||
},
|
||||
.nStates = 6
|
||||
},
|
||||
},
|
||||
.nConfigExtra = 5,
|
||||
.nConfigExtra = 6,
|
||||
.setup = _setup,
|
||||
.teardown = 0,
|
||||
.gameLoaded = _gameLoaded,
|
||||
|
@ -976,6 +995,7 @@ void _unpaused(struct mGUIRunner* runner) {
|
|||
if (mCoreConfigGetFloatValue(&runner->config, "stretchHeight", &stretch)) {
|
||||
hStretch = fminf(1.0f, fmaxf(0.5f, stretch));
|
||||
}
|
||||
mCoreConfigGetFloatValue(&runner->config, "gyroSensitivity", &gyroSensitivity);
|
||||
}
|
||||
|
||||
void _prepareForFrame(struct mGUIRunner* runner) {
|
||||
|
@ -1220,7 +1240,7 @@ int32_t _readTiltY(struct mRotationSource* source) {
|
|||
|
||||
int32_t _readGyroZ(struct mRotationSource* source) {
|
||||
UNUSED(source);
|
||||
return gyroZ;
|
||||
return gyroZ * gyroSensitivity;
|
||||
}
|
||||
|
||||
static s8 WPAD_StickX(u8 chan, u8 right) {
|
||||
|
|
Loading…
Reference in New Issue