all repos — mgba @ 206ba1129d402eca85d33f5d7c362458de4dced9

mGBA Game Boy Advance Emulator

Merge branch 'master' into medusa
Vicki Pfau vi@endrift.com
Mon, 27 Jul 2020 23:28:34 -0700
commit

206ba1129d402eca85d33f5d7c362458de4dced9

parent

3eb6a92265cb32c64e01fb163db9c37f134b47a4

M CHANGESCHANGES

@@ -32,6 +32,7 @@ Features:

- e-Reader card scanning - Add WebP and APNG recording - Support for unlicensed Pokemon Jade/Diamond Game Boy mapper + - Stack tracing tools in ARM debugger (by ahigerd) Emulation fixes: - ARM: Fix ALU reading PC after shifting - ARM: Fix STR storing PC after address calculation

@@ -52,12 +53,14 @@ - GBA BIOS: Fix reloading video registers after reset (fixes mgba.io/i/1808)

- GBA DMA: Linger last DMA on bus (fixes mgba.io/i/301 and mgba.io/i/1320) - GBA Memory: Improve gamepak prefetch timing - GBA Memory: Stall on VRAM access in mode 2 (fixes mgba.io/i/190) + - GBA Savedata: Fix potential corruption when loading a 1Mbit flash save - GBA SIO: Fix copying Normal mode transfer values - GBA Video: Latch scanline at end of Hblank (fixes mgba.io/i/1319) - GBA Video: Fix Hblank timing - GBA Video: Fix invalid read in mode 4 mosaic - GBA Video: Fix color of disabled screen - SM83: Emulate HALT bug + - SM83: Fix flags on little endian PowerPC Other fixes: - All: Improve export headers (fixes mgba.io/i/1738) - All: Correct format strings for some numbers on Windows (fixes mgba.io/i/1794)

@@ -77,6 +80,7 @@ - Qt: Fix a race condition in the frame inspector

- Qt: Fix Italian RTC translation (fixes mgba.io/i/1798) - Qt: Add missing option for Wisdom Tree in overrides list - Util: Fix crash if PNG header fails to write + - SM83: Simplify register pair access on big endian Misc: - Debugger: Keep track of global cycle count - FFmpeg: Add looping option for GIF/APNG
M CMakeLists.txtCMakeLists.txt

@@ -25,7 +25,7 @@ # mingw32 likes to complain about using the "wrong" format strings despite them actually working

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-format") endif() else() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS /wd4003 /wd4244 /wd4146") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS /wd4003 /wd4244 /wd4146 /wd4267") endif() if(NOT DEFINED LIBMGBA_ONLY)
M include/mgba/debugger/debugger.hinclude/mgba/debugger/debugger.h

@@ -13,6 +13,7 @@

#include <mgba/core/cpu.h> #include <mgba/core/log.h> #include <mgba-util/vector.h> +#include <mgba/internal/debugger/stack-trace.h> mLOG_DECLARE_CATEGORY(DEBUGGER);

@@ -50,7 +51,8 @@ DEBUGGER_ENTER_MANUAL,

DEBUGGER_ENTER_ATTACHED, DEBUGGER_ENTER_BREAKPOINT, DEBUGGER_ENTER_WATCHPOINT, - DEBUGGER_ENTER_ILLEGAL_OP + DEBUGGER_ENTER_ILLEGAL_OP, + DEBUGGER_ENTER_STACK }; struct mDebuggerEntryInfo {

@@ -67,6 +69,10 @@ struct {

uint32_t opcode; enum mBreakpointType breakType; } bp; + + struct { + enum mStackTraceMode traceType; + } st; } type; ssize_t pointId; };

@@ -114,6 +120,10 @@

bool (*getRegister)(struct mDebuggerPlatform*, const char* name, int32_t* value); bool (*setRegister)(struct mDebuggerPlatform*, const char* name, int32_t value); bool (*lookupIdentifier)(struct mDebuggerPlatform*, const char* name, int32_t* value, int* segment); + + uint32_t (*getStackTraceMode)(struct mDebuggerPlatform*); + void (*setStackTraceMode)(struct mDebuggerPlatform*, uint32_t mode); + bool (*updateStackTrace)(struct mDebuggerPlatform* d); }; struct mDebugger {

@@ -123,6 +133,7 @@ enum mDebuggerState state;

enum mDebuggerType type; struct mCore* core; struct mScriptBridge* bridge; + struct mStackTrace stackTrace; void (*init)(struct mDebugger*); void (*deinit)(struct mDebugger*);
M include/mgba/internal/arm/arm.hinclude/mgba/internal/arm/arm.h

@@ -70,7 +70,7 @@ struct ARMCore;

union PSR { struct { -#if defined(__BIG_ENDIAN__) +#ifdef __BIG_ENDIAN__ unsigned n : 1; unsigned z : 1; unsigned c : 1;

@@ -96,7 +96,7 @@ #endif

}; struct { -#if defined(__BIG_ENDIAN__) +#ifdef __BIG_ENDIAN__ uint8_t flags; uint8_t status; uint8_t extension;

@@ -231,10 +231,21 @@ ARMTCMControl i;

} r9; }; +#define ARM_REGISTER_FILE struct { \ + int32_t gprs[16]; \ + union PSR cpsr; \ + union PSR spsr; \ +} + +struct ARMRegisterFile { + ARM_REGISTER_FILE; +}; + struct ARMCore { - int32_t gprs[16]; - union PSR cpsr; - union PSR spsr; + union { + struct ARMRegisterFile regs; + ARM_REGISTER_FILE; + }; int32_t cycles; int32_t nextEvent;

@@ -259,6 +270,7 @@

size_t numComponents; struct mCPUComponent** components; }; +#undef ARM_REGISTER_FILE void ARMInit(struct ARMCore* cpu); void ARMDeinit(struct ARMCore* cpu);
M include/mgba/internal/arm/debugger/debugger.hinclude/mgba/internal/arm/debugger/debugger.h

@@ -36,6 +36,7 @@ struct mWatchpointList watchpoints;

struct ARMMemory originalMemory; ssize_t nextId; + uint32_t stackTraceMode; void (*entered)(struct mDebugger*, enum mDebuggerEntryReason, struct mDebuggerEntryInfo*);
M include/mgba/internal/arm/decoder.hinclude/mgba/internal/arm/decoder.h

@@ -14,7 +14,7 @@ #include <mgba/internal/arm/arm.h>

// Bit 0: a register is involved with this operand // Bit 1: an immediate is invovled with this operand -// Bit 2: a memory access is invovled with this operand +// Bit 2: a memory access is involved with this operand // Bit 3: the destination of this operand is affected by this opcode // Bit 4: this operand is shifted by a register // Bit 5: this operand is shifted by an immediate
M include/mgba/internal/arm/isa-inlines.hinclude/mgba/internal/arm/isa-inlines.h

@@ -99,15 +99,12 @@ ARMSetPrivilegeMode(cpu, cpu->cpsr.priv);

cpu->irqh.readCPSR(cpu); } +static inline uint32_t _ARMInstructionLength(struct ARMCore* cpu) { + return cpu->cpsr.t == MODE_ARM ? WORD_SIZE_ARM : WORD_SIZE_THUMB; +} + static inline uint32_t _ARMPCAddress(struct ARMCore* cpu) { - int instructionLength; - enum ExecutionMode mode = cpu->cpsr.t; - if (mode == MODE_ARM) { - instructionLength = WORD_SIZE_ARM; - } else { - instructionLength = WORD_SIZE_THUMB; - } - return cpu->gprs[ARM_PC] - instructionLength * 2; + return cpu->gprs[ARM_PC] - _ARMInstructionLength(cpu) * 2; } #endif
A include/mgba/internal/debugger/stack-trace.h

@@ -0,0 +1,56 @@

+/* Copyright (c) 2013-2020 Jeffrey Pfau + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef STACK_TRACE_H +#define STACK_TRACE_H + +#include <mgba-util/common.h> + +CXX_GUARD_START + +#include <mgba/core/cpu.h> +#include <mgba/core/log.h> +#include <mgba-util/vector.h> + +enum mStackTraceMode { + STACK_TRACE_DISABLED = 0, + STACK_TRACE_ENABLED = 1, + STACK_TRACE_BREAK_ON_RETURN = 2, + STACK_TRACE_BREAK_ON_CALL = 4, + STACK_TRACE_BREAK_ON_BOTH = STACK_TRACE_BREAK_ON_RETURN | STACK_TRACE_BREAK_ON_CALL +}; + +struct mStackFrame { + uint32_t callAddress; + uint32_t entryAddress; + uint32_t frameBaseAddress; + void* regs; + bool finished; + bool breakWhenFinished; + bool interrupt; +}; + +DECLARE_VECTOR(mStackFrames, struct mStackFrame); + +struct mStackTrace { + struct mStackFrames stack; + size_t registersSize; + + void (*formatRegisters)(struct mStackFrame* frame, char* out, size_t* length); +}; + +void mStackTraceInit(struct mStackTrace* stack, size_t registersSize); +void mStackTraceDeinit(struct mStackTrace* stack); + +void mStackTraceClear(struct mStackTrace* stack); +size_t mStackTraceGetDepth(struct mStackTrace* stack); +struct mStackFrame* mStackTracePush(struct mStackTrace* stack, uint32_t pc, uint32_t destAddress, uint32_t sp, void* regs); +struct mStackFrame* mStackTraceGetFrame(struct mStackTrace* stack, uint32_t frame); +void mStackTraceFormatFrame(struct mStackTrace* stack, uint32_t frame, char* out, size_t* length); +void mStackTracePop(struct mStackTrace* stack); + +CXX_GUARD_END + +#endif
M include/mgba/internal/sm83/sm83.hinclude/mgba/internal/sm83/sm83.h

@@ -18,7 +18,7 @@

#pragma pack(push, 1) union FlagRegister { struct { -#if defined(__POWERPC__) || defined(__PPC__) +#ifdef __BIG_ENDIAN__ unsigned z : 1; unsigned n : 1; unsigned h : 1;

@@ -74,39 +74,62 @@

void (*hitIllegal)(struct SM83Core* cpu); }; +#ifdef __BIG_ENDIAN__ +#define SM83_REGISTER_PAIR(HIGH, LOW) union { \ + struct { \ + uint8_t HIGH; \ + uint8_t LOW; \ + }; \ + uint16_t HIGH ## LOW; \ + } + +#define SM83_AF_REGISTER union { \ + struct { \ + uint8_t a; \ + union FlagRegister f; \ + }; \ + uint16_t af; \ + } +#else +#define SM83_REGISTER_PAIR(HIGH, LOW) union { \ + struct { \ + uint8_t LOW; \ + uint8_t HIGH; \ + }; \ + uint16_t HIGH ## LOW; \ + } + +#define SM83_AF_REGISTER union { \ + struct { \ + union FlagRegister f; \ + uint8_t a; \ + }; \ + uint16_t af; \ + } +#endif + +#define SM83_REGISTER_FILE struct { \ + SM83_AF_REGISTER; \ + SM83_REGISTER_PAIR(b, c); \ + SM83_REGISTER_PAIR(d, e); \ + SM83_REGISTER_PAIR(h, l); \ + uint16_t sp; \ + uint16_t pc; \ +} + +struct SM83RegisterFile { +#pragma pack(push, 1) + SM83_REGISTER_FILE; +#pragma pack(pop) +}; + struct SM83Core { #pragma pack(push, 1) union { - struct { - union FlagRegister f; - uint8_t a; - }; - uint16_t af; + struct SM83RegisterFile regs; + SM83_REGISTER_FILE; }; #pragma pack(pop) - union { - struct { - uint8_t c; - uint8_t b; - }; - uint16_t bc; - }; - union { - struct { - uint8_t e; - uint8_t d; - }; - uint16_t de; - }; - union { - struct { - uint8_t l; - uint8_t h; - }; - uint16_t hl; - }; - uint16_t sp; - uint16_t pc; uint16_t index;

@@ -129,6 +152,7 @@

size_t numComponents; struct mCPUComponent** components; }; +#undef SM83_REGISTER_FILE void SM83Init(struct SM83Core* cpu); void SM83Deinit(struct SM83Core* cpu);
M src/arm/debugger/debugger.csrc/arm/debugger/debugger.c

@@ -11,9 +11,102 @@ #include <mgba/internal/arm/decoder.h>

#include <mgba/internal/arm/isa-inlines.h> #include <mgba/internal/arm/debugger/memory-debugger.h> #include <mgba/internal/debugger/parser.h> +#include <mgba/internal/debugger/stack-trace.h> +#include <mgba-util/math.h> DEFINE_VECTOR(ARMDebugBreakpointList, struct ARMDebugBreakpoint); +static bool ARMDebuggerUpdateStackTraceInternal(struct mDebuggerPlatform* d, uint32_t pc) { + struct ARMDebugger* debugger = (struct ARMDebugger*) d; + struct ARMCore* cpu = debugger->cpu; + struct ARMInstructionInfo info; + uint32_t instruction = cpu->prefetch[0]; + struct mStackTrace* stack = &d->p->stackTrace; + bool interrupt = false; + ARMDecodeARM(instruction, &info); + + if (_ARMModeHasSPSR(cpu->cpsr.priv)) { + struct mStackFrame* irqFrame = mStackTraceGetFrame(stack, 0); + uint32_t ivtBase = ARMControlRegIsVE(cpu->cp15.r1.c0) ? 0xFFFF0000 : 0x00000000; + if (ivtBase <= pc && pc < ivtBase + 0x20 && !(irqFrame && _ARMModeHasSPSR(((struct ARMRegisterFile*) irqFrame->regs)->cpsr.priv))) { + // TODO: Potential enhancement opportunity: add break-on-exception mode + irqFrame = mStackTracePush(stack, pc, pc, cpu->gprs[ARM_SP], &cpu->regs); + irqFrame->interrupt = true; + interrupt = true; + } + } + + if (info.branchType == ARM_BRANCH_NONE && !interrupt) { + return false; + } + + struct mStackFrame* frame = mStackTraceGetFrame(stack, 0); + bool isCall = (info.branchType & ARM_BRANCH_LINKED); + uint32_t destAddress; + + if (frame && frame->finished) { + mStackTracePop(stack); + frame = NULL; + } + + if (interrupt && info.branchType == ARM_BRANCH_NONE) { + // The stack frame was already pushed up above, so there's no + // action necessary here, but we still want to check for a + // breakpoint down below. + // + // The first instruction could possibly be a call, which would + // need ANOTHER stack frame, so only skip if it's not. + } else if (info.operandFormat & ARM_OPERAND_MEMORY_1) { + // This is most likely ldmia ..., {..., pc}, which is a function return. + // To find which stack slot holds the return address, count the number of set bits. + int regCount = popcount32(info.op1.immediate); + uint32_t baseAddress = cpu->gprs[info.memory.baseReg] + ((regCount - 1) << 2); + destAddress = cpu->memory.load32(cpu, baseAddress, NULL); + } else if (info.operandFormat & ARM_OPERAND_IMMEDIATE_1) { + if (!isCall) { + return false; + } + destAddress = info.op1.immediate + cpu->gprs[ARM_PC]; + } else if (info.operandFormat & ARM_OPERAND_REGISTER_1) { + if (!isCall && info.op1.reg != ARM_LR && !(_ARMModeHasSPSR(cpu->cpsr.priv) && info.op1.reg == ARM_PC)) { + return false; + } + destAddress = cpu->gprs[info.op1.reg]; + } else { + mLOG(DEBUGGER, ERROR, "Unknown branch operand in stack trace"); + return false; + } + + if (info.branchType & ARM_BRANCH_INDIRECT) { + destAddress = cpu->memory.load32(cpu, destAddress, NULL); + } + + if (isCall) { + int instructionLength = _ARMInstructionLength(debugger->cpu); + frame = mStackTracePush(stack, pc, destAddress + instructionLength, cpu->gprs[ARM_SP], &cpu->regs); + if (!(debugger->stackTraceMode & STACK_TRACE_BREAK_ON_CALL)) { + return false; + } + } else { + frame = mStackTraceGetFrame(stack, 0); + if (!frame) { + return false; + } + if (!frame->breakWhenFinished && !(debugger->stackTraceMode & STACK_TRACE_BREAK_ON_RETURN)) { + mStackTracePop(stack); + return false; + } + frame->finished = true; + } + struct mDebuggerEntryInfo debuggerInfo = { + .address = pc, + .type.st.traceType = isCall ? STACK_TRACE_BREAK_ON_CALL : STACK_TRACE_BREAK_ON_RETURN, + .pointId = 0 + }; + mDebuggerEnter(d->p, DEBUGGER_ENTER_STACK, &debuggerInfo); + return true; +} + static struct ARMDebugBreakpoint* _lookupBreakpoint(struct ARMDebugBreakpointList* breakpoints, uint32_t address) { size_t i; for (i = 0; i < ARMDebugBreakpointListSize(breakpoints); ++i) {

@@ -40,14 +133,12 @@ }

static void ARMDebuggerCheckBreakpoints(struct mDebuggerPlatform* d) { struct ARMDebugger* debugger = (struct ARMDebugger*) d; - int instructionLength; - enum ExecutionMode mode = debugger->cpu->cpsr.t; - if (mode == MODE_ARM) { - instructionLength = WORD_SIZE_ARM; - } else { - instructionLength = WORD_SIZE_THUMB; + int instructionLength = _ARMInstructionLength(debugger->cpu); + uint32_t pc = debugger->cpu->gprs[ARM_PC] - instructionLength; + if (debugger->stackTraceMode != STACK_TRACE_DISABLED && ARMDebuggerUpdateStackTraceInternal(d, pc)) { + return; } - struct ARMDebugBreakpoint* breakpoint = _lookupBreakpoint(&debugger->breakpoints, debugger->cpu->gprs[ARM_PC] - instructionLength); + struct ARMDebugBreakpoint* breakpoint = _lookupBreakpoint(&debugger->breakpoints, pc); if (!breakpoint) { return; }

@@ -79,8 +170,13 @@ static void ARMDebuggerListWatchpoints(struct mDebuggerPlatform*, struct mWatchpointList*);

static void ARMDebuggerCheckBreakpoints(struct mDebuggerPlatform*); static bool ARMDebuggerHasBreakpoints(struct mDebuggerPlatform*); static void ARMDebuggerTrace(struct mDebuggerPlatform*, char* out, size_t* length); +static void ARMDebuggerFormatRegisters(struct ARMRegisterFile* regs, char* out, size_t* length); +static void ARMDebuggerFrameFormatRegisters(struct mStackFrame* frame, char* out, size_t* length); static bool ARMDebuggerGetRegister(struct mDebuggerPlatform*, const char* name, int32_t* value); static bool ARMDebuggerSetRegister(struct mDebuggerPlatform*, const char* name, int32_t value); +static uint32_t ARMDebuggerGetStackTraceMode(struct mDebuggerPlatform*); +static void ARMDebuggerSetStackTraceMode(struct mDebuggerPlatform*, uint32_t); +static bool ARMDebuggerUpdateStackTrace(struct mDebuggerPlatform* d); struct mDebuggerPlatform* ARMDebuggerPlatformCreate(void) { struct mDebuggerPlatform* platform = (struct mDebuggerPlatform*) malloc(sizeof(struct ARMDebugger));

@@ -97,6 +193,9 @@ platform->hasBreakpoints = ARMDebuggerHasBreakpoints;

platform->trace = ARMDebuggerTrace; platform->getRegister = ARMDebuggerGetRegister; platform->setRegister = ARMDebuggerSetRegister; + platform->getStackTraceMode = ARMDebuggerGetStackTraceMode; + platform->setStackTraceMode = ARMDebuggerSetStackTraceMode; + platform->updateStackTrace = ARMDebuggerUpdateStackTrace; return platform; }

@@ -105,9 +204,13 @@ struct ARMDebugger* debugger = (struct ARMDebugger*) platform;

debugger->cpu = cpu; debugger->originalMemory = debugger->cpu->memory; debugger->nextId = 1; + debugger->stackTraceMode = STACK_TRACE_DISABLED; ARMDebugBreakpointListInit(&debugger->breakpoints, 0); ARMDebugBreakpointListInit(&debugger->swBreakpoints, 0); mWatchpointListInit(&debugger->watchpoints, 0); + struct mStackTrace* stack = &platform->p->stackTrace; + mStackTraceInit(stack, sizeof(struct ARMRegisterFile)); + stack->formatRegisters = ARMDebuggerFrameFormatRegisters; } void ARMDebuggerDeinit(struct mDebuggerPlatform* platform) {

@@ -133,6 +236,7 @@ _destroyWatchpoint(mWatchpointListGetPointer(&debugger->watchpoints, i));

} ARMDebugBreakpointListDeinit(&debugger->swBreakpoints); mWatchpointListDeinit(&debugger->watchpoints); + mStackTraceDeinit(&platform->p->stackTrace); } static void ARMDebuggerEnter(struct mDebuggerPlatform* platform, enum mDebuggerEntryReason reason, struct mDebuggerEntryInfo* info) {

@@ -261,7 +365,7 @@ *b = hw->d;

++i; } else if (sw) { *b = sw->d; - ++s; + ++s; } else { abort(); // Should be unreachable }

@@ -270,7 +374,7 @@ }

static bool ARMDebuggerHasBreakpoints(struct mDebuggerPlatform* d) { struct ARMDebugger* debugger = (struct ARMDebugger*) d; - return ARMDebugBreakpointListSize(&debugger->breakpoints) || mWatchpointListSize(&debugger->watchpoints); + return ARMDebugBreakpointListSize(&debugger->breakpoints) || mWatchpointListSize(&debugger->watchpoints) || debugger->stackTraceMode != STACK_TRACE_DISABLED; } static ssize_t ARMDebuggerSetWatchpoint(struct mDebuggerPlatform* d, const struct mWatchpoint* info) {

@@ -320,12 +424,23 @@ ARMDisassemble(&info, cpu->gprs[ARM_PC], disassembly + strlen("00000000: "), sizeof(disassembly) - strlen("00000000: "));

} } - *length = snprintf(out, *length, "%08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X cpsr: %08X | %s", - cpu->gprs[0], cpu->gprs[1], cpu->gprs[2], cpu->gprs[3], - cpu->gprs[4], cpu->gprs[5], cpu->gprs[6], cpu->gprs[7], - cpu->gprs[8], cpu->gprs[9], cpu->gprs[10], cpu->gprs[11], - cpu->gprs[12], cpu->gprs[13], cpu->gprs[14], cpu->gprs[15], - cpu->cpsr.packed, disassembly); + size_t regStringLen = *length; + ARMDebuggerFormatRegisters(&cpu->regs, out, &regStringLen); + regStringLen += snprintf(out + regStringLen, *length - regStringLen, " | %s", disassembly); + *length = regStringLen; +} + +static void ARMDebuggerFormatRegisters(struct ARMRegisterFile* regs, char* out, size_t* length) { + *length = snprintf(out, *length, "%08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X cpsr: %08X", + regs->gprs[0], regs->gprs[1], regs->gprs[2], regs->gprs[3], + regs->gprs[4], regs->gprs[5], regs->gprs[6], regs->gprs[7], + regs->gprs[8], regs->gprs[9], regs->gprs[10], regs->gprs[11], + regs->gprs[12], regs->gprs[13], regs->gprs[14], regs->gprs[15], + regs->cpsr.packed); +} + +static void ARMDebuggerFrameFormatRegisters(struct mStackFrame* frame, char* out, size_t* length) { + ARMDebuggerFormatRegisters(frame->regs, out, length); } bool ARMDebuggerGetRegister(struct mDebuggerPlatform* d, const char* name, int32_t* value) {

@@ -403,3 +518,28 @@ return true;

} return false; } + +static uint32_t ARMDebuggerGetStackTraceMode(struct mDebuggerPlatform* d) { + struct ARMDebugger* debugger = (struct ARMDebugger*) d; + return debugger->stackTraceMode; +} + +static void ARMDebuggerSetStackTraceMode(struct mDebuggerPlatform* d, uint32_t mode) { + struct ARMDebugger* debugger = (struct ARMDebugger*) d; + struct mStackTrace* stack = &d->p->stackTrace; + if (mode == STACK_TRACE_DISABLED && debugger->stackTraceMode != STACK_TRACE_DISABLED) { + mStackTraceClear(stack); + } + debugger->stackTraceMode = mode; +} + +static bool ARMDebuggerUpdateStackTrace(struct mDebuggerPlatform* d) { + struct ARMDebugger* debugger = (struct ARMDebugger*) d; + int instructionLength = _ARMInstructionLength(debugger->cpu); + uint32_t pc = debugger->cpu->gprs[ARM_PC] - instructionLength; + if (debugger->stackTraceMode != STACK_TRACE_DISABLED) { + return ARMDebuggerUpdateStackTraceInternal(d, pc); + } else { + return false; + } +}
M src/arm/isa-thumb.csrc/arm/isa-thumb.c

@@ -26,7 +26,6 @@ cpu->cpsr.c = ARM_BORROW_FROM(M, N, D); \

cpu->cpsr.v = ARM_V_SUBTRACTION(M, N, D); #define THUMB_SUBTRACTION_CARRY_S(M, N, D, C) \ - cpu->cpsr.flags = 0; \ cpu->cpsr.n = ARM_SIGN(D); \ cpu->cpsr.z = !(D); \ cpu->cpsr.c = ARM_BORROW_FROM_CARRY(M, N, D, C); \
M src/debugger/CMakeLists.txtsrc/debugger/CMakeLists.txt

@@ -3,7 +3,8 @@ set(SOURCE_FILES

cli-debugger.c debugger.c parser.c - symbols.c) + symbols.c + stack-trace.c) set(TEST_FILES test/lexer.c

@@ -13,4 +14,4 @@ source_group("Debugger" FILES ${SOURCE_FILES})

source_group("Debugger tests" FILES ${TEST_FILES}) export_directory(DEBUGGER SOURCE_FILES) -export_directory(DEBUGGER_TEST TEST_FILES)+export_directory(DEBUGGER_TEST TEST_FILES)
M src/debugger/cli-debugger.csrc/debugger/cli-debugger.c

@@ -69,12 +69,17 @@ static void _dumpWord(struct CLIDebugger*, struct CLIDebugVector*);

#ifdef ENABLE_SCRIPTING static void _source(struct CLIDebugger*, struct CLIDebugVector*); #endif +static void _backtrace(struct CLIDebugger*, struct CLIDebugVector*); +static void _finish(struct CLIDebugger*, struct CLIDebugVector*); +static void _setStackTraceMode(struct CLIDebugger*, struct CLIDebugVector*); static struct CLIDebuggerCommandSummary _debuggerCommands[] = { + { "backtrace", _backtrace, "i", "Print backtrace of all or specified frames" }, { "break", _setBreakpoint, "Is", "Set a breakpoint" }, { "continue", _continue, "", "Continue execution" }, { "delete", _clearBreakpoint, "I", "Delete a breakpoint or watchpoint" }, { "disassemble", _disassemble, "Ii", "Disassemble instructions" }, + { "finish", _finish, "", "Execute until current stack frame returns" }, { "help", _printHelp, "S", "Print help" }, { "listb", _listBreakpoints, "", "List breakpoints" }, { "listw", _listWatchpoints, "", "List watchpoints" },

@@ -87,6 +92,7 @@ { "reset", _reset, "", "Reset the emulation" },

{ "r/1", _readByte, "I", "Read a byte from a specified offset" }, { "r/2", _readHalfword, "I", "Read a halfword from a specified offset" }, { "r/4", _readWord, "I", "Read a word from a specified offset" }, + { "stack", _setStackTraceMode, "S", "Changes the stack tracing mode" }, { "status", _printStatus, "", "Print the current status" }, { "trace", _trace, "Is", "Trace a number of instructions" }, { "w/1", _writeByte, "II", "Write a byte at a specified offset" },

@@ -111,6 +117,7 @@ };

static struct CLIDebuggerCommandAlias _debuggerCommandAliases[] = { { "b", "break" }, + { "bt", "backtrace" }, { "c", "continue" }, { "d", "delete" }, { "dis", "disassemble" },

@@ -153,6 +160,18 @@ sigaction(SIGTRAP, &osa, 0);

} #endif +static bool CLIDebuggerCheckTraceMode(struct CLIDebugger* debugger, bool requireEnabled) { + struct mDebuggerPlatform* platform = debugger->d.platform; + if (!platform->getStackTraceMode) { + debugger->backend->printf(debugger->backend, "Stack tracing is not supported by this platform.\n"); + return false; + } else if (requireEnabled && platform->getStackTraceMode(platform) == STACK_TRACE_DISABLED) { + debugger->backend->printf(debugger->backend, "Stack tracing is not enabled.\n"); + return false; + } + return true; +} + static void _continue(struct CLIDebugger* debugger, struct CLIDebugVector* dv) { UNUSED(dv); debugger->d.state = debugger->traceRemaining != 0 ? DEBUGGER_CALLBACK : DEBUGGER_RUNNING;

@@ -160,7 +179,11 @@ }

static void _next(struct CLIDebugger* debugger, struct CLIDebugVector* dv) { UNUSED(dv); + struct mDebuggerPlatform* platform = debugger->d.platform; debugger->d.core->step(debugger->d.core); + if (platform->getStackTraceMode && platform->getStackTraceMode(platform) != STACK_TRACE_DISABLED) { + platform->updateStackTrace(platform); + } _printStatus(debugger, 0); }

@@ -327,6 +350,7 @@ }

static void _reset(struct CLIDebugger* debugger, struct CLIDebugVector* dv) { UNUSED(dv); + mStackTraceClear(&debugger->d.stackTrace); debugger->d.core->reset(debugger->d.core); _printStatus(debugger, 0); }

@@ -979,7 +1003,7 @@ if (info) {

if (info->pointId > 0) { cliDebugger->backend->printf(cliDebugger->backend, "Hit breakpoint %" PRIz "i at 0x%08X\n", info->pointId, info->address); } else { - cliDebugger->backend->printf(cliDebugger->backend, "Hit unknown breakpoint at 0x%08X\n", info->address); + cliDebugger->backend->printf(cliDebugger->backend, "Hit unknown breakpoint at 0x%08X\n", info->address); } } else { cliDebugger->backend->printf(cliDebugger->backend, "Hit breakpoint\n");

@@ -1002,6 +1026,18 @@ cliDebugger->backend->printf(cliDebugger->backend, "Hit illegal opcode at 0x%08X: 0x%08X\n", info->address, info->type.bp.opcode);

} else { cliDebugger->backend->printf(cliDebugger->backend, "Hit illegal opcode\n"); } + break; + case DEBUGGER_ENTER_STACK: + if (info) { + if (info->type.st.traceType == STACK_TRACE_BREAK_ON_CALL) { + cliDebugger->backend->printf(cliDebugger->backend, "Hit function call at at 0x%08X\n", info->address); + } else { + cliDebugger->backend->printf(cliDebugger->backend, "Hit function return at at 0x%08X\n", info->address); + } + } else { + cliDebugger->backend->printf(cliDebugger->backend, "Hit function call or return\n"); + } + _backtrace(cliDebugger, NULL); break; } }

@@ -1131,3 +1167,68 @@ debugger->backend->lineAppend(debugger->backend, name);

debugger->backend->lineAppend(debugger->backend, " "); return true; } + +static void _backtrace(struct CLIDebugger* debugger, struct CLIDebugVector* dv) { + if (!CLIDebuggerCheckTraceMode(debugger, true)) { + return; + } + struct mStackTrace* stack = &debugger->d.stackTrace; + ssize_t frames = mStackTraceGetDepth(stack); + if (dv && dv->type == CLIDV_INT_TYPE && dv->intValue < frames) { + frames = dv->intValue; + } + ssize_t i; + for (i = 0; i < frames; ++i) { + char trace[1024]; + size_t traceSize = sizeof(trace) - 2; + mStackTraceFormatFrame(stack, i, trace, &traceSize); + debugger->backend->printf(debugger->backend, "%s", trace); + } +} + +static void _finish(struct CLIDebugger* debugger, struct CLIDebugVector* dv) { + UNUSED(dv); + if (!CLIDebuggerCheckTraceMode(debugger, true)) { + return; + } + struct mStackTrace* stack = &debugger->d.stackTrace; + struct mStackFrame* frame = mStackTraceGetFrame(stack, 0); + if (!frame) { + debugger->backend->printf(debugger->backend, "No current stack frame.\n"); + return; + } + frame->breakWhenFinished = true; + _continue(debugger, dv); +} + +static void _setStackTraceMode(struct CLIDebugger* debugger, struct CLIDebugVector* dv) { + if (!CLIDebuggerCheckTraceMode(debugger, false)) { + return; + } + if (!dv) { + debugger->backend->printf(debugger->backend, "off disable stack tracing (default)\n"); + debugger->backend->printf(debugger->backend, "trace-only enable stack tracing\n"); + debugger->backend->printf(debugger->backend, "break-call break on function calls\n"); + debugger->backend->printf(debugger->backend, "break-return break on function returns\n"); + debugger->backend->printf(debugger->backend, "break-all break on function calls and returns\n"); + return; + } + if (dv->type != CLIDV_CHAR_TYPE) { + debugger->backend->printf(debugger->backend, "%s\n", ERROR_INVALID_ARGS); + return; + } + struct mDebuggerPlatform* platform = debugger->d.platform; + if (strcmp(dv->charValue, "off") == 0) { + platform->setStackTraceMode(platform, STACK_TRACE_DISABLED); + } else if (strcmp(dv->charValue, "trace-only") == 0) { + platform->setStackTraceMode(platform, STACK_TRACE_ENABLED); + } else if (strcmp(dv->charValue, "break-call") == 0) { + platform->setStackTraceMode(platform, STACK_TRACE_BREAK_ON_CALL); + } else if (strcmp(dv->charValue, "break-return") == 0) { + platform->setStackTraceMode(platform, STACK_TRACE_BREAK_ON_RETURN); + } else if (strcmp(dv->charValue, "break-all") == 0) { + platform->setStackTraceMode(platform, STACK_TRACE_BREAK_ON_BOTH); + } else { + debugger->backend->printf(debugger->backend, "%s\n", ERROR_INVALID_ARGS); + } +}
A src/debugger/stack-trace.c

@@ -0,0 +1,100 @@

+/* Copyright (c) 2013-2020 Jeffrey Pfau + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include <mgba/internal/debugger/stack-trace.h> + +#include <mgba/core/core.h> + +#define CHECK_LENGTH() \ + if (written >= *length) { \ + *length = written; \ + return; \ + } + +DEFINE_VECTOR(mStackFrames, struct mStackFrame); + +void mStackTraceInit(struct mStackTrace* stack, size_t registersSize) { + mStackFramesInit(&stack->stack, 0); + stack->registersSize = registersSize; +} + +void mStackTraceDeinit(struct mStackTrace* stack) { + mStackTraceClear(stack); + mStackFramesDeinit(&stack->stack); +} + +void mStackTraceClear(struct mStackTrace* stack) { + ssize_t i = mStackTraceGetDepth(stack) - 1; + while (i >= 0) { + free(mStackTraceGetFrame(stack, i)->regs); + --i; + } + mStackFramesClear(&stack->stack); +} + +size_t mStackTraceGetDepth(struct mStackTrace* stack) { + return mStackFramesSize(&stack->stack); +} + +struct mStackFrame* mStackTracePush(struct mStackTrace* stack, uint32_t pc, uint32_t destAddress, uint32_t sp, void* regs) { + struct mStackFrame* frame = mStackFramesAppend(&stack->stack); + frame->callAddress = pc; + frame->entryAddress = destAddress; + frame->frameBaseAddress = sp; + frame->regs = malloc(stack->registersSize); + frame->finished = false; + frame->breakWhenFinished = false; + frame->interrupt = false; + memcpy(frame->regs, regs, stack->registersSize); + return frame; +} + +struct mStackFrame* mStackTraceGetFrame(struct mStackTrace* stack, uint32_t frame) { + size_t depth = mStackTraceGetDepth(stack); + if (frame >= depth) { + return NULL; + } + return mStackFramesGetPointer(&stack->stack, depth - frame - 1); +} + +void mStackTraceFormatFrame(struct mStackTrace* stack, uint32_t frame, char* out, size_t* length) { + struct mStackFrame* stackFrame = mStackTraceGetFrame(stack, frame); + struct mStackFrame* prevFrame = mStackTraceGetFrame(stack, frame + 1); + size_t written = snprintf(out, *length, "#%d ", frame); + CHECK_LENGTH(); + if (prevFrame) { + written += snprintf(out + written, *length - written, "%08X ", prevFrame->entryAddress); + CHECK_LENGTH(); + } + if (!stackFrame) { + written += snprintf(out + written, *length - written, "no stack frame available)\n"); + *length = written; + return; + } else if (stack->formatRegisters) { + written += snprintf(out + written, *length - written, "("); + CHECK_LENGTH(); + char buffer[1024]; + size_t formattedSize = sizeof(buffer) - 2; + stack->formatRegisters(stackFrame, buffer, &formattedSize); + written += snprintf(out + written, *length - written, "%s)\n ", buffer); + CHECK_LENGTH(); + } + if (prevFrame) { + int32_t offset = stackFrame->callAddress - prevFrame->entryAddress; + written += snprintf(out + written, *length - written, "at %08X [%08X+%d]\n", stackFrame->callAddress, prevFrame->entryAddress, offset); + } else { + written += snprintf(out + written, *length - written, "at %08X\n", stackFrame->callAddress); + } + *length = written; +} + +void mStackTracePop(struct mStackTrace* stack) { + size_t depth = mStackTraceGetDepth(stack); + if (depth > 0) { + struct mStackFrame* frame = mStackFramesGetPointer(&stack->stack, depth - 1); + free(frame->regs); + mStackFramesResize(&stack->stack, -1); + } +}
M src/gba/savedata.csrc/gba/savedata.c

@@ -599,7 +599,6 @@ }

void _flashSwitchBank(struct GBASavedata* savedata, int bank) { mLOG(GBA_SAVE, DEBUG, "Performing flash bank switch to bank %i", bank); - savedata->currentBank = &savedata->data[bank << 16]; if (bank > 0 && savedata->type == SAVEDATA_FLASH512) { mLOG(GBA_SAVE, INFO, "Updating flash chip from 512kb to 1Mb"); savedata->type = SAVEDATA_FLASH1M;

@@ -614,6 +613,7 @@ savedata->data = savedata->vf->map(savedata->vf, SIZE_CART_FLASH1M, MAP_WRITE);

} } } + savedata->currentBank = &savedata->data[bank << 16]; } void _flashErase(struct GBASavedata* savedata) {
A src/platform/qt/ts/mgba-ja.ts

@@ -0,0 +1,5681 @@

+<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ja_JP" sourcelanguage="en_US"> +<context> + <name>AboutScreen</name> + <message> + <location filename="../AboutScreen.ui" line="14"/> + <source>About</source> + <translation>About</translation> + </message> + <message> + <location filename="../AboutScreen.ui" line="23"/> + <source>&lt;a href=&quot;http://mgba.io/&quot;&gt;Website&lt;/a&gt; • &lt;a href=&quot;https://forums.mgba.io/&quot;&gt;Forums / Support&lt;/a&gt; • &lt;a href=&quot;https://patreon.com/mgba&quot;&gt;Donate&lt;/a&gt; • &lt;a href=&quot;https://github.com/mgba-emu/mgba/tree/{gitBranch}&quot;&gt;Source&lt;/a&gt;</source> + <translation>&lt;a href=&quot;http://mgba.io/&quot;&gt;Website&lt;/a&gt; • &lt;a href=&quot;https://forums.mgba.io/&quot;&gt;Forums / Support&lt;/a&gt; • &lt;a href=&quot;https://patreon.com/mgba&quot;&gt;Donate&lt;/a&gt; • &lt;a href=&quot;https://github.com/mgba-emu/mgba/tree/{gitBranch}&quot;&gt;Source&lt;/a&gt;</translation> + </message> + <message> + <location filename="../AboutScreen.ui" line="41"/> + <source>Branch: &lt;tt&gt;{gitBranch}&lt;/tt&gt;&lt;br/&gt;Revision: &lt;tt&gt;{gitCommit}&lt;/tt&gt;</source> + <translation>Branch: &lt;tt&gt;{gitBranch}&lt;/tt&gt;&lt;br/&gt;Revision: &lt;tt&gt;{gitCommit}&lt;/tt&gt;</translation> + </message> + <message> + <location filename="../AboutScreen.ui" line="58"/> + <source>{projectName}</source> + <translation>{projectName}</translation> + </message> + <message> + <location filename="../AboutScreen.ui" line="68"/> + <source>{projectName} would like to thank the following patrons from Patreon:</source> + <translation>{projectName} would like to thank the following patrons from Patreon:</translation> + </message> + <message> + <location filename="../AboutScreen.ui" line="86"/> + <source>© 2013 – 2020 Jeffrey Pfau, licensed under the Mozilla Public License, version 2.0 +Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source> + <translation>© 2013 – 2020 Jeffrey Pfau, licensed under the Mozilla Public License, version 2.0 +Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</translation> + </message> + <message> + <source>© 2013 – 2018 Jeffrey Pfau, licensed under the Mozilla Public License, version 2.0 +Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source> + <translation>© 2013 – 2018 Jeffrey Pfau, licensed under the Mozilla Public License, version 2.0 +Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</translation> + </message> + <message> + <location filename="../AboutScreen.ui" line="106"/> + <source>{projectVersion}</source> + <translation>{projectVersion}</translation> + </message> + <message> + <location filename="../AboutScreen.ui" line="155"/> + <source>{logo}</source> + <translation>{logo}</translation> + </message> + <message> + <location filename="../AboutScreen.ui" line="177"/> + <source>{projectName} is an open-source Game Boy Advance emulator</source> + <translation>{projectName} is an open-source Game Boy Advance emulator</translation> + </message> + <message> + <location filename="../AboutScreen.ui" line="190"/> + <source>{patrons}</source> + <translation>{patrons}</translation> + </message> +</context> +<context> + <name>ArchiveInspector</name> + <message> + <location filename="../ArchiveInspector.ui" line="14"/> + <source>Open in archive...</source> + <translation>アーカイブを開く...</translation> + </message> + <message> + <location filename="../ArchiveInspector.ui" line="20"/> + <source>Loading...</source> + <translation>ロード中...</translation> + </message> +</context> +<context> + <name>AssetTile</name> + <message> + <location filename="../AssetTile.ui" line="20"/> + <source>AssetTile</source> + <translation>タイルビューアー</translation> + </message> + <message> + <location filename="../AssetTile.ui" line="41"/> + <source>Tile #</source> + <translation>タイル #</translation> + </message> + <message> + <location filename="../AssetTile.ui" line="48"/> + <location filename="../AssetTile.ui" line="72"/> + <source>0</source> + <translation>0</translation> + </message> + <message> + <location filename="../AssetTile.ui" line="65"/> + <source>Palette #</source> + <translation>パレット #</translation> + </message> + <message> + <location filename="../AssetTile.ui" line="86"/> + <source>Address</source> + <translation>アドレス</translation> + </message> + <message> + <location filename="../AssetTile.ui" line="93"/> + <source>0x06000000</source> + <translation>0x06000000</translation> + </message> + <message> + <location filename="../AssetTile.ui" line="135"/> + <source>Red</source> + <translation>Red</translation> + </message> + <message> + <location filename="../AssetTile.ui" line="142"/> + <source>Green</source> + <translation>Green</translation> + </message> + <message> + <location filename="../AssetTile.ui" line="149"/> + <source>Blue</source> + <translation>Blue</translation> + </message> + <message> + <location filename="../AssetTile.ui" line="163"/> + <location filename="../AssetTile.ui" line="170"/> + <location filename="../AssetTile.ui" line="177"/> + <source>0x00 (00)</source> + <translation>0x00 (00)</translation> + </message> +</context> +<context> + <name>BattleChipView</name> + <message> + <location filename="../BattleChipView.ui" line="14"/> + <source>BattleChip Gate</source> + <translation>チップゲート</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="67"/> + <source>Chip name</source> + <translation>チップ名</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="76"/> + <source>Insert</source> + <translation>挿入</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="87"/> + <source>Save</source> + <translation>保存</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="94"/> + <source>Load</source> + <translation>読込</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="114"/> + <source>Add</source> + <translation>追加</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="121"/> + <source>Remove</source> + <translation>削除</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="138"/> + <source>Gate type</source> + <translation>ゲートタイプ</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="145"/> + <source>Ba&amp;ttleChip Gate</source> + <translation>バトルチップゲート (&amp;T)</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="155"/> + <source>Progress &amp;Gate</source> + <translation>プログレスチップゲート (&amp;G)</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="162"/> + <source>Beast &amp;Link Gate</source> + <translation>ビーストリンクゲート (&amp;L)</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="180"/> + <source>Inserted</source> + <translation>挿入完了</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="194"/> + <source>Chip ID</source> + <translation>チップID</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="207"/> + <source>Update Chip data</source> + <translation>チップデータ更新</translation> + </message> + <message> + <location filename="../BattleChipView.ui" line="219"/> + <source>Show advanced</source> + <translation>詳細表示</translation> + </message> +</context> +<context> + <name>CheatsView</name> + <message> + <location filename="../CheatsView.ui" line="14"/> + <source>Cheats</source> + <translation>チート</translation> + </message> + <message> + <location filename="../CheatsView.ui" line="20"/> + <source>Remove</source> + <translation>削除</translation> + </message> + <message> + <location filename="../CheatsView.ui" line="34"/> + <source>Save</source> + <translation>保存</translation> + </message> + <message> + <location filename="../CheatsView.ui" line="41"/> + <source>Load</source> + <translation>読込</translation> + </message> + <message> + <location filename="../CheatsView.ui" line="48"/> + <source>Add New Set</source> + <translation>新規セット追加</translation> + </message> + <message> + <location filename="../CheatsView.ui" line="55"/> + <source>Add</source> + <translation>追加</translation> + </message> + <message> + <location filename="../CheatsView.ui" line="95"/> + <source>Enter codes here...</source> + <translation>ここにコードを入力してください...</translation> + </message> +</context> +<context> + <name>DebuggerConsole</name> + <message> + <location filename="../DebuggerConsole.ui" line="14"/> + <source>Debugger</source> + <translation>デバッガ</translation> + </message> + <message> + <location filename="../DebuggerConsole.ui" line="25"/> + <source>Enter command (try `help` for more info)</source> + <translation>コマンドを入力してください(`help`でヘルプ情報)</translation> + </message> + <message> + <location filename="../DebuggerConsole.ui" line="32"/> + <source>Break</source> + <translation>Break</translation> + </message> +</context> +<context> + <name>FrameView</name> + <message> + <location filename="../FrameView.ui" line="14"/> + <source>Inspect frame</source> + <translation>フレームインスペクタ</translation> + </message> + <message> + <location filename="../FrameView.ui" line="28"/> + <source>×</source> + <translation>×</translation> + </message> + <message> + <location filename="../FrameView.ui" line="41"/> + <source>Magnification</source> + <translation>倍率</translation> + </message> + <message> + <location filename="../FrameView.ui" line="50"/> + <source>Freeze frame</source> + <translation>フレームをフリーズ</translation> + </message> + <message> + <location filename="../FrameView.ui" line="84"/> + <source>Backdrop color</source> + <translation>背景色</translation> + </message> + <message> + <location filename="../FrameView.ui" line="132"/> + <source>Disable scanline effects</source> + <translation>スキャンライン効果を無効</translation> + </message> + <message> + <location filename="../FrameView.ui" line="145"/> + <source>Export</source> + <translation>保存</translation> + </message> + <message> + <location filename="../FrameView.ui" line="152"/> + <source>Reset</source> + <translation>リセット</translation> + </message> +</context> +<context> + <name>GIFView</name> + <message> + <location filename="../GIFView.ui" line="14"/> + <source>Record GIF/APNG</source> + <translation>GIF/APNG録画</translation> + </message> + <message> + <location filename="../GIFView.ui" line="68"/> + <source>Start</source> + <translation>開始</translation> + </message> + <message> + <location filename="../GIFView.ui" line="84"/> + <source>Stop</source> + <translation>停止</translation> + </message> + <message> + <location filename="../GIFView.ui" line="110"/> + <source>Select File</source> + <translation>ファイル選択</translation> + </message> + <message> + <location filename="../GIFView.ui" line="148"/> + <source>Loop</source> + <translation>ループ</translation> + </message> + <message> + <location filename="../GIFView.ui" line="36"/> + <source>Frameskip</source> + <translation>フレームスキップ</translation> + </message> + <message> + <source>Frame delay (ms)</source> + <translation type="vanished">Frame delay (ms)</translation> + </message> + <message> + <source>Automatic</source> + <translation type="vanished">Automatic</translation> + </message> +</context> +<context> + <name>IOViewer</name> + <message> + <location filename="../IOViewer.ui" line="14"/> + <source>I/O Viewer</source> + <translation>IOビューアー</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="26"/> + <source>0x0000</source> + <translation>0x0000</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="58"/> + <source>2</source> + <translation>2</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="82"/> + <source>5</source> + <translation>5</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="100"/> + <source>4</source> + <translation>4</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="118"/> + <source>7</source> + <translation>7</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="136"/> + <source>0</source> + <translation>0</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="157"/> + <source>9</source> + <translation>9</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="178"/> + <source>1</source> + <translation>1</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="196"/> + <source>3</source> + <translation>3</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="217"/> + <source>8</source> + <translation>8</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="241"/> + <source>C</source> + <translation>C</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="259"/> + <source>E</source> + <translation>E</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="283"/> + <source>6</source> + <translation>6</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="310"/> + <source>D</source> + <translation>D</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="328"/> + <source>F</source> + <translation>F</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="346"/> + <source>A</source> + <translation>A</translation> + </message> + <message> + <location filename="../IOViewer.ui" line="364"/> + <source>B</source> + <translation>B</translation> + </message> +</context> +<context> + <name>LibraryTree</name> + <message> + <location filename="../library/LibraryTree.cpp" line="46"/> + <source>Name</source> + <translation>ゲーム名</translation> + </message> + <message> + <location filename="../library/LibraryTree.cpp" line="47"/> + <source>Location</source> + <translation>場所</translation> + </message> + <message> + <location filename="../library/LibraryTree.cpp" line="48"/> + <source>Platform</source> + <translation>プラットフォーム</translation> + </message> + <message> + <location filename="../library/LibraryTree.cpp" line="49"/> + <source>Size</source> + <translation>サイズ</translation> + </message> + <message> + <location filename="../library/LibraryTree.cpp" line="50"/> + <source>CRC32</source> + <translation>CRC32</translation> + </message> +</context> +<context> + <name>LoadSaveState</name> + <message> + <location filename="../LoadSaveState.ui" line="14"/> + <location filename="../LoadSaveState.ui" line="66"/> + <source>%1 State</source> + <translation>ステート %1</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="41"/> + <location filename="../LoadSaveState.ui" line="85"/> + <location filename="../LoadSaveState.ui" line="107"/> + <location filename="../LoadSaveState.ui" line="129"/> + <location filename="../LoadSaveState.ui" line="151"/> + <location filename="../LoadSaveState.ui" line="173"/> + <location filename="../LoadSaveState.ui" line="195"/> + <location filename="../LoadSaveState.ui" line="217"/> + <location filename="../LoadSaveState.ui" line="239"/> + <source>No Save</source> + <translation>保存しない</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="160"/> + <source>1</source> + <translation>1</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="248"/> + <source>2</source> + <translation>2</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="261"/> + <source>Cancel</source> + <translation>キャンセル</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="182"/> + <source>3</source> + <translation>3</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="138"/> + <source>4</source> + <translation>4</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="50"/> + <source>5</source> + <translation>5</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="94"/> + <source>6</source> + <translation>6</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="204"/> + <source>7</source> + <translation>7</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="116"/> + <source>8</source> + <translation>8</translation> + </message> + <message> + <location filename="../LoadSaveState.ui" line="226"/> + <source>9</source> + <translation>9</translation> + </message> +</context> +<context> + <name>LogView</name> + <message> + <location filename="../LogView.ui" line="14"/> + <source>Logs</source> + <translation>ログ</translation> + </message> + <message> + <location filename="../LogView.ui" line="22"/> + <source>Enabled Levels</source> + <translation>有効レベル</translation> + </message> + <message> + <location filename="../LogView.ui" line="28"/> + <source>Debug</source> + <translation>Debug</translation> + </message> + <message> + <location filename="../LogView.ui" line="38"/> + <source>Stub</source> + <translation>Stub</translation> + </message> + <message> + <location filename="../LogView.ui" line="48"/> + <source>Info</source> + <translation>Info</translation> + </message> + <message> + <location filename="../LogView.ui" line="58"/> + <source>Warning</source> + <translation>Warning</translation> + </message> + <message> + <location filename="../LogView.ui" line="68"/> + <source>Error</source> + <translation>Error</translation> + </message> + <message> + <location filename="../LogView.ui" line="78"/> + <source>Fatal</source> + <translation>Fatal</translation> + </message> + <message> + <location filename="../LogView.ui" line="95"/> + <source>Game Error</source> + <translation>Game Error</translation> + </message> + <message> + <location filename="../LogView.ui" line="121"/> + <source>Clear</source> + <translation>消去</translation> + </message> + <message> + <location filename="../LogView.ui" line="130"/> + <source>Max Lines</source> + <translation>最大行数</translation> + </message> +</context> +<context> + <name>MapView</name> + <message> + <location filename="../MapView.ui" line="14"/> + <source>Maps</source> + <translation>マップビューアー</translation> + </message> + <message> + <location filename="../MapView.ui" line="30"/> + <source>×</source> + <translation>×</translation> + </message> + <message> + <location filename="../MapView.ui" line="43"/> + <source>Magnification</source> + <translation>倍率</translation> + </message> + <message> + <location filename="../MapView.ui" line="124"/> + <source>Export</source> + <translation>保存</translation> + </message> + <message> + <location filename="../MapView.ui" line="139"/> + <source>Copy</source> + <translation>コピー</translation> + </message> +</context> +<context> + <name>MemoryDump</name> + <message> + <location filename="../MemoryDump.ui" line="14"/> + <source>Save Memory Range</source> + <translation>メモリ範囲を保存</translation> + </message> + <message> + <location filename="../MemoryDump.ui" line="20"/> + <source>Start Address:</source> + <translation>開始アドレス:</translation> + </message> + <message> + <location filename="../MemoryDump.ui" line="42"/> + <source>:</source> + <translation>:</translation> + </message> + <message> + <location filename="../MemoryDump.ui" line="58"/> + <location filename="../MemoryDump.ui" line="89"/> + <source>0x</source> + <translation>0x</translation> + </message> + <message> + <location filename="../MemoryDump.ui" line="76"/> + <source>Byte Count:</source> + <translation>バイト数:</translation> + </message> + <message> + <location filename="../MemoryDump.ui" line="108"/> + <source>Dump across banks</source> + <translation>Dump across banks</translation> + </message> +</context> +<context> + <name>MemorySearch</name> + <message> + <location filename="../MemorySearch.ui" line="26"/> + <source>Memory Search</source> + <translation>メモリサーチ</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="51"/> + <source>Address</source> + <translation>アドレス</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="56"/> + <source>Current Value</source> + <translation>現在値</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="61"/> + <location filename="../MemorySearch.ui" line="81"/> + <source>Type</source> + <translation>タイプ</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="71"/> + <source>Value</source> + <translation>値</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="88"/> + <source>Numeric</source> + <translation>数値</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="101"/> + <source>Text</source> + <translation>文字列</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="118"/> + <source>Width</source> + <translation>データサイズ</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="138"/> + <source>1 Byte (8-bit)</source> + <translation>1 Byte (8-bit)</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="148"/> + <source>2 Bytes (16-bit)</source> + <translation>2 Bytes (16-bit)</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="158"/> + <source>4 Bytes (32-bit)</source> + <translation>4 Bytes (32-bit)</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="178"/> + <source>Number type</source> + <translation>数値タイプ</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="202"/> + <source>Hexadecimal</source> + <translation>16進数</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="216"/> + <source>Search type</source> + <translation>サーチタイプ</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="223"/> + <source>Equal to value</source> + <translation>同じ値</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="236"/> + <source>Greater than value</source> + <translation>大きい値</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="246"/> + <source>Less than value</source> + <translation>小さい値</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="256"/> + <source>Unknown/changed</source> + <translation>不明/変更</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="269"/> + <source>Changed by value</source> + <translation>変わった値</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="282"/> + <source>Unchanged</source> + <translation>変更なし</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="295"/> + <source>Increased</source> + <translation>増加</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="308"/> + <source>Decreased</source> + <translation>減少</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="318"/> + <source>Search ROM</source> + <translation>ROMサーチ</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="336"/> + <source>New Search</source> + <translation>新規サーチ</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="195"/> + <source>Decimal</source> + <translation>10進数</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="125"/> + <location filename="../MemorySearch.ui" line="185"/> + <source>Guess</source> + <translation>推測</translation> + </message> + <message> + <source>Compare</source> + <translation type="vanished">Compare</translation> + </message> + <message> + <source>Equal</source> + <translation type="vanished">Equal</translation> + </message> + <message> + <source>Greater</source> + <translation type="vanished">Greater</translation> + </message> + <message> + <source>Less</source> + <translation type="vanished">Less</translation> + </message> + <message> + <source>Delta</source> + <translation type="vanished">Delta</translation> + </message> + <message> + <source>Search</source> + <translation type="vanished">Search</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="343"/> + <source>Search Within</source> + <translation>サーチ</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="350"/> + <source>Open in Memory Viewer</source> + <translation>メモリービューアーを開く</translation> + </message> + <message> + <location filename="../MemorySearch.ui" line="357"/> + <source>Refresh</source> + <translation>更新</translation> + </message> +</context> +<context> + <name>MemoryView</name> + <message> + <location filename="../MemoryView.ui" line="14"/> + <source>Memory</source> + <translation>メモリービューアー</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="38"/> + <source>Inspect Address:</source> + <translation>アドレス:</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="58"/> + <source>:</source> + <translation>:</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="68"/> + <source>0x</source> + <translation>0x</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="88"/> + <source>Set Alignment:</source> + <translation>表示:</translation> + </message> + <message> + <source>1 Byte</source> + <translation type="vanished">1 Byte</translation> + </message> + <message> + <source>2 Bytes</source> + <translation type="vanished">2 Bytes</translation> + </message> + <message> + <source>4 Bytes</source> + <translation type="vanished">4 Bytes</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="108"/> + <source>&amp;1 Byte</source> + <translation>&amp;1 Byte</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="131"/> + <source>&amp;2 Bytes</source> + <translation>&amp;2 Bytes</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="151"/> + <source>&amp;4 Bytes</source> + <translation>&amp;4 Bytes</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="187"/> + <source>Unsigned Integer:</source> + <translation>符号なし整数:</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="205"/> + <source>Signed Integer:</source> + <translation>符号付き整数:</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="223"/> + <source>String:</source> + <translation>文字列:</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="237"/> + <source>Load TBL</source> + <translation>TBLを開く</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="250"/> + <source>Copy Selection</source> + <translation>選択値をコピー</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="257"/> + <source>Paste</source> + <translation>貼り付け</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="277"/> + <source>Save Selection</source> + <translation>選択値を保存</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="284"/> + <source>Save Range</source> + <translation>範囲で保存...</translation> + </message> + <message> + <location filename="../MemoryView.ui" line="291"/> + <source>Load</source> + <translation>読込</translation> + </message> +</context> +<context> + <name>ObjView</name> + <message> + <location filename="../ObjView.ui" line="14"/> + <source>Sprites</source> + <translation>スプライトビューアー</translation> + </message> + <message> + <location filename="../ObjView.ui" line="137"/> + <location filename="../ObjView.ui" line="568"/> + <source>×</source> + <translation>×</translation> + </message> + <message> + <location filename="../ObjView.ui" line="581"/> + <source>Magnification</source> + <translation>倍率</translation> + </message> + <message> + <location filename="../ObjView.ui" line="212"/> + <source>Export</source> + <translation>保存</translation> + </message> + <message> + <location filename="../ObjView.ui" line="219"/> + <source>Attributes</source> + <translation>属性</translation> + </message> + <message> + <location filename="../ObjView.ui" line="227"/> + <source>Transform</source> + <translation>変換</translation> + </message> + <message> + <location filename="../ObjView.ui" line="247"/> + <source>Off</source> + <translation>Off</translation> + </message> + <message> + <location filename="../ObjView.ui" line="258"/> + <source>Palette</source> + <translation>パレット</translation> + </message> + <message> + <location filename="../ObjView.ui" line="61"/> + <location filename="../ObjView.ui" line="87"/> + <location filename="../ObjView.ui" line="278"/> + <location filename="../ObjView.ui" line="508"/> + <source>0</source> + <translation>0</translation> + </message> + <message> + <location filename="../ObjView.ui" line="20"/> + <source>Copy</source> + <translation>コピー</translation> + </message> + <message> + <location filename="../ObjView.ui" line="292"/> + <source>Double Size</source> + <translation>ダブルサイズ</translation> + </message> + <message> + <location filename="../ObjView.ui" line="318"/> + <location filename="../ObjView.ui" line="362"/> + <location filename="../ObjView.ui" line="375"/> + <location filename="../ObjView.ui" line="443"/> + <source>Return, Ctrl+R</source> + <translation>Return, Ctrl+R</translation> + </message> + <message> + <location filename="../ObjView.ui" line="336"/> + <source>Flipped</source> + <translation>反転</translation> + </message> + <message> + <location filename="../ObjView.ui" line="359"/> + <source>H</source> + <translation>横</translation> + </message> + <message> + <location filename="../ObjView.ui" line="372"/> + <source>V</source> + <translation>縦</translation> + </message> + <message> + <location filename="../ObjView.ui" line="386"/> + <source>Mode</source> + <translation>モード</translation> + </message> + <message> + <location filename="../ObjView.ui" line="406"/> + <source>Normal</source> + <translation>ノーマル</translation> + </message> + <message> + <location filename="../ObjView.ui" line="417"/> + <source>Mosaic</source> + <translation>モザイク</translation> + </message> + <message> + <location filename="../ObjView.ui" line="454"/> + <source>Enabled</source> + <translation>有効</translation> + </message> + <message> + <location filename="../ObjView.ui" line="488"/> + <source>Priority</source> + <translation>優先度</translation> + </message> + <message> + <location filename="../ObjView.ui" line="205"/> + <source>Tile</source> + <translation>タイル</translation> + </message> + <message> + <location filename="../ObjView.ui" line="27"/> + <source>Geometry</source> + <translation>ジオメトリ</translation> + </message> + <message> + <location filename="../ObjView.ui" line="35"/> + <source>Position</source> + <translation>位置</translation> + </message> + <message> + <location filename="../ObjView.ui" line="71"/> + <source>, </source> + <translation>, </translation> + </message> + <message> + <location filename="../ObjView.ui" line="101"/> + <source>Dimensions</source> + <translation>サイズ</translation> + </message> + <message> + <location filename="../ObjView.ui" line="127"/> + <location filename="../ObjView.ui" line="153"/> + <source>8</source> + <translation>8</translation> + </message> + <message> + <location filename="../ObjView.ui" line="538"/> + <source>Address</source> + <translation>アドレス</translation> + </message> + <message> + <location filename="../ObjView.ui" line="545"/> + <source>0x07000000</source> + <translation>0x07000000</translation> + </message> +</context> +<context> + <name>OverrideView</name> + <message> + <location filename="../OverrideView.ui" line="20"/> + <source>Game Overrides</source> + <translation>ゲーム別設定</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="30"/> + <source>Game Boy Advance</source> + <translation>ゲームボーイアドバンス</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="42"/> + <location filename="../OverrideView.ui" line="121"/> + <location filename="../OverrideView.ui" line="248"/> + <location filename="../OverrideView.ui" line="284"/> + <source>Autodetect</source> + <translation>自動検出</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="55"/> + <source>Realtime clock</source> + <translation>リアルタイムクロック</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="65"/> + <source>Gyroscope</source> + <translation>回転センサー</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="75"/> + <source>Tilt</source> + <translation>動きセンサー</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="85"/> + <source>Light sensor</source> + <translation>光センサー</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="95"/> + <source>Rumble</source> + <translation>振動</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="113"/> + <source>Save type</source> + <translation>セーブ形式</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="126"/> + <location filename="../OverrideView.ui" line="289"/> + <source>None</source> + <translation>None</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="131"/> + <source>SRAM</source> + <translation>SRAM</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="136"/> + <source>Flash 512kb</source> + <translation>Flash 512kb</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="141"/> + <source>Flash 1Mb</source> + <translation>Flash 1Mb</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="146"/> + <source>EEPROM</source> + <translation>EEPROM</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="154"/> + <source>Idle loop</source> + <translation>アイドルループ</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="195"/> + <source>Game Boy Player features</source> + <translation>ゲームボーイプレイヤーモード</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="234"/> + <source>Game Boy</source> + <translation>ゲームボーイ</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="240"/> + <source>Game Boy model</source> + <translation>ゲームボーイモード</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="253"/> + <source>Game Boy (DMG)</source> + <translation>Game Boy (DMG)</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="258"/> + <source>Super Game Boy (SGB)</source> + <translation>Super Game Boy (SGB)</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="263"/> + <source>Game Boy Color (CGB)</source> + <translation>Game Boy Color (CGB)</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="268"/> + <source>Game Boy Advance (AGB)</source> + <translation>Game Boy Advance (AGB)</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="276"/> + <source>Memory bank controller</source> + <translation>メモリバンクコントローラ</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="294"/> + <source>MBC1</source> + <translation>MBC1</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="299"/> + <source>MBC2</source> + <translation>MBC2</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="304"/> + <source>MBC3</source> + <translation>MBC3</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="309"/> + <source>MBC3 + RTC</source> + <translation>MBC3 + RTC</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="314"/> + <source>MBC5</source> + <translation>MBC5</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="319"/> + <source>MBC5 + Rumble</source> + <translation>MBC5 + Rumble</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="324"/> + <source>MBC6</source> + <translation>MBC6</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="329"/> + <source>MBC7</source> + <translation>MBC7</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="334"/> + <source>MMM01</source> + <translation>MMM01</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="339"/> + <source>Pocket Cam</source> + <translation>ポケットカメラ</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="344"/> + <source>TAMA5</source> + <translation>TAMA5</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="349"/> + <source>HuC-1</source> + <translation>HuC-1</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="354"/> + <source>HuC-3</source> + <translation>HuC-3</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="359"/> + <source>Wisdom Tree (Unlicensed)</source> + <translation>Wisdom Tree (Unlicensed)</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="364"/> + <source>Pokémon Jade/Diamond (Unlicensed)</source> + <translation>Pokémon Jade/Diamond (Unlicensed)</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="372"/> + <source>Background Colors</source> + <translation>背景色</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="449"/> + <source>Sprite Colors 1</source> + <translation>スプライト1</translation> + </message> + <message> + <location filename="../OverrideView.ui" line="456"/> + <source>Sprite Colors 2</source> + <translation>スプライト2</translation> + </message> + <message> + <source>Colors</source> + <translation type="vanished">Colors</translation> + </message> +</context> +<context> + <name>PaletteView</name> + <message> + <location filename="../PaletteView.ui" line="14"/> + <source>Palette</source> + <translation>パレットビュアー</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="44"/> + <source>Background</source> + <translation>バックグラウンド</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="94"/> + <source>Objects</source> + <translation>オブジェクト</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="153"/> + <source>Selection</source> + <translation>選択</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="184"/> + <source>Red</source> + <translation>Red</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="191"/> + <source>Green</source> + <translation>Green</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="198"/> + <source>Blue</source> + <translation>Blue</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="212"/> + <location filename="../PaletteView.ui" line="219"/> + <location filename="../PaletteView.ui" line="226"/> + <source>0x00 (00)</source> + <translation>0x00 (00)</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="244"/> + <source>16-bit value</source> + <translation>値</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="251"/> + <source>Hex code</source> + <translation>16進数カラーコード</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="258"/> + <source>Palette index</source> + <translation>パレットインデックス</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="272"/> + <source>0x0000</source> + <translation>0x0000</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="282"/> + <source>#000000</source> + <translation>#000000</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="292"/> + <source>000</source> + <translation>000</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="322"/> + <source>Export BG</source> + <translation>BGの保存</translation> + </message> + <message> + <location filename="../PaletteView.ui" line="342"/> + <source>Export OBJ</source> + <translation>OBJの保存</translation> + </message> +</context> +<context> + <name>PlacementControl</name> + <message> + <location filename="../PlacementControl.ui" line="20"/> + <source>Adjust placement</source> + <translation>配置調整</translation> + </message> + <message> + <location filename="../PlacementControl.ui" line="26"/> + <source>All</source> + <translation>All</translation> + </message> + <message> + <location filename="../PlacementControl.ui" line="65"/> + <source>Offset</source> + <translation>Offset</translation> + </message> + <message> + <location filename="../PlacementControl.ui" line="72"/> + <source>X</source> + <translation>X</translation> + </message> + <message> + <location filename="../PlacementControl.ui" line="79"/> + <source>Y</source> + <translation>Y</translation> + </message> +</context> +<context> + <name>PrinterView</name> + <message> + <location filename="../PrinterView.ui" line="14"/> + <source>Game Boy Printer</source> + <translation>ポケットプリンタ</translation> + </message> + <message> + <location filename="../PrinterView.ui" line="130"/> + <source>Hurry up!</source> + <translation>急げ!</translation> + </message> + <message> + <location filename="../PrinterView.ui" line="137"/> + <source>Tear off</source> + <translation>切り取る</translation> + </message> + <message> + <location filename="../PrinterView.ui" line="167"/> + <source>×</source> + <translation>×</translation> + </message> + <message> + <location filename="../PrinterView.ui" line="180"/> + <source>Magnification</source> + <translation>倍率</translation> + </message> +</context> +<context> + <name>QGBA::AssetTile</name> + <message> + <location filename="../AssetTile.cpp" line="104"/> + <source>%0%1%2</source> + <translation>%0%1%2</translation> + </message> + <message> + <location filename="../AssetTile.cpp" line="143"/> + <location filename="../AssetTile.cpp" line="144"/> + <location filename="../AssetTile.cpp" line="145"/> + <source>0x%0 (%1)</source> + <translation>0x%0 (%1)</translation> + </message> +</context> +<context> + <name>QGBA::AudioDevice</name> + <message> + <location filename="../AudioDevice.cpp" line="26"/> + <source>Can&apos;t set format of context-less audio device</source> + <translation>コンテキストレスオーディオデバイスのフォーマットを設定できません</translation> + </message> + <message> + <location filename="../AudioDevice.cpp" line="48"/> + <source>Audio device is missing its core</source> + <translation>オーディオデバイスにコアがありません</translation> + </message> + <message> + <location filename="../AudioDevice.cpp" line="64"/> + <source>Writing data to read-only audio device</source> + <translation>読み取り専用オーディオデバイスへのデータの書き込み</translation> + </message> +</context> +<context> + <name>QGBA::AudioProcessorQt</name> + <message> + <location filename="../AudioProcessorQt.cpp" line="43"/> + <source>Can&apos;t start an audio processor without input</source> + <translation>入力なしではオーディオプロセッサを起動できません</translation> + </message> +</context> +<context> + <name>QGBA::AudioProcessorSDL</name> + <message> + <location filename="../AudioProcessorSDL.cpp" line="34"/> + <source>Can&apos;t start an audio processor without input</source> + <translation>入力なしではオーディオプロセッサを起動できません</translation> + </message> +</context> +<context> + <name>QGBA::BattleChipView</name> + <message> + <location filename="../BattleChipView.cpp" line="114"/> + <source>BattleChip data missing</source> + <translation>バトルチップデータがありません</translation> + </message> + <message> + <location filename="../BattleChipView.cpp" line="115"/> + <source>BattleChip data is missing. BattleChip Gates will still work, but some graphics will be missing. Would you like to download the data now?</source> + <translation>バトルチップデータがありません。チップゲートは引き続き機能しますが、一部のグラフィックが表示されなくなります。今すぐチップデータをダウンロードしますか?</translation> + </message> + <message> + <location filename="../BattleChipView.cpp" line="181"/> + <location filename="../BattleChipView.cpp" line="200"/> + <source>Select deck file</source> + <translation>デッキファイルを選択</translation> + </message> + <message> + <location filename="../BattleChipView.cpp" line="212"/> + <source>Incompatible deck</source> + <translation>互換性のないデッキ</translation> + </message> + <message> + <location filename="../BattleChipView.cpp" line="213"/> + <source>The selected deck is not compatible with this Chip Gate</source> + <translation>選択したデッキはこのチップゲートと互換性がありません</translation> + </message> +</context> +<context> + <name>QGBA::CheatsModel</name> + <message> + <location filename="../CheatsModel.cpp" line="54"/> + <source>(untitled)</source> + <translation>(タイトルなし)</translation> + </message> + <message> + <location filename="../CheatsModel.cpp" line="213"/> + <source>Failed to open cheats file: %1</source> + <translation>チートファイルを開けませんでした: %1</translation> + </message> +</context> +<context> + <name>QGBA::CheatsView</name> + <message> + <location filename="../CheatsView.cpp" line="49"/> + <location filename="../CheatsView.cpp" line="74"/> + <source>Add GameShark</source> + <translation>追加(GameShark)</translation> + </message> + <message> + <location filename="../CheatsView.cpp" line="55"/> + <source>Add Pro Action Replay</source> + <translation>追加(Pro Action Replay)</translation> + </message> + <message> + <location filename="../CheatsView.cpp" line="61"/> + <source>Add CodeBreaker</source> + <translation>追加(CodeBreaker)</translation> + </message> + <message> + <location filename="../CheatsView.cpp" line="80"/> + <source>Add GameGenie</source> + <translation>追加(GameGenie)</translation> + </message> + <message> + <location filename="../CheatsView.cpp" line="112"/> + <location filename="../CheatsView.cpp" line="119"/> + <source>Select cheats file</source> + <translation>チートファイルを選択</translation> + </message> +</context> +<context> + <name>QGBA::CoreController</name> + <message> + <location filename="../CoreController.cpp" line="593"/> + <source>Failed to open save file: %1</source> + <translation>保存ファイルを開けませんでした: %1</translation> + </message> + <message> + <location filename="../CoreController.cpp" line="622"/> + <source>Failed to open game file: %1</source> + <translation>ゲームファイルを開けませんでした: %1</translation> + </message> + <message> + <location filename="../CoreController.cpp" line="690"/> + <source>Failed to open snapshot file for reading: %1</source> + <translation>読み取り用のスナップショットファイルを開けませんでした: %1</translation> + </message> + <message> + <location filename="../CoreController.cpp" line="706"/> + <source>Failed to open snapshot file for writing: %1</source> + <translation>書き込み用のスナップショットファイルを開けませんでした: %1</translation> + </message> +</context> +<context> + <name>QGBA::CoreManager</name> + <message> + <location filename="../CoreManager.cpp" line="54"/> + <source>Failed to open game file: %1</source> + <translation>ゲームファイルを開けませんでした: %1</translation> + </message> +</context> +<context> + <name>QGBA::FrameView</name> + <message> + <location filename="../FrameView.cpp" line="430"/> + <source>Export frame</source> + <translation>フレームを保存</translation> + </message> + <message> + <location filename="../FrameView.cpp" line="431"/> + <source>Portable Network Graphics (*.png)</source> + <translation>Portable Network Graphics (*.png)</translation> + </message> + <message> + <location filename="../FrameView.cpp" line="449"/> + <source>None</source> + <translation>None</translation> + </message> + <message> + <location filename="../FrameView.cpp" line="451"/> + <source>Background</source> + <translation>バックグラウンド</translation> + </message> + <message> + <location filename="../FrameView.cpp" line="454"/> + <source>Window</source> + <translation>ウインドウ</translation> + </message> + <message> + <location filename="../FrameView.cpp" line="457"/> + <source>Sprite</source> + <translation>スプライト</translation> + </message> + <message> + <location filename="../FrameView.cpp" line="460"/> + <source>Backdrop</source> + <translation>背景</translation> + </message> + <message> + <location filename="../FrameView.cpp" line="466"/> + <source>%1 %2</source> + <translation>%1 %2</translation> + </message> +</context> +<context> + <name>QGBA::GBAApp</name> + <message> + <location filename="../GBAApp.cpp" line="69"/> + <source>Enable Discord Rich Presence</source> + <translation>DiscordのRich Presence有効</translation> + </message> +</context> +<context> + <name>QGBA::GBAKeyEditor</name> + <message> + <location filename="../GBAKeyEditor.cpp" line="68"/> + <source>Clear Button</source> + <translation>ボタンクリア</translation> + </message> + <message> + <location filename="../GBAKeyEditor.cpp" line="80"/> + <source>Clear Analog</source> + <translation>アナログクリア</translation> + </message> + <message> + <location filename="../GBAKeyEditor.cpp" line="91"/> + <source>Refresh</source> + <translation>更新</translation> + </message> + <message> + <location filename="../GBAKeyEditor.cpp" line="101"/> + <source>Set all</source> + <translation>すべて設定</translation> + </message> +</context> +<context> + <name>QGBA::GDBWindow</name> + <message> + <location filename="../GDBWindow.cpp" line="28"/> + <source>Server settings</source> + <translation>サーバ設定</translation> + </message> + <message> + <location filename="../GDBWindow.cpp" line="34"/> + <source>Local port</source> + <translation>ローカルポート</translation> + </message> + <message> + <location filename="../GDBWindow.cpp" line="36"/> + <source>Bind address</source> + <translation>バインドアドレス</translation> + </message> + <message> + <location filename="../GDBWindow.cpp" line="55"/> + <source>Break</source> + <translation>Break</translation> + </message> + <message> + <location filename="../GDBWindow.cpp" line="104"/> + <source>Stop</source> + <translation>停止</translation> + </message> + <message> + <location filename="../GDBWindow.cpp" line="114"/> + <source>Start</source> + <translation>開始</translation> + </message> + <message> + <location filename="../GDBWindow.cpp" line="122"/> + <source>Crash</source> + <translation>クラッシュ</translation> + </message> + <message> + <location filename="../GDBWindow.cpp" line="122"/> + <source>Could not start GDB server</source> + <translation>GDBサーバを起動できませんでした</translation> + </message> +</context> +<context> + <name>QGBA::GIFView</name> + <message> + <location filename="../GIFView.cpp" line="49"/> + <source>Failed to open output GIF file: %1</source> + <translation>出力GIFファイルを開けませんでした: %1</translation> + </message> + <message> + <location filename="../GIFView.cpp" line="67"/> + <source>Select output file</source> + <translation>出力ファイルを選択</translation> + </message> + <message> + <location filename="../GIFView.cpp" line="67"/> + <source>Graphics Interchange Format (*.gif)</source> + <translation>Graphics Interchange Format (*.gif)</translation> + </message> +</context> +<context> + <name>QGBA::GameController</name> + <message> + <source>Failed to open game file: %1</source> + <translation type="vanished">Failed to open game file: %1</translation> + </message> + <message> + <source>Failed to open save file: %1</source> + <translation type="vanished">Failed to open save file: %1</translation> + </message> + <message> + <source>Failed to open snapshot file for reading: %1</source> + <translation type="vanished">Failed to open snapshot file for reading: %1</translation> + </message> + <message> + <source>Failed to open snapshot file for writing: %1</source> + <translation type="vanished">Failed to open snapshot file for writing: %1</translation> + </message> + <message> + <source>Failed to start audio processor</source> + <translation type="vanished">Failed to start audio processor</translation> + </message> +</context> +<context> + <name>QGBA::IOViewer</name> + <message> + <location filename="../IOViewer.cpp" line="30"/> + <source>Background mode</source> + <translation>Background mode</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="31"/> + <source>Mode 0: 4 tile layers</source> + <translation>Mode 0: 4 tile layers</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="32"/> + <source>Mode 1: 2 tile layers + 1 rotated/scaled tile layer</source> + <translation>Mode 1: 2 tile layers + 1 rotated/scaled tile layer</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="33"/> + <source>Mode 2: 2 rotated/scaled tile layers</source> + <translation>Mode 2: 2 rotated/scaled tile layers</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="34"/> + <source>Mode 3: Full 15-bit bitmap</source> + <translation>Mode 3: Full 15-bit bitmap</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="35"/> + <source>Mode 4: Full 8-bit bitmap</source> + <translation>Mode 4: Full 8-bit bitmap</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="36"/> + <source>Mode 5: Small 15-bit bitmap</source> + <translation>Mode 5: Small 15-bit bitmap</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="40"/> + <source>CGB Mode</source> + <translation>CGB Mode</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="41"/> + <source>Frame select</source> + <translation>Frame select</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="42"/> + <source>Unlocked HBlank</source> + <translation>Unlocked HBlank</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="43"/> + <source>Linear OBJ tile mapping</source> + <translation>Linear OBJ tile mapping</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="44"/> + <source>Force blank screen</source> + <translation>Force blank screen</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="45"/> + <source>Enable background 0</source> + <translation>Enable background 0</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="46"/> + <source>Enable background 1</source> + <translation>Enable background 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="47"/> + <source>Enable background 2</source> + <translation>Enable background 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="48"/> + <source>Enable background 3</source> + <translation>Enable background 3</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="49"/> + <source>Enable OBJ</source> + <translation>Enable OBJ</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="50"/> + <source>Enable Window 0</source> + <translation>Enable Window 0</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="51"/> + <source>Enable Window 1</source> + <translation>Enable Window 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="52"/> + <source>Enable OBJ Window</source> + <translation>Enable OBJ Window</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="58"/> + <source>Currently in VBlank</source> + <translation>Currently in VBlank</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="59"/> + <source>Currently in HBlank</source> + <translation>Currently in HBlank</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="60"/> + <source>Currently in VCounter</source> + <translation>Currently in VCounter</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="61"/> + <source>Enable VBlank IRQ generation</source> + <translation>Enable VBlank IRQ generation</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="62"/> + <source>Enable HBlank IRQ generation</source> + <translation>Enable HBlank IRQ generation</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="63"/> + <source>Enable VCounter IRQ generation</source> + <translation>Enable VCounter IRQ generation</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="64"/> + <source>VCounter scanline</source> + <translation>VCounter scanline</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="68"/> + <source>Current scanline</source> + <translation>Current scanline</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="72"/> + <location filename="../IOViewer.cpp" line="81"/> + <location filename="../IOViewer.cpp" line="90"/> + <location filename="../IOViewer.cpp" line="100"/> + <source>Priority</source> + <translation>Priority</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="73"/> + <location filename="../IOViewer.cpp" line="82"/> + <location filename="../IOViewer.cpp" line="91"/> + <location filename="../IOViewer.cpp" line="101"/> + <source>Tile data base (* 16kB)</source> + <translation>Tile data base (* 16kB)</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="74"/> + <location filename="../IOViewer.cpp" line="83"/> + <location filename="../IOViewer.cpp" line="92"/> + <location filename="../IOViewer.cpp" line="102"/> + <source>Enable mosaic</source> + <translation>Enable mosaic</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="75"/> + <location filename="../IOViewer.cpp" line="84"/> + <location filename="../IOViewer.cpp" line="93"/> + <location filename="../IOViewer.cpp" line="103"/> + <source>Enable 256-color</source> + <translation>Enable 256-color</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="76"/> + <location filename="../IOViewer.cpp" line="85"/> + <location filename="../IOViewer.cpp" line="94"/> + <location filename="../IOViewer.cpp" line="104"/> + <source>Tile map base (* 2kB)</source> + <translation>Tile map base (* 2kB)</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="77"/> + <location filename="../IOViewer.cpp" line="86"/> + <location filename="../IOViewer.cpp" line="96"/> + <location filename="../IOViewer.cpp" line="106"/> + <source>Background dimensions</source> + <translation>Background dimensions</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="95"/> + <location filename="../IOViewer.cpp" line="105"/> + <source>Overflow wraps</source> + <translation>Overflow wraps</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="110"/> + <location filename="../IOViewer.cpp" line="118"/> + <location filename="../IOViewer.cpp" line="126"/> + <location filename="../IOViewer.cpp" line="134"/> + <source>Horizontal offset</source> + <translation>Horizontal offset</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="114"/> + <location filename="../IOViewer.cpp" line="122"/> + <location filename="../IOViewer.cpp" line="130"/> + <location filename="../IOViewer.cpp" line="138"/> + <source>Vertical offset</source> + <translation>Vertical offset</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="142"/> + <location filename="../IOViewer.cpp" line="147"/> + <location filename="../IOViewer.cpp" line="152"/> + <location filename="../IOViewer.cpp" line="157"/> + <location filename="../IOViewer.cpp" line="162"/> + <location filename="../IOViewer.cpp" line="171"/> + <location filename="../IOViewer.cpp" line="180"/> + <location filename="../IOViewer.cpp" line="185"/> + <location filename="../IOViewer.cpp" line="190"/> + <location filename="../IOViewer.cpp" line="195"/> + <location filename="../IOViewer.cpp" line="200"/> + <location filename="../IOViewer.cpp" line="209"/> + <source>Fractional part</source> + <translation>Fractional part</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="143"/> + <location filename="../IOViewer.cpp" line="148"/> + <location filename="../IOViewer.cpp" line="153"/> + <location filename="../IOViewer.cpp" line="158"/> + <location filename="../IOViewer.cpp" line="181"/> + <location filename="../IOViewer.cpp" line="186"/> + <location filename="../IOViewer.cpp" line="191"/> + <location filename="../IOViewer.cpp" line="196"/> + <source>Integer part</source> + <translation>Integer part</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="163"/> + <location filename="../IOViewer.cpp" line="172"/> + <location filename="../IOViewer.cpp" line="201"/> + <location filename="../IOViewer.cpp" line="210"/> + <source>Integer part (bottom)</source> + <translation>Integer part (bottom)</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="167"/> + <location filename="../IOViewer.cpp" line="176"/> + <location filename="../IOViewer.cpp" line="205"/> + <location filename="../IOViewer.cpp" line="214"/> + <source>Integer part (top)</source> + <translation>Integer part (top)</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="218"/> + <location filename="../IOViewer.cpp" line="223"/> + <source>End x</source> + <translation>End x</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="219"/> + <location filename="../IOViewer.cpp" line="224"/> + <source>Start x</source> + <translation>Start x</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="228"/> + <location filename="../IOViewer.cpp" line="233"/> + <source>End y</source> + <translation>End y</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="229"/> + <location filename="../IOViewer.cpp" line="234"/> + <source>Start y</source> + <translation>Start y</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="238"/> + <source>Window 0 enable BG 0</source> + <translation>Window 0 enable BG 0</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="239"/> + <source>Window 0 enable BG 1</source> + <translation>Window 0 enable BG 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="240"/> + <source>Window 0 enable BG 2</source> + <translation>Window 0 enable BG 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="241"/> + <source>Window 0 enable BG 3</source> + <translation>Window 0 enable BG 3</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="242"/> + <source>Window 0 enable OBJ</source> + <translation>Window 0 enable OBJ</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="243"/> + <source>Window 0 enable blend</source> + <translation>Window 0 enable blend</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="244"/> + <source>Window 1 enable BG 0</source> + <translation>Window 1 enable BG 0</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="245"/> + <source>Window 1 enable BG 1</source> + <translation>Window 1 enable BG 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="246"/> + <source>Window 1 enable BG 2</source> + <translation>Window 1 enable BG 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="247"/> + <source>Window 1 enable BG 3</source> + <translation>Window 1 enable BG 3</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="248"/> + <source>Window 1 enable OBJ</source> + <translation>Window 1 enable OBJ</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="249"/> + <source>Window 1 enable blend</source> + <translation>Window 1 enable blend</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="253"/> + <source>Outside window enable BG 0</source> + <translation>Outside window enable BG 0</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="254"/> + <source>Outside window enable BG 1</source> + <translation>Outside window enable BG 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="255"/> + <source>Outside window enable BG 2</source> + <translation>Outside window enable BG 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="256"/> + <source>Outside window enable BG 3</source> + <translation>Outside window enable BG 3</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="257"/> + <source>Outside window enable OBJ</source> + <translation>Outside window enable OBJ</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="258"/> + <source>Outside window enable blend</source> + <translation>Outside window enable blend</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="259"/> + <source>OBJ window enable BG 0</source> + <translation>OBJ window enable BG 0</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="260"/> + <source>OBJ window enable BG 1</source> + <translation>OBJ window enable BG 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="261"/> + <source>OBJ window enable BG 2</source> + <translation>OBJ window enable BG 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="262"/> + <source>OBJ window enable BG 3</source> + <translation>OBJ window enable BG 3</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="263"/> + <source>OBJ window enable OBJ</source> + <translation>OBJ window enable OBJ</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="264"/> + <source>OBJ window enable blend</source> + <translation>OBJ window enable blend</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="268"/> + <source>Background mosaic size vertical</source> + <translation>Background mosaic size vertical</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="269"/> + <source>Background mosaic size horizontal</source> + <translation>Background mosaic size horizontal</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="270"/> + <source>Object mosaic size vertical</source> + <translation>Object mosaic size vertical</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="271"/> + <source>Object mosaic size horizontal</source> + <translation>Object mosaic size horizontal</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="277"/> + <source>BG 0 target 1</source> + <translation>BG 0 target 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="278"/> + <source>BG 1 target 1</source> + <translation>BG 1 target 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="279"/> + <source>BG 2 target 1</source> + <translation>BG 2 target 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="280"/> + <source>BG 3 target 1</source> + <translation>BG 3 target 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="281"/> + <source>OBJ target 1</source> + <translation>OBJ target 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="282"/> + <source>Backdrop target 1</source> + <translation>Backdrop target 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="283"/> + <source>Blend mode</source> + <translation>Blend mode</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="284"/> + <source>Disabled</source> + <translation>Disabled</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="285"/> + <source>Additive blending</source> + <translation>Additive blending</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="286"/> + <source>Brighten</source> + <translation>Brighten</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="287"/> + <source>Darken</source> + <translation>Darken</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="289"/> + <source>BG 0 target 2</source> + <translation>BG 0 target 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="290"/> + <source>BG 1 target 2</source> + <translation>BG 1 target 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="291"/> + <source>BG 2 target 2</source> + <translation>BG 2 target 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="292"/> + <source>BG 3 target 2</source> + <translation>BG 3 target 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="293"/> + <source>OBJ target 2</source> + <translation>OBJ target 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="294"/> + <source>Backdrop target 2</source> + <translation>Backdrop target 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="298"/> + <source>Blend A (target 1)</source> + <translation>Blend A (target 1)</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="299"/> + <source>Blend B (target 2)</source> + <translation>Blend B (target 2)</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="303"/> + <source>Blend Y</source> + <translation>Blend Y</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="317"/> + <source>Sweep shifts</source> + <translation>Sweep shifts</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="318"/> + <source>Sweep subtract</source> + <translation>Sweep subtract</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="319"/> + <source>Sweep time (in 1/128s)</source> + <translation>Sweep time (in 1/128s)</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="323"/> + <location filename="../IOViewer.cpp" line="339"/> + <location filename="../IOViewer.cpp" line="363"/> + <location filename="../IOViewer.cpp" line="385"/> + <source>Sound length</source> + <translation>Sound length</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="324"/> + <location filename="../IOViewer.cpp" line="340"/> + <source>Duty cycle</source> + <translation>Duty cycle</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="325"/> + <location filename="../IOViewer.cpp" line="341"/> + <location filename="../IOViewer.cpp" line="386"/> + <source>Envelope step time</source> + <translation>Envelope step time</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="326"/> + <location filename="../IOViewer.cpp" line="342"/> + <location filename="../IOViewer.cpp" line="387"/> + <source>Envelope increase</source> + <translation>Envelope increase</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="327"/> + <location filename="../IOViewer.cpp" line="343"/> + <location filename="../IOViewer.cpp" line="388"/> + <source>Initial volume</source> + <translation>Initial volume</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="331"/> + <location filename="../IOViewer.cpp" line="349"/> + <location filename="../IOViewer.cpp" line="377"/> + <source>Sound frequency</source> + <translation>Sound frequency</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="332"/> + <location filename="../IOViewer.cpp" line="350"/> + <location filename="../IOViewer.cpp" line="378"/> + <location filename="../IOViewer.cpp" line="400"/> + <source>Timed</source> + <translation>Timed</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="333"/> + <location filename="../IOViewer.cpp" line="351"/> + <location filename="../IOViewer.cpp" line="379"/> + <location filename="../IOViewer.cpp" line="401"/> + <source>Reset</source> + <translation>Reset</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="357"/> + <source>Double-size wave table</source> + <translation>Double-size wave table</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="358"/> + <source>Active wave table</source> + <translation>Active wave table</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="359"/> + <source>Enable channel 3</source> + <translation>Enable channel 3</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="364"/> + <source>Volume</source> + <translation>Volume</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="365"/> + <source>0%</source> + <translation>0%</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="366"/> + <location filename="../IOViewer.cpp" line="423"/> + <source>100%</source> + <translation>100%</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="367"/> + <location filename="../IOViewer.cpp" line="422"/> + <source>50%</source> + <translation>50%</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="368"/> + <location filename="../IOViewer.cpp" line="421"/> + <source>25%</source> + <translation>25%</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="369"/> + <location filename="../IOViewer.cpp" line="370"/> + <location filename="../IOViewer.cpp" line="371"/> + <location filename="../IOViewer.cpp" line="372"/> + <source>75%</source> + <translation>75%</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="394"/> + <source>Clock divider</source> + <translation>Clock divider</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="395"/> + <source>Register stages</source> + <translation>Register stages</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="396"/> + <source>15</source> + <translation>15</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="397"/> + <source>7</source> + <translation>7</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="399"/> + <source>Shifter frequency</source> + <translation>Shifter frequency</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="407"/> + <source>PSG volume right</source> + <translation>PSG volume right</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="408"/> + <source>PSG volume left</source> + <translation>PSG volume left</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="409"/> + <source>Enable channel 1 right</source> + <translation>Enable channel 1 right</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="410"/> + <source>Enable channel 2 right</source> + <translation>Enable channel 2 right</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="411"/> + <source>Enable channel 3 right</source> + <translation>Enable channel 3 right</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="412"/> + <source>Enable channel 4 right</source> + <translation>Enable channel 4 right</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="413"/> + <source>Enable channel 1 left</source> + <translation>Enable channel 1 left</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="414"/> + <source>Enable channel 2 left</source> + <translation>Enable channel 2 left</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="415"/> + <source>Enable channel 3 left</source> + <translation>Enable channel 3 left</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="416"/> + <source>Enable channel 4 left</source> + <translation>Enable channel 4 left</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="420"/> + <source>PSG master volume</source> + <translation>PSG master volume</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="426"/> + <source>Loud channel A</source> + <translation>Loud channel A</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="427"/> + <source>Loud channel B</source> + <translation>Loud channel B</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="428"/> + <source>Enable channel A right</source> + <translation>Enable channel A right</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="429"/> + <source>Enable channel A left</source> + <translation>Enable channel A left</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="430"/> + <source>Channel A timer</source> + <translation>Channel A timer</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="431"/> + <location filename="../IOViewer.cpp" line="438"/> + <source>0</source> + <translation>0</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="432"/> + <location filename="../IOViewer.cpp" line="439"/> + <location filename="../IOViewer.cpp" line="768"/> + <location filename="../IOViewer.cpp" line="783"/> + <location filename="../IOViewer.cpp" line="799"/> + <location filename="../IOViewer.cpp" line="815"/> + <location filename="../IOViewer.cpp" line="987"/> + <location filename="../IOViewer.cpp" line="997"/> + <location filename="../IOViewer.cpp" line="1007"/> + <source>1</source> + <translation>1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="434"/> + <source>Channel A reset</source> + <translation>Channel A reset</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="435"/> + <source>Enable channel B right</source> + <translation>Enable channel B right</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="436"/> + <source>Enable channel B left</source> + <translation>Enable channel B left</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="437"/> + <source>Channel B timer</source> + <translation>Canal B timer</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="441"/> + <source>Channel B reset</source> + <translation>Channel B reset</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="445"/> + <source>Active channel 1</source> + <translation>Active channel 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="446"/> + <source>Active channel 2</source> + <translation>Active channel 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="447"/> + <source>Active channel 3</source> + <translation>Active channel 3</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="448"/> + <source>Active channel 4</source> + <translation>Active channel 4</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="449"/> + <source>Enable audio</source> + <translation>Enable audio</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="455"/> + <source>Bias</source> + <translation>Bias</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="456"/> + <source>Resolution</source> + <translation>Resolution</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="466"/> + <location filename="../IOViewer.cpp" line="467"/> + <location filename="../IOViewer.cpp" line="468"/> + <location filename="../IOViewer.cpp" line="469"/> + <location filename="../IOViewer.cpp" line="473"/> + <location filename="../IOViewer.cpp" line="474"/> + <location filename="../IOViewer.cpp" line="475"/> + <location filename="../IOViewer.cpp" line="476"/> + <location filename="../IOViewer.cpp" line="480"/> + <location filename="../IOViewer.cpp" line="481"/> + <location filename="../IOViewer.cpp" line="482"/> + <location filename="../IOViewer.cpp" line="483"/> + <location filename="../IOViewer.cpp" line="487"/> + <location filename="../IOViewer.cpp" line="488"/> + <location filename="../IOViewer.cpp" line="489"/> + <location filename="../IOViewer.cpp" line="490"/> + <location filename="../IOViewer.cpp" line="494"/> + <location filename="../IOViewer.cpp" line="495"/> + <location filename="../IOViewer.cpp" line="496"/> + <location filename="../IOViewer.cpp" line="497"/> + <location filename="../IOViewer.cpp" line="501"/> + <location filename="../IOViewer.cpp" line="502"/> + <location filename="../IOViewer.cpp" line="503"/> + <location filename="../IOViewer.cpp" line="504"/> + <location filename="../IOViewer.cpp" line="508"/> + <location filename="../IOViewer.cpp" line="509"/> + <location filename="../IOViewer.cpp" line="510"/> + <location filename="../IOViewer.cpp" line="511"/> + <location filename="../IOViewer.cpp" line="515"/> + <location filename="../IOViewer.cpp" line="516"/> + <location filename="../IOViewer.cpp" line="517"/> + <location filename="../IOViewer.cpp" line="518"/> + <location filename="../IOViewer.cpp" line="522"/> + <location filename="../IOViewer.cpp" line="523"/> + <location filename="../IOViewer.cpp" line="527"/> + <location filename="../IOViewer.cpp" line="528"/> + <location filename="../IOViewer.cpp" line="532"/> + <location filename="../IOViewer.cpp" line="533"/> + <location filename="../IOViewer.cpp" line="537"/> + <location filename="../IOViewer.cpp" line="538"/> + <source>Sample</source> + <translation>Sample</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="550"/> + <location filename="../IOViewer.cpp" line="558"/> + <location filename="../IOViewer.cpp" line="595"/> + <location filename="../IOViewer.cpp" line="603"/> + <location filename="../IOViewer.cpp" line="640"/> + <location filename="../IOViewer.cpp" line="648"/> + <location filename="../IOViewer.cpp" line="685"/> + <location filename="../IOViewer.cpp" line="693"/> + <source>Address (bottom)</source> + <translation>Address (bottom)</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="554"/> + <location filename="../IOViewer.cpp" line="562"/> + <location filename="../IOViewer.cpp" line="599"/> + <location filename="../IOViewer.cpp" line="607"/> + <location filename="../IOViewer.cpp" line="644"/> + <location filename="../IOViewer.cpp" line="652"/> + <location filename="../IOViewer.cpp" line="689"/> + <location filename="../IOViewer.cpp" line="697"/> + <source>Address (top)</source> + <translation>Address (top)</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="566"/> + <location filename="../IOViewer.cpp" line="611"/> + <location filename="../IOViewer.cpp" line="656"/> + <location filename="../IOViewer.cpp" line="701"/> + <source>Word count</source> + <translation>Word count</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="570"/> + <location filename="../IOViewer.cpp" line="615"/> + <location filename="../IOViewer.cpp" line="660"/> + <location filename="../IOViewer.cpp" line="705"/> + <source>Destination offset</source> + <translation>Destination offset</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="571"/> + <location filename="../IOViewer.cpp" line="577"/> + <location filename="../IOViewer.cpp" line="616"/> + <location filename="../IOViewer.cpp" line="622"/> + <location filename="../IOViewer.cpp" line="661"/> + <location filename="../IOViewer.cpp" line="667"/> + <location filename="../IOViewer.cpp" line="706"/> + <location filename="../IOViewer.cpp" line="712"/> + <source>Increment</source> + <translation>Increment</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="572"/> + <location filename="../IOViewer.cpp" line="578"/> + <location filename="../IOViewer.cpp" line="617"/> + <location filename="../IOViewer.cpp" line="623"/> + <location filename="../IOViewer.cpp" line="662"/> + <location filename="../IOViewer.cpp" line="668"/> + <location filename="../IOViewer.cpp" line="707"/> + <location filename="../IOViewer.cpp" line="713"/> + <source>Decrement</source> + <translation>Decrement</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="573"/> + <location filename="../IOViewer.cpp" line="579"/> + <location filename="../IOViewer.cpp" line="618"/> + <location filename="../IOViewer.cpp" line="624"/> + <location filename="../IOViewer.cpp" line="663"/> + <location filename="../IOViewer.cpp" line="669"/> + <location filename="../IOViewer.cpp" line="708"/> + <location filename="../IOViewer.cpp" line="714"/> + <source>Fixed</source> + <translation>Fixed</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="574"/> + <location filename="../IOViewer.cpp" line="619"/> + <location filename="../IOViewer.cpp" line="664"/> + <location filename="../IOViewer.cpp" line="709"/> + <source>Increment and reload</source> + <translation>Increment and reload</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="576"/> + <location filename="../IOViewer.cpp" line="621"/> + <location filename="../IOViewer.cpp" line="666"/> + <location filename="../IOViewer.cpp" line="711"/> + <source>Source offset</source> + <translation>Source offset</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="582"/> + <location filename="../IOViewer.cpp" line="627"/> + <location filename="../IOViewer.cpp" line="672"/> + <location filename="../IOViewer.cpp" line="718"/> + <source>Repeat</source> + <translation>Repeat</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="583"/> + <location filename="../IOViewer.cpp" line="628"/> + <location filename="../IOViewer.cpp" line="673"/> + <location filename="../IOViewer.cpp" line="719"/> + <source>32-bit</source> + <translation>32-bit</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="584"/> + <location filename="../IOViewer.cpp" line="629"/> + <location filename="../IOViewer.cpp" line="674"/> + <location filename="../IOViewer.cpp" line="720"/> + <source>Start timing</source> + <translation>Start timing</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="585"/> + <location filename="../IOViewer.cpp" line="630"/> + <location filename="../IOViewer.cpp" line="675"/> + <location filename="../IOViewer.cpp" line="721"/> + <source>Immediate</source> + <translation>Immediate</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="586"/> + <location filename="../IOViewer.cpp" line="631"/> + <location filename="../IOViewer.cpp" line="676"/> + <location filename="../IOViewer.cpp" line="722"/> + <location filename="../IOViewer.cpp" line="939"/> + <location filename="../IOViewer.cpp" line="956"/> + <source>VBlank</source> + <translation>VBlank</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="587"/> + <location filename="../IOViewer.cpp" line="632"/> + <location filename="../IOViewer.cpp" line="677"/> + <location filename="../IOViewer.cpp" line="723"/> + <location filename="../IOViewer.cpp" line="940"/> + <location filename="../IOViewer.cpp" line="957"/> + <source>HBlank</source> + <translation>HBlank</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="590"/> + <location filename="../IOViewer.cpp" line="635"/> + <location filename="../IOViewer.cpp" line="680"/> + <location filename="../IOViewer.cpp" line="726"/> + <location filename="../IOViewer.cpp" line="773"/> + <location filename="../IOViewer.cpp" line="789"/> + <location filename="../IOViewer.cpp" line="805"/> + <location filename="../IOViewer.cpp" line="821"/> + <location filename="../IOViewer.cpp" line="881"/> + <source>IRQ</source> + <translation>IRQ</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="591"/> + <location filename="../IOViewer.cpp" line="636"/> + <location filename="../IOViewer.cpp" line="681"/> + <location filename="../IOViewer.cpp" line="727"/> + <location filename="../IOViewer.cpp" line="774"/> + <location filename="../IOViewer.cpp" line="790"/> + <location filename="../IOViewer.cpp" line="806"/> + <location filename="../IOViewer.cpp" line="822"/> + <source>Enable</source> + <translation>Enable</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="633"/> + <location filename="../IOViewer.cpp" line="678"/> + <location filename="../IOViewer.cpp" line="724"/> + <source>Audio FIFO</source> + <translation>Audio FIFO</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="715"/> + <source>Video Capture</source> + <translation>Video Capture</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="717"/> + <source>DRQ</source> + <translation>DRQ</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="763"/> + <location filename="../IOViewer.cpp" line="778"/> + <location filename="../IOViewer.cpp" line="794"/> + <location filename="../IOViewer.cpp" line="810"/> + <source>Value</source> + <translation>Value</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="767"/> + <location filename="../IOViewer.cpp" line="782"/> + <location filename="../IOViewer.cpp" line="798"/> + <location filename="../IOViewer.cpp" line="814"/> + <source>Scale</source> + <translation>Scale</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="769"/> + <location filename="../IOViewer.cpp" line="784"/> + <location filename="../IOViewer.cpp" line="800"/> + <location filename="../IOViewer.cpp" line="816"/> + <source>1/64</source> + <translation>1/64</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="770"/> + <location filename="../IOViewer.cpp" line="785"/> + <location filename="../IOViewer.cpp" line="801"/> + <location filename="../IOViewer.cpp" line="817"/> + <source>1/256</source> + <translation>1/256</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="771"/> + <location filename="../IOViewer.cpp" line="786"/> + <location filename="../IOViewer.cpp" line="802"/> + <location filename="../IOViewer.cpp" line="818"/> + <source>1/1024</source> + <translation>1/1024</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="788"/> + <location filename="../IOViewer.cpp" line="804"/> + <location filename="../IOViewer.cpp" line="820"/> + <source>Cascade</source> + <translation>Cascade</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="858"/> + <location filename="../IOViewer.cpp" line="871"/> + <source>A</source> + <translation>A</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="859"/> + <location filename="../IOViewer.cpp" line="872"/> + <source>B</source> + <translation>B</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="860"/> + <location filename="../IOViewer.cpp" line="873"/> + <source>Select</source> + <translation>Select</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="861"/> + <location filename="../IOViewer.cpp" line="874"/> + <source>Start</source> + <translation>Start</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="862"/> + <location filename="../IOViewer.cpp" line="875"/> + <source>Right</source> + <translation>Right</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="863"/> + <location filename="../IOViewer.cpp" line="876"/> + <source>Left</source> + <translation>Left</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="864"/> + <location filename="../IOViewer.cpp" line="877"/> + <source>Up</source> + <translation>Up</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="865"/> + <location filename="../IOViewer.cpp" line="878"/> + <source>Down</source> + <translation>Down</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="866"/> + <location filename="../IOViewer.cpp" line="879"/> + <source>R</source> + <translation>R</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="867"/> + <location filename="../IOViewer.cpp" line="880"/> + <source>L</source> + <translation>L</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="882"/> + <source>Condition</source> + <translation>Condition</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="886"/> + <source>SC</source> + <translation>SC</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="887"/> + <source>SD</source> + <translation>SD</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="888"/> + <source>SI</source> + <translation>SI</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="889"/> + <source>SO</source> + <translation>SO</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="941"/> + <location filename="../IOViewer.cpp" line="958"/> + <source>VCounter</source> + <translation>VCounter</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="942"/> + <location filename="../IOViewer.cpp" line="959"/> + <source>Timer 0</source> + <translation>Timer 0</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="943"/> + <location filename="../IOViewer.cpp" line="960"/> + <source>Timer 1</source> + <translation>Timer 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="944"/> + <location filename="../IOViewer.cpp" line="961"/> + <source>Timer 2</source> + <translation>Timer 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="945"/> + <location filename="../IOViewer.cpp" line="962"/> + <source>Timer 3</source> + <translation>Timer 3</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="946"/> + <location filename="../IOViewer.cpp" line="963"/> + <source>SIO</source> + <translation>SIO</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="947"/> + <location filename="../IOViewer.cpp" line="964"/> + <source>DMA 0</source> + <translation>DMA 0</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="948"/> + <location filename="../IOViewer.cpp" line="965"/> + <source>DMA 1</source> + <translation>DMA 1</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="949"/> + <location filename="../IOViewer.cpp" line="966"/> + <source>DMA 2</source> + <translation>DMA 2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="950"/> + <location filename="../IOViewer.cpp" line="967"/> + <source>DMA 3</source> + <translation>DMA 3</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="951"/> + <location filename="../IOViewer.cpp" line="968"/> + <source>Keypad</source> + <translation>Keypad</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="952"/> + <location filename="../IOViewer.cpp" line="969"/> + <source>Gamepak</source> + <translation>Gamepak</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="973"/> + <source>SRAM wait</source> + <translation>SRAM wait</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="974"/> + <location filename="../IOViewer.cpp" line="980"/> + <location filename="../IOViewer.cpp" line="990"/> + <location filename="../IOViewer.cpp" line="996"/> + <location filename="../IOViewer.cpp" line="1000"/> + <source>4</source> + <translation>4</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="975"/> + <location filename="../IOViewer.cpp" line="981"/> + <location filename="../IOViewer.cpp" line="991"/> + <location filename="../IOViewer.cpp" line="1001"/> + <source>3</source> + <translation>3</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="976"/> + <location filename="../IOViewer.cpp" line="982"/> + <location filename="../IOViewer.cpp" line="986"/> + <location filename="../IOViewer.cpp" line="992"/> + <location filename="../IOViewer.cpp" line="1002"/> + <source>2</source> + <translation>2</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="977"/> + <location filename="../IOViewer.cpp" line="983"/> + <location filename="../IOViewer.cpp" line="993"/> + <location filename="../IOViewer.cpp" line="1003"/> + <location filename="../IOViewer.cpp" line="1006"/> + <source>8</source> + <translation>8</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="979"/> + <source>Cart 0 non-sequential</source> + <translation>Cart 0 non-sequential</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="985"/> + <source>Cart 0 sequential</source> + <translation>Cart 0 sequential</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="989"/> + <source>Cart 1 non-sequential</source> + <translation>Cart 1 non-sequential</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="995"/> + <source>Cart 1 sequential</source> + <translation>Cart 1 sequential</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="999"/> + <source>Cart 2 non-sequential</source> + <translation>Cart 2 non-sequential</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="1005"/> + <source>Cart 2 sequential</source> + <translation>Cart 2 sequential</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="1009"/> + <source>PHI terminal</source> + <translation>PHI terminal</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="1010"/> + <source>Disable</source> + <translation>Disable</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="1011"/> + <source>4.19MHz</source> + <translation>4.19MHz</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="1012"/> + <source>8.38MHz</source> + <translation>8.38MHz</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="1013"/> + <source>16.78MHz</source> + <translation>16.78MHz</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="1015"/> + <source>Gamepak prefetch</source> + <translation>Gamepak prefetch</translation> + </message> + <message> + <location filename="../IOViewer.cpp" line="1021"/> + <source>Enable IRQs</source> + <translation>Enable IRQs</translation> + </message> +</context> +<context> + <name>QGBA::KeyEditor</name> + <message> + <location filename="../KeyEditor.cpp" line="33"/> + <location filename="../KeyEditor.cpp" line="207"/> + <source>---</source> + <translation>---</translation> + </message> +</context> +<context> + <name>QGBA::LoadSaveState</name> + <message> + <location filename="../LoadSaveState.cpp" line="74"/> + <source>Load State</source> + <translation>ステートロード</translation> + </message> + <message> + <location filename="../LoadSaveState.cpp" line="74"/> + <source>Save State</source> + <translation>ステートセーブ</translation> + </message> + <message> + <location filename="../LoadSaveState.cpp" line="183"/> + <source>Empty</source> + <translation>空</translation> + </message> + <message> + <location filename="../LoadSaveState.cpp" line="192"/> + <source>Corrupted</source> + <translation>破損</translation> + </message> + <message> + <location filename="../LoadSaveState.cpp" line="221"/> + <source>Slot %1</source> + <translation>スロット %1</translation> + </message> +</context> +<context> + <name>QGBA::LogConfigModel</name> + <message> + <location filename="../LogConfigModel.cpp" line="79"/> + <location filename="../LogConfigModel.cpp" line="100"/> + <source>Default</source> + <translation>Default</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="81"/> + <source>Fatal</source> + <translation>Fatal</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="83"/> + <source>Error</source> + <translation>Error</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="85"/> + <source>Warning</source> + <translation>Warning</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="87"/> + <source>Info</source> + <translation>Info</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="89"/> + <source>Debug</source> + <translation>Debug</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="91"/> + <source>Stub</source> + <translation>Stub</translation> + </message> + <message> + <location filename="../LogConfigModel.cpp" line="93"/> + <source>Game Error</source> + <translation>Game Error</translation> + </message> +</context> +<context> + <name>QGBA::LogController</name> + <message> + <location filename="../LogController.cpp" line="62"/> + <source>[%1] %2: %3</source> + <translation>[%1] %2: %3</translation> + </message> + <message> + <location filename="../LogController.cpp" line="73"/> + <source>An error occurred</source> + <translation>エラーが発生しました</translation> + </message> + <message> + <location filename="../LogController.cpp" line="145"/> + <source>DEBUG</source> + <translation>DEBUG</translation> + </message> + <message> + <location filename="../LogController.cpp" line="147"/> + <source>STUB</source> + <translation>STUB</translation> + </message> + <message> + <location filename="../LogController.cpp" line="149"/> + <source>INFO</source> + <translation>INFO</translation> + </message> + <message> + <location filename="../LogController.cpp" line="151"/> + <source>WARN</source> + <translation>WARN</translation> + </message> + <message> + <location filename="../LogController.cpp" line="153"/> + <source>ERROR</source> + <translation>ERROR</translation> + </message> + <message> + <location filename="../LogController.cpp" line="155"/> + <source>FATAL</source> + <translation>FATAL</translation> + </message> + <message> + <location filename="../LogController.cpp" line="157"/> + <source>GAME ERROR</source> + <translation>GAME ERROR</translation> + </message> +</context> +<context> + <name>QGBA::MapView</name> + <message> + <location filename="../MapView.cpp" line="48"/> + <source>Priority</source> + <translation>優先度</translation> + </message> + <message> + <location filename="../MapView.cpp" line="49"/> + <location filename="../MapView.cpp" line="61"/> + <source>Map base</source> + <translation>マップベース</translation> + </message> + <message> + <location filename="../MapView.cpp" line="50"/> + <location filename="../MapView.cpp" line="62"/> + <source>Tile base</source> + <translation>タイルベース</translation> + </message> + <message> + <location filename="../MapView.cpp" line="51"/> + <source>Size</source> + <translation>サイズ</translation> + </message> + <message> + <location filename="../MapView.cpp" line="52"/> + <location filename="../MapView.cpp" line="63"/> + <source>Offset</source> + <translation>オフセット</translation> + </message> + <message> + <location filename="../MapView.cpp" line="53"/> + <source>Xform</source> + <translation>Xform</translation> + </message> + <message> + <location filename="../MapView.cpp" line="107"/> + <source>Map Addr.</source> + <translation>マップアドレス</translation> + </message> + <message> + <location filename="../MapView.cpp" line="108"/> + <source>Mirror</source> + <translation>ミラー</translation> + </message> + <message> + <location filename="../MapView.cpp" line="136"/> + <source>None</source> + <translation>None</translation> + </message> + <message> + <location filename="../MapView.cpp" line="138"/> + <source>Both</source> + <translation>Both</translation> + </message> + <message> + <location filename="../MapView.cpp" line="140"/> + <source>Horizontal</source> + <translation>横</translation> + </message> + <message> + <location filename="../MapView.cpp" line="142"/> + <source>Vertical</source> + <translation>縦</translation> + </message> + <message> + <location filename="../MapView.cpp" line="168"/> + <location filename="../MapView.cpp" line="169"/> + <location filename="../MapView.cpp" line="213"/> + <source>N/A</source> + <translation>N/A</translation> + </message> + <message> + <location filename="../MapView.cpp" line="256"/> + <source>Export map</source> + <translation>マップを保存</translation> + </message> + <message> + <location filename="../MapView.cpp" line="257"/> + <source>Portable Network Graphics (*.png)</source> + <translation>Portable Network Graphics (*.png)</translation> + </message> + <message> + <source>Failed to open output PNG file: %1</source> + <translation type="vanished">出力PNGファイルを開けませんでした: %1</translation> + </message> +</context> +<context> + <name>QGBA::MemoryDump</name> + <message> + <location filename="../MemoryDump.cpp" line="24"/> + <source>Save memory region</source> + <translation>メモリ領域を保存</translation> + </message> + <message> + <location filename="../MemoryDump.cpp" line="30"/> + <source>Failed to open output file: %1</source> + <translation>出力ファイルを開けませんでした: %1</translation> + </message> +</context> +<context> + <name>QGBA::MemoryModel</name> + <message> + <location filename="../MemoryModel.cpp" line="44"/> + <source>Copy selection</source> + <translation>選択値をコピー</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="49"/> + <source>Save selection</source> + <translation>選択値を保存</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="54"/> + <source>Paste</source> + <translation>貼り付け</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="59"/> + <source>Load</source> + <translation>読込</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="91"/> + <source>All</source> + <translation>All</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="136"/> + <source>Load TBL</source> + <translation>TBLを開く</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="190"/> + <source>Save selected memory</source> + <translation>選択したメモリを保存する</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="196"/> + <source>Failed to open output file: %1</source> + <translation>出力ファイルを開けませんでした: %1</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="204"/> + <source>Load memory</source> + <translation>メモリをロード</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="210"/> + <source>Failed to open input file: %1</source> + <translation>入力ファイルを開けませんでした: %1</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="326"/> + <source>TBL</source> + <translation>TBL</translation> + </message> + <message> + <location filename="../MemoryModel.cpp" line="326"/> + <source>ISO-8859-1</source> + <translation>ISO-8859-1</translation> + </message> +</context> +<context> + <name>QGBA::MemorySearch</name> + <message> + <location filename="../MemorySearch.cpp" line="221"/> + <source> (%0/%1×)</source> + <translation> (%0/%1×)</translation> + </message> + <message> + <location filename="../MemorySearch.cpp" line="223"/> + <source> (⅟%0×)</source> + <translation> (⅟%0×)</translation> + </message> + <message> + <location filename="../MemorySearch.cpp" line="226"/> + <source> (%0×)</source> + <translation> (%0×)</translation> + </message> + <message> + <location filename="../MemorySearch.cpp" line="230"/> + <source>%1 byte%2</source> + <translation>%1 byte%2</translation> + </message> + <message> + <source>1 byte%0</source> + <translation type="vanished">1 byte%0</translation> + </message> + <message> + <source>2 bytes%0</source> + <translation type="vanished">2 bytes%0</translation> + </message> + <message> + <source>4 bytes%0</source> + <translation type="vanished">4 bytes%0</translation> + </message> +</context> +<context> + <name>QGBA::ObjView</name> + <message> + <location filename="../ObjView.cpp" line="150"/> + <location filename="../ObjView.cpp" line="224"/> + <source>0x%0</source> + <translation>0x%0</translation> + </message> + <message> + <location filename="../ObjView.cpp" line="161"/> + <source>Off</source> + <translation>Off</translation> + </message> + <message> + <location filename="../ObjView.cpp" line="166"/> + <source>Normal</source> + <translation>Normal</translation> + </message> + <message> + <location filename="../ObjView.cpp" line="169"/> + <source>Trans</source> + <translation>Trans</translation> + </message> + <message> + <location filename="../ObjView.cpp" line="172"/> + <source>OBJWIN</source> + <translation>OBJWIN</translation> + </message> + <message> + <location filename="../ObjView.cpp" line="175"/> + <source>Invalid</source> + <translation>Invalid</translation> + </message> + <message> + <location filename="../ObjView.cpp" line="231"/> + <location filename="../ObjView.cpp" line="232"/> + <source>N/A</source> + <translation>N/A</translation> + </message> + <message> + <location filename="../ObjView.cpp" line="257"/> + <source>Export sprite</source> + <translation>OBJの保存</translation> + </message> + <message> + <location filename="../ObjView.cpp" line="258"/> + <source>Portable Network Graphics (*.png)</source> + <translation>Portable Network Graphics (*.png)</translation> + </message> + <message> + <source>Failed to open output PNG file: %1</source> + <translation type="vanished">Failed to open output PNG file: %1</translation> + </message> +</context> +<context> + <name>QGBA::PaletteView</name> + <message> + <location filename="../PaletteView.cpp" line="121"/> + <source>#%0</source> + <translation>#%0</translation> + </message> + <message> + <location filename="../PaletteView.cpp" line="122"/> + <source>0x%0</source> + <translation>0x%0</translation> + </message> + <message> + <location filename="../PaletteView.cpp" line="123"/> + <source>%0</source> + <translation>%0</translation> + </message> + <message> + <location filename="../PaletteView.cpp" line="124"/> + <location filename="../PaletteView.cpp" line="125"/> + <location filename="../PaletteView.cpp" line="126"/> + <source>0x%0 (%1)</source> + <translation>0x%0 (%1)</translation> + </message> + <message> + <location filename="../PaletteView.cpp" line="138"/> + <source>Export palette</source> + <translation>パレットの保存</translation> + </message> + <message> + <location filename="../PaletteView.cpp" line="139"/> + <source>Windows PAL (*.pal);;Adobe Color Table (*.act)</source> + <translation>Windows PAL (*.pal);;Adobe Color Table (*.act)</translation> + </message> + <message> + <location filename="../PaletteView.cpp" line="142"/> + <source>Failed to open output palette file: %1</source> + <translation>出力パレットファイルを開けませんでした: %1</translation> + </message> +</context> +<context> + <name>QGBA::PrinterView</name> + <message> + <location filename="../PrinterView.cpp" line="52"/> + <source>Save Printout</source> + <translation>プリントアウトの保存</translation> + </message> + <message> + <location filename="../PrinterView.cpp" line="52"/> + <source>Portable Network Graphics (*.png)</source> + <translation>Portable Network Graphics (*.png)</translation> + </message> +</context> +<context> + <name>QGBA::ROMInfo</name> + <message> + <location filename="../ROMInfo.cpp" line="44"/> + <location filename="../ROMInfo.cpp" line="65"/> + <location filename="../ROMInfo.cpp" line="76"/> + <location filename="../ROMInfo.cpp" line="85"/> + <location filename="../ROMInfo.cpp" line="86"/> + <source>(unknown)</source> + <translation>(不明)</translation> + </message> + <message> + <location filename="../ROMInfo.cpp" line="53"/> + <location filename="../ROMInfo.cpp" line="60"/> + <source> bytes</source> + <translation>バイト</translation> + </message> + <message> + <location filename="../ROMInfo.cpp" line="79"/> + <source>(no database present)</source> + <translation>(データベースがありません)</translation> + </message> +</context> +<context> + <name>QGBA::SettingsView</name> + <message> + <location filename="../SettingsView.cpp" line="148"/> + <location filename="../SettingsView.cpp" line="191"/> + <source>Qt Multimedia</source> + <translation>Qt Multimedia</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="155"/> + <source>SDL</source> + <translation>SDL</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="163"/> + <source>Software (Qt)</source> + <translation>Software (Qt)</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="169"/> + <source>OpenGL</source> + <translation>OpenGL</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="176"/> + <source>OpenGL (force version 1.x)</source> + <translation>OpenGL (force version 1.x)</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="184"/> + <source>None (Still Image)</source> + <translation>None(静止画)</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="275"/> + <source>Keyboard</source> + <translation>キーボード</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="284"/> + <source>Controllers</source> + <translation>コントローラー</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="328"/> + <source>Shortcuts</source> + <translation>ショートカット</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="340"/> + <location filename="../SettingsView.cpp" line="350"/> + <source>Shaders</source> + <translation>シェーダー</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="357"/> + <source>Select BIOS</source> + <translation>BIOS選択</translation> + </message> + <message> + <location filename="../SettingsView.cpp" line="658"/> + <source>(%1×%2)</source> + <translation>(%1×%2)</translation> + </message> +</context> +<context> + <name>QGBA::ShaderSelector</name> + <message> + <location filename="../ShaderSelector.cpp" line="54"/> + <source>No shader active</source> + <translation>アクティブなシェーダーがありません</translation> + </message> + <message> + <location filename="../ShaderSelector.cpp" line="67"/> + <source>Load shader</source> + <translation>シェーダーを開く</translation> + </message> + <message> + <location filename="../ShaderSelector.cpp" line="105"/> + <source>No shader loaded</source> + <translation>シェーダーがロードされていません</translation> + </message> + <message> + <location filename="../ShaderSelector.cpp" line="113"/> + <source>by %1</source> + <translation>by %1</translation> + </message> + <message> + <location filename="../ShaderSelector.cpp" line="128"/> + <source>Preprocessing</source> + <translation>前処理</translation> + </message> + <message> + <location filename="../ShaderSelector.cpp" line="135"/> + <source>Pass %1</source> + <translation>Pass %1</translation> + </message> +</context> +<context> + <name>QGBA::ShortcutController</name> + <message> + <source>Action</source> + <translation type="vanished">アクション</translation> + </message> + <message> + <source>Keyboard</source> + <translation type="vanished">キーボード</translation> + </message> + <message> + <source>Gamepad</source> + <translation type="vanished">ゲームパッド</translation> + </message> +</context> +<context> + <name>QGBA::ShortcutModel</name> + <message> + <location filename="../ShortcutModel.cpp" line="67"/> + <source>Action</source> + <translation>アクション</translation> + </message> + <message> + <location filename="../ShortcutModel.cpp" line="69"/> + <source>Keyboard</source> + <translation>キーボード</translation> + </message> + <message> + <location filename="../ShortcutModel.cpp" line="71"/> + <source>Gamepad</source> + <translation>ゲームパッド</translation> + </message> +</context> +<context> + <name>QGBA::TileView</name> + <message> + <location filename="../TileView.cpp" line="178"/> + <source>Export tiles</source> + <translation>タイルをすべて保存</translation> + </message> + <message> + <location filename="../TileView.cpp" line="179"/> + <location filename="../TileView.cpp" line="191"/> + <source>Portable Network Graphics (*.png)</source> + <translation>Portable Network Graphics (*.png)</translation> + </message> + <message> + <location filename="../TileView.cpp" line="190"/> + <source>Export tile</source> + <translation>タイルを保存</translation> + </message> +</context> +<context> + <name>QGBA::VideoView</name> + <message> + <location filename="../VideoView.cpp" line="212"/> + <source>Failed to open output video file: %1</source> + <translation>出力ビデオファイルを開けませんでした: %1</translation> + </message> + <message> + <location filename="../VideoView.cpp" line="230"/> + <source>Native (%0x%1)</source> + <translation>Native (%0x%1)</translation> + </message> + <message> + <location filename="../VideoView.cpp" line="245"/> + <source>Select output file</source> + <translation>出力ファイルを選択</translation> + </message> +</context> +<context> + <name>QGBA::Window</name> + <message> + <location filename="../Window.cpp" line="292"/> + <source>Game Boy Advance ROMs (%1)</source> + <translation>ゲームボーイアドバンスファイル (%1)</translation> + </message> + <message> + <location filename="../Window.cpp" line="309"/> + <source>Game Boy ROMs (%1)</source> + <translation>ゲームボーイファイル (%1)</translation> + </message> + <message> + <location filename="../Window.cpp" line="313"/> + <source>All ROMs (%1)</source> + <translation>すべてのファイル (%1)</translation> + </message> + <message> + <location filename="../Window.cpp" line="314"/> + <source>%1 Video Logs (*.mvl)</source> + <translation>%1ビデオログ (*.mvl)</translation> + </message> + <message> + <location filename="../Window.cpp" line="329"/> + <source>Archives (%1)</source> + <translation>アーカイブファイル (%1)</translation> + </message> + <message> + <location filename="../Window.cpp" line="334"/> + <location filename="../Window.cpp" line="342"/> + <location filename="../Window.cpp" line="369"/> + <source>Select ROM</source> + <translation>ROMファイルを開く</translation> + </message> + <message> + <location filename="../Window.cpp" line="360"/> + <source>Select folder</source> + <translation>フォルダを開く</translation> + </message> + <message> + <location filename="../Window.cpp" line="377"/> + <source>Game Boy Advance save files (%1)</source> + <translation>ゲームボーイアドバンスセーブファイル (%1)</translation> + </message> + <message> + <location filename="../Window.cpp" line="378"/> + <location filename="../Window.cpp" line="439"/> + <location filename="../Window.cpp" line="446"/> + <source>Select save</source> + <translation>セーブファイルを開く</translation> + </message> + <message> + <location filename="../Window.cpp" line="386"/> + <source>mGBA savestate files (%1)</source> + <translation>mGBAステートセーブファイル (%1)</translation> + </message> + <message> + <location filename="../Window.cpp" line="388"/> + <location filename="../Window.cpp" line="393"/> + <source>Select savestate</source> + <translation>ステートセーブファイルを開く</translation> + </message> + <message> + <location filename="../Window.cpp" line="415"/> + <source>Select patch</source> + <translation>パッチを開く</translation> + </message> + <message> + <location filename="../Window.cpp" line="415"/> + <source>Patches (*.ips *.ups *.bps)</source> + <translation>パッチファイル (*.ips *.ups *.bps)</translation> + </message> + <message> + <location filename="../Window.cpp" line="427"/> + <source>Select e-Reader dotcode</source> + <translation>カードeを開く</translation> + </message> + <message> + <location filename="../Window.cpp" line="427"/> + <source>e-Reader card (*.raw *.bin *.bmp)</source> + <translation>カードe (*.raw *.bin *.bmp)</translation> + </message> + <message> + <location filename="../Window.cpp" line="432"/> + <source>Select image</source> + <translation>画像ファイルを開く</translation> + </message> + <message> + <location filename="../Window.cpp" line="432"/> + <source>Image file (*.png *.gif *.jpg *.jpeg);;All files (*)</source> + <translation>画像ファイル (*.png *.gif *.jpg *.jpeg);;すべてのファイル (*)</translation> + </message> + <message> + <location filename="../Window.cpp" line="439"/> + <location filename="../Window.cpp" line="446"/> + <source>GameShark saves (*.sps *.xps)</source> + <translation>GameSharkセーブファイル (*.sps *.xps)</translation> + </message> + <message> + <location filename="../Window.cpp" line="473"/> + <source>Select video log</source> + <translation>ビデオログを開く</translation> + </message> + <message> + <location filename="../Window.cpp" line="473"/> + <source>Video logs (*.mvl)</source> + <translation>ビデオログ (*.mvl)</translation> + </message> + <message> + <location filename="../Window.cpp" line="854"/> + <source>Crash</source> + <translation>クラッシュ</translation> + </message> + <message> + <location filename="../Window.cpp" line="855"/> + <source>The game has crashed with the following error: + +%1</source> + <translation>ゲームは次のエラーでクラッシュしました: + +%1</translation> + </message> + <message> + <location filename="../Window.cpp" line="862"/> + <source>Couldn&apos;t Load</source> + <translation>読み込めませんでした</translation> + </message> + <message> + <location filename="../Window.cpp" line="863"/> + <source>Could not load game. Are you sure it&apos;s in the correct format?</source> + <translation>ゲームを読み込めませんでした。フォーマットは正しいですか?</translation> + </message> + <message> + <location filename="../Window.cpp" line="876"/> + <source>Unimplemented BIOS call</source> + <translation>未実装のBIOS呼び出し</translation> + </message> + <message> + <location filename="../Window.cpp" line="877"/> + <source>This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience.</source> + <translation>このゲームは実装されていないBIOS呼び出しを使用します。最高のエクスペリエンスを得るには公式のBIOSを使用してください。</translation> + </message> + <message> + <location filename="../Window.cpp" line="964"/> + <source>Really make portable?</source> + <translation>本当にポータブル版にしますか?</translation> + </message> + <message> + <location filename="../Window.cpp" line="965"/> + <source>This will make the emulator load its configuration from the same directory as the executable. Do you want to continue?</source> + <translation>これによりエミュレータは実行ファイルと同じディレクトリにある設定ファイルをロードします。続けますか?</translation> + </message> + <message> + <location filename="../Window.cpp" line="977"/> + <source>Restart needed</source> + <translation>再起動が必要です。</translation> + </message> + <message> + <location filename="../Window.cpp" line="978"/> + <source>Some changes will not take effect until the emulator is restarted.</source> + <translation>一部の変更は、エミュレータを再起動するまで有効になりません。</translation> + </message> + <message> + <location filename="../Window.cpp" line="1026"/> + <source> - Player %1 of %2</source> + <translation> - プレーヤー %1 of %2</translation> + </message> + <message> + <location filename="../Window.cpp" line="1037"/> + <source>%1 - %2</source> + <translation>%1 - %2</translation> + </message> + <message> + <location filename="../Window.cpp" line="1039"/> + <source>%1 - %2 - %3</source> + <translation>%1 - %2 - %3</translation> + </message> + <message> + <location filename="../Window.cpp" line="1041"/> + <source>%1 - %2 (%3 fps) - %4</source> + <translation>%1 - %2 (%3 fps) - %4</translation> + </message> + <message> + <location filename="../Window.cpp" line="1082"/> + <source>&amp;File</source> + <translation>&amp;ファイル (&amp;F)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1084"/> + <source>Load &amp;ROM...</source> + <translation>ROMファイルを開く...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1087"/> + <source>Load ROM in archive...</source> + <translation>アーカイブROMファイルを開く...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1088"/> + <source>Add folder to library...</source> + <translation>ライブリーにフォルダを追加...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1091"/> + <source>Load alternate save...</source> + <translation>セーブファイルを読み込む...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1094"/> + <source>Load temporary save...</source> + <translation>一時セーブファイルを読み込む...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1098"/> + <source>Load &amp;patch...</source> + <translation>パッチを開く... (&amp;P)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1101"/> + <source>Boot BIOS</source> + <translation>BIOS起動</translation> + </message> + <message> + <location filename="../Window.cpp" line="1106"/> + <source>Replace ROM...</source> + <translation>ROMファイルを交換...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1107"/> + <source>Scan e-Reader dotcodes...</source> + <translation>カードeをスキャン...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1108"/> + <source>ROM &amp;info...</source> + <translation>ROM情報... (&amp;I)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1110"/> + <source>Recent</source> + <translation>最近開いたROMファイル</translation> + </message> + <message> + <location filename="../Window.cpp" line="1113"/> + <source>Make portable</source> + <translation>ポータブル化</translation> + </message> + <message> + <location filename="../Window.cpp" line="1116"/> + <source>&amp;Load state</source> + <translation>ステートロード (&amp;L)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1198"/> + <source>About...</source> + <translation>About...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1467"/> + <source>Game Pak sensors...</source> + <translation>カートリッジセンサー...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1723"/> + <source>Clear</source> + <translation>消去</translation> + </message> + <message> + <source>F10</source> + <translation type="vanished">F10</translation> + </message> + <message> + <location filename="../Window.cpp" line="1121"/> + <source>Load state file...</source> + <translation>ステートファイルを開く...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1126"/> + <source>&amp;Save state</source> + <translation>ステートセーブ (&amp;S)</translation> + </message> + <message> + <source>Shift+F10</source> + <translation type="vanished">Shift+F10</translation> + </message> + <message> + <location filename="../Window.cpp" line="1131"/> + <source>Save state file...</source> + <translation>ステートファイルを保存...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1136"/> + <source>Quick load</source> + <translation>クイックロード</translation> + </message> + <message> + <location filename="../Window.cpp" line="1137"/> + <source>Quick save</source> + <translation>クイックセーブ</translation> + </message> + <message> + <location filename="../Window.cpp" line="1139"/> + <source>Load recent</source> + <translation>直近のクイックスロットからロード</translation> + </message> + <message> + <location filename="../Window.cpp" line="1144"/> + <source>Save recent</source> + <translation>直近のクイックスロットにセーブ</translation> + </message> + <message> + <location filename="../Window.cpp" line="1152"/> + <source>Undo load state</source> + <translation>クイックロードを取り消す</translation> + </message> + <message> + <source>F11</source> + <translation type="vanished">F11</translation> + </message> + <message> + <location filename="../Window.cpp" line="1157"/> + <source>Undo save state</source> + <translation>クイックセーブを取り消す</translation> + </message> + <message> + <source>Shift+F11</source> + <translation type="vanished">Shift+F11</translation> + </message> + <message> + <location filename="../Window.cpp" line="1166"/> + <location filename="../Window.cpp" line="1171"/> + <source>State &amp;%1</source> + <translation>クイックスロット &amp;%1</translation> + </message> + <message> + <source>F%1</source> + <translation type="vanished">F%1</translation> + </message> + <message> + <source>Shift+F%1</source> + <translation type="vanished">Shift+F%1</translation> + </message> + <message> + <location filename="../Window.cpp" line="1178"/> + <source>Load camera image...</source> + <translation>カメラ画像を開く...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1182"/> + <source>Import GameShark Save...</source> + <translation>GameSharkスナップショットをインポート</translation> + </message> + <message> + <location filename="../Window.cpp" line="1185"/> + <source>Export GameShark Save...</source> + <translation>GameSharkスナップショットにエクスポート</translation> + </message> + <message> + <location filename="../Window.cpp" line="1190"/> + <source>New multiplayer window</source> + <translation>新しいウィンドウ(マルチプレイ)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1201"/> + <source>E&amp;xit</source> + <translation>終了 (&amp;X)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1204"/> + <source>&amp;Emulation</source> + <translation>エミュレーション (&amp;E)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1205"/> + <source>&amp;Reset</source> + <translation>リセット (&amp;R)</translation> + </message> + <message> + <source>Ctrl+R</source> + <translation type="vanished">Ctrl+R</translation> + </message> + <message> + <location filename="../Window.cpp" line="1209"/> + <source>Sh&amp;utdown</source> + <translation>閉じる (&amp;U)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1213"/> + <source>Yank game pak</source> + <translation>Yank game pak</translation> + </message> + <message> + <location filename="../Window.cpp" line="1219"/> + <source>&amp;Pause</source> + <translation>一時停止 (&amp;P)</translation> + </message> + <message> + <source>Ctrl+P</source> + <translation type="vanished">Ctrl+P</translation> + </message> + <message> + <location filename="../Window.cpp" line="1228"/> + <source>&amp;Next frame</source> + <translation>次のフレーム (&amp;N)</translation> + </message> + <message> + <source>Ctrl+N</source> + <translation type="vanished">Ctrl+N</translation> + </message> + <message> + <location filename="../Window.cpp" line="1234"/> + <source>Fast forward (held)</source> + <translation>早送り(固定)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1240"/> + <source>&amp;Fast forward</source> + <translation>早送り (&amp;F)</translation> + </message> + <message> + <source>Shift+Tab</source> + <translation type="vanished">Shift+Tab</translation> + </message> + <message> + <location filename="../Window.cpp" line="1244"/> + <source>Fast forward speed</source> + <translation>早送り速度</translation> + </message> + <message> + <location filename="../Window.cpp" line="1249"/> + <source>Unbounded</source> + <translation>制限なし</translation> + </message> + <message> + <location filename="../Window.cpp" line="1253"/> + <source>%0x</source> + <translation>%0x</translation> + </message> + <message> + <location filename="../Window.cpp" line="1257"/> + <source>Rewind (held)</source> + <translation>巻戻し(固定)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1264"/> + <source>Re&amp;wind</source> + <translation>巻戻し (&amp;R)</translation> + </message> + <message> + <source>~</source> + <translation type="vanished">~</translation> + </message> + <message> + <location filename="../Window.cpp" line="1269"/> + <source>Step backwards</source> + <translation>後退</translation> + </message> + <message> + <source>Ctrl+B</source> + <translation type="vanished">Ctrl+B</translation> + </message> + <message> + <location filename="../Window.cpp" line="1275"/> + <source>Sync to &amp;video</source> + <translation>ビデオ同期 (&amp;V)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1282"/> + <source>Sync to &amp;audio</source> + <translation>オーディオ同期 (&amp;A)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1290"/> + <source>Solar sensor</source> + <translation>太陽センサー</translation> + </message> + <message> + <location filename="../Window.cpp" line="1291"/> + <source>Increase solar level</source> + <translation>明るさを上げる</translation> + </message> + <message> + <location filename="../Window.cpp" line="1292"/> + <source>Decrease solar level</source> + <translation>明るさを下げる</translation> + </message> + <message> + <location filename="../Window.cpp" line="1293"/> + <source>Brightest solar level</source> + <translation>明るさ最高</translation> + </message> + <message> + <location filename="../Window.cpp" line="1296"/> + <source>Darkest solar level</source> + <translation>明るさ最低</translation> + </message> + <message> + <location filename="../Window.cpp" line="1302"/> + <source>Brightness %1</source> + <translation>明るさ %1</translation> + </message> + <message> + <location filename="../Window.cpp" line="1321"/> + <source>Audio/&amp;Video</source> + <translation>ビデオ/オーディオ (&amp;V)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1322"/> + <source>Frame size</source> + <translation>画面サイズ</translation> + </message> + <message> + <source>%1x</source> + <translation type="vanished">%1x</translation> + </message> + <message> + <location filename="../Window.cpp" line="1349"/> + <source>Toggle fullscreen</source> + <translation>全画面表示</translation> + </message> + <message> + <location filename="../Window.cpp" line="1352"/> + <source>Lock aspect ratio</source> + <translation>アスペクト比を固定</translation> + </message> + <message> + <location filename="../Window.cpp" line="1364"/> + <source>Force integer scaling</source> + <translation>整数スケーリングを強制</translation> + </message> + <message> + <location filename="../Window.cpp" line="1385"/> + <source>Bilinear filtering</source> + <translation>バイリニアフィルタリング</translation> + </message> + <message> + <location filename="../Window.cpp" line="1393"/> + <source>Frame&amp;skip</source> + <translation>フレームスキップ (&amp;S)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1406"/> + <source>Mute</source> + <translation>ミュート</translation> + </message> + <message> + <location filename="../Window.cpp" line="1413"/> + <source>FPS target</source> + <translation>FPS</translation> + </message> + <message> + <location filename="../Window.cpp" line="1421"/> + <source>Native (59.7275)</source> + <translation>Native (59.7275)</translation> + </message> + <message> + <source>15</source> + <translation type="vanished">15</translation> + </message> + <message> + <source>30</source> + <translation type="vanished">30</translation> + </message> + <message> + <source>45</source> + <translation type="vanished">45</translation> + </message> + <message> + <source>Native (59.7)</source> + <translation type="vanished">Native (59.7)</translation> + </message> + <message> + <source>60</source> + <translation type="vanished">60</translation> + </message> + <message> + <source>90</source> + <translation type="vanished">90</translation> + </message> + <message> + <source>120</source> + <translation type="vanished">120</translation> + </message> + <message> + <source>240</source> + <translation type="vanished">240</translation> + </message> + <message> + <location filename="../Window.cpp" line="1436"/> + <source>Take &amp;screenshot</source> + <translation>スクリーンショット (&amp;S)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1438"/> + <source>F12</source> + <translation>F12</translation> + </message> + <message> + <source>Record output...</source> + <translation type="vanished">Record output...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1443"/> + <source>Record GIF/APNG...</source> + <translation>GIF/APNG録画...</translation> + </message> + <message> + <source>Record video log...</source> + <translation type="vanished">Record video log...</translation> + </message> + <message> + <source>Stop video log</source> + <translation type="vanished">Stop video log</translation> + </message> + <message> + <location filename="../Window.cpp" line="1308"/> + <source>Game Boy Printer...</source> + <translation>ポケットプリンタ...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1317"/> + <source>BattleChip Gate...</source> + <translation>チップゲート...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1324"/> + <source>%1×</source> + <translation>%1×</translation> + </message> + <message> + <location filename="../Window.cpp" line="1376"/> + <source>Interframe blending</source> + <translation>フレーム間混合</translation> + </message> + <message> + <location filename="../Window.cpp" line="1442"/> + <source>Record A/V...</source> + <translation>ビデオ録画...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1447"/> + <source>Video layers</source> + <translation>ビデオレイヤー</translation> + </message> + <message> + <location filename="../Window.cpp" line="1448"/> + <source>Audio channels</source> + <translation>オーディオチャンネル</translation> + </message> + <message> + <location filename="../Window.cpp" line="1450"/> + <source>Adjust layer placement...</source> + <translation>レイヤーの配置を調整...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1452"/> + <source>&amp;Tools</source> + <translation>ツール (&amp;T)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1453"/> + <source>View &amp;logs...</source> + <translation>ログビューアー... (&amp;L)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1455"/> + <source>Game &amp;overrides...</source> + <translation>ゲーム別設定... (&amp;O)</translation> + </message> + <message> + <source>Game &amp;Pak sensors...</source> + <translation type="vanished">カートリッジセンサー... (&amp;P)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1478"/> + <source>&amp;Cheats...</source> + <translation>チート... (&amp;C)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1481"/> + <source>Settings...</source> + <translation>設定...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1485"/> + <source>Open debugger console...</source> + <translation>デバッガを開く...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1487"/> + <source>Start &amp;GDB server...</source> + <translation>GDBサーバ開始... (&amp;G)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1493"/> + <source>View &amp;palette...</source> + <translation>パレットビューアー... (&amp;P)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1494"/> + <source>View &amp;sprites...</source> + <translation>スプライトビューアー... (&amp;S)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1495"/> + <source>View &amp;tiles...</source> + <translation>タイルビューアー... (&amp;T)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1496"/> + <source>View &amp;map...</source> + <translation>マップビューアー... (&amp;M)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1499"/> + <source>&amp;Frame inspector...</source> + <translation>フレームインスペクタ... (&amp;F)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1517"/> + <source>View memory...</source> + <translation>メモリビューアー...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1518"/> + <source>Search memory...</source> + <translation>メモリーサーチ...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1521"/> + <source>View &amp;I/O registers...</source> + <translation>IOビューアー... (&amp;I)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1526"/> + <source>Record debug video log...</source> + <translation>デバッグビデオログを記録...</translation> + </message> + <message> + <location filename="../Window.cpp" line="1527"/> + <source>Stop debug video log</source> + <translation>デバッグビデオログを停止</translation> + </message> + <message> + <location filename="../Window.cpp" line="1615"/> + <source>Exit fullscreen</source> + <translation>全画面終了</translation> + </message> + <message> + <location filename="../Window.cpp" line="1617"/> + <source>GameShark Button (held)</source> + <translation>GameSharkボタン(固定)</translation> + </message> + <message> + <location filename="../Window.cpp" line="1623"/> + <source>Autofire</source> + <translation>連打</translation> + </message> + <message> + <location filename="../Window.cpp" line="1624"/> + <source>Autofire A</source> + <translation>連打 A</translation> + </message> + <message> + <location filename="../Window.cpp" line="1629"/> + <source>Autofire B</source> + <translation>連打 B</translation> + </message> + <message> + <location filename="../Window.cpp" line="1634"/> + <source>Autofire L</source> + <translation>連打 L</translation> + </message> + <message> + <location filename="../Window.cpp" line="1639"/> + <source>Autofire R</source> + <translation>連打 R</translation> + </message> + <message> + <location filename="../Window.cpp" line="1644"/> + <source>Autofire Start</source> + <translation>連打 Start</translation> + </message> + <message> + <location filename="../Window.cpp" line="1649"/> + <source>Autofire Select</source> + <translation>連打 Select</translation> + </message> + <message> + <location filename="../Window.cpp" line="1654"/> + <source>Autofire Up</source> + <translation>連打 上</translation> + </message> + <message> + <location filename="../Window.cpp" line="1659"/> + <source>Autofire Right</source> + <translation>連打 右</translation> + </message> + <message> + <location filename="../Window.cpp" line="1664"/> + <source>Autofire Down</source> + <translation>連打 下</translation> + </message> + <message> + <location filename="../Window.cpp" line="1669"/> + <source>Autofire Left</source> + <translation>連打 左</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../utils.cpp" line="29"/> + <source>GBA</source> + <translation>GBA</translation> + </message> + <message> + <location filename="../utils.cpp" line="33"/> + <source>GB</source> + <translation>GB</translation> + </message> + <message> + <location filename="../utils.cpp" line="36"/> + <source>?</source> + <translation>?</translation> + </message> +</context> +<context> + <name>ROMInfo</name> + <message> + <location filename="../ROMInfo.ui" line="14"/> + <source>ROM Info</source> + <translation>ROM情報</translation> + </message> + <message> + <location filename="../ROMInfo.ui" line="26"/> + <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>SensorView</name> + <message> + <location filename="../SensorView.ui" line="20"/> + <source>Sensors</source> + <translation>カートリッジセンサー</translation> + </message> + <message> + <location filename="../SensorView.ui" line="31"/> + <source>Realtime clock</source> + <translation>リアルタイムクロック</translation> + </message> + <message> + <location filename="../SensorView.ui" line="37"/> + <source>Fixed time</source> + <translation>定刻</translation> + </message> + <message> + <location filename="../SensorView.ui" line="47"/> + <source>System time</source> + <translation>システム日時</translation> + </message> + <message> + <location filename="../SensorView.ui" line="60"/> + <source>Start time at</source> + <translation>日時指定</translation> + </message> + <message> + <location filename="../SensorView.ui" line="70"/> + <source>Now</source> + <translation>現在日時</translation> + </message> + <message> + <location filename="../SensorView.ui" line="97"/> + <source>MM/dd/yy hh:mm:ss AP</source> + <translation>yyyy/MM/dd HH:mm:ss</translation> + </message> + <message> + <location filename="../SensorView.ui" line="107"/> + <source>Light sensor</source> + <translation>光センサー</translation> + </message> + <message> + <location filename="../SensorView.ui" line="113"/> + <source>Brightness</source> + <translation>明るさ</translation> + </message> + <message> + <location filename="../SensorView.ui" line="150"/> + <source>Tilt sensor</source> + <translation>動きセンサー</translation> + </message> + <message> + <location filename="../SensorView.ui" line="158"/> + <location filename="../SensorView.ui" line="247"/> + <source>Set Y</source> + <translation>垂直方向</translation> + </message> + <message> + <location filename="../SensorView.ui" line="168"/> + <location filename="../SensorView.ui" line="257"/> + <source>Set X</source> + <translation>水平方向</translation> + </message> + <message> + <location filename="../SensorView.ui" line="239"/> + <source>Gyroscope</source> + <translation>回転センサー</translation> + </message> + <message> + <location filename="../SensorView.ui" line="267"/> + <source>Sensitivity</source> + <translation>感度</translation> + </message> +</context> +<context> + <name>SettingsView</name> + <message> + <location filename="../SettingsView.ui" line="20"/> + <source>Settings</source> + <translation>設定</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="52"/> + <source>Audio/Video</source> + <translation>ビデオ/オーディオ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="57"/> + <source>Interface</source> + <translation>インターフェース</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="62"/> + <source>Emulation</source> + <translation>エミュレーション</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="67"/> + <source>Enhancements</source> + <translation>機能強化</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="72"/> + <source>BIOS</source> + <translation>BIOS</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="77"/> + <source>Paths</source> + <translation>ディレクトリ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="82"/> + <source>Logging</source> + <translation>ロギング</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="87"/> + <source>Game Boy</source> + <translation>ゲームボーイ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="105"/> + <source>Audio driver:</source> + <translation>オーディオドライバ:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="122"/> + <source>Audio buffer:</source> + <translation>オーディオバッファ:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="134"/> + <location filename="../SettingsView.ui" line="156"/> + <source>1536</source> + <translation>1536</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="141"/> + <source>512</source> + <translation>512</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="146"/> + <source>768</source> + <translation>768</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="151"/> + <source>1024</source> + <translation>1024</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="161"/> + <source>2048</source> + <translation>2048</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="166"/> + <source>3072</source> + <translation>3072</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="171"/> + <source>4096</source> + <translation>4096</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="179"/> + <source>samples</source> + <translation>samples</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="188"/> + <source>Sample rate:</source> + <translation>サンプルレート:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="200"/> + <location filename="../SettingsView.ui" line="217"/> + <source>44100</source> + <translation>44100</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="207"/> + <source>22050</source> + <translation>22050</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="212"/> + <source>32000</source> + <translation>32000</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="222"/> + <source>48000</source> + <translation>48000</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="230"/> + <source>Hz</source> + <translation>Hz</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="239"/> + <source>Volume:</source> + <translation>音量:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="270"/> + <location filename="../SettingsView.ui" line="310"/> + <source>Mute</source> + <translation>ミュート</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="279"/> + <source>Fast forward volume:</source> + <translation>早送り音量:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="326"/> + <source>Display driver:</source> + <translation>ディスプレイドライバ:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="343"/> + <source>Frameskip:</source> + <translation>フレームスキップ:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="352"/> + <source>Skip every</source> + <translation>常時</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="362"/> + <location filename="../SettingsView.ui" line="803"/> + <source>frames</source> + <translation>フレーム</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="371"/> + <source>FPS target:</source> + <translation>FPS:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="396"/> + <source>frames per second</source> + <translation>FPS</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="412"/> + <source>Sync:</source> + <translation>同期:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="421"/> + <source>Video</source> + <translation>ビデオ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="428"/> + <source>Audio</source> + <translation>オーディオ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="437"/> + <source>Lock aspect ratio</source> + <translation>アスペクト比を固定</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="451"/> + <source>Bilinear filtering</source> + <translation>バイリニアフィルタリング</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="458"/> + <source>Native (59.7275)</source> + <translation>Native (59,7275)</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="465"/> + <source>Interframe blending</source> + <translation>フレーム間混合</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="568"/> + <source>Pause when minimized</source> + <translation>最小化時に停止</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="653"/> + <source>Show OSD messages</source> + <translation>OSDメッセージ表示</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="713"/> + <source>Fast forward (held) speed:</source> + <translation>早送り(固定) 速度:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1003"/> + <source>(240×160)</source> + <translation>(240×160)</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1424"/> + <source>Log to file</source> + <translation>ファイル出力</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1431"/> + <source>Log to console</source> + <translation>コンソール出力</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1445"/> + <source>Select Log File</source> + <translation>ファイル選択</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1458"/> + <source>Game Boy model:</source> + <translation>ゲームボーイ:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1494"/> + <source>Super Game Boy model:</source> + <translation>スーパーゲームボーイ:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1530"/> + <source>Game Boy Color model:</source> + <translation>ゲームボーイカラー:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1865"/> + <source>Use GBC colors in GB games</source> + <translation>GBゲームでGBCのカラーを使用</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1872"/> + <source>Camera:</source> + <translation>カメラ:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="444"/> + <source>Force integer scaling</source> + <translation>整数スケーリングを強制</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="476"/> + <source>Language</source> + <translation>言語</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="484"/> + <source>English</source> + <translation>English</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="499"/> + <source>Library:</source> + <translation>ライブラリー:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="507"/> + <source>List view</source> + <translation>リスト表示</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="512"/> + <source>Tree view</source> + <translation>ツリー表示</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="520"/> + <source>Show when no game open</source> + <translation>ゲームが開いていないときに表示</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="530"/> + <source>Clear cache</source> + <translation>キャッシュクリア</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="544"/> + <source>Allow opposing input directions</source> + <translation>Allow opposing input directions</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="551"/> + <source>Suspend screensaver</source> + <translation>スクリーンセーバー無効化</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="561"/> + <source>Pause when inactive</source> + <translation>非アクティブ時に停止</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="582"/> + <source>Show FPS in title bar</source> + <translation>FPSをタイトルバーに表示</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="633"/> + <source>Automatically save cheats</source> + <translation>チートの自動保存</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="643"/> + <source>Automatically load cheats</source> + <translation>チートの自動読込</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="606"/> + <source>Automatically save state</source> + <translation>ステートの自動保存</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="616"/> + <source>Automatically load state</source> + <translation>ステートの自動読込</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="592"/> + <source>Enable Discord Rich Presence</source> + <translation>DiscordのRich Presence有効</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="663"/> + <source>Show filename instead of ROM name in title bar</source> + <translation>タイトルバーにゲーム名の代わりにファイル名を表示</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="670"/> + <source>Fast forward speed:</source> + <translation>早送り 速度:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="682"/> + <location filename="../SettingsView.ui" line="725"/> + <location filename="../SettingsView.ui" line="974"/> + <source>×</source> + <translation>×</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="701"/> + <location filename="../SettingsView.ui" line="744"/> + <source>Unbounded</source> + <translation>制限なし</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="780"/> + <source>Enable rewind</source> + <translation>巻戻し有効</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="787"/> + <source>Rewind history:</source> + <translation>巻戻し履歴:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="819"/> + <source>Idle loops:</source> + <translation>アイドルループ:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="827"/> + <source>Run all</source> + <translation>Run all</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="832"/> + <source>Remove known</source> + <translation>Remove known</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="837"/> + <source>Detect and remove</source> + <translation>Detect and remove</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="859"/> + <source>Savestate extra data:</source> + <translation>ステートセーブ追加データ:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="866"/> + <location filename="../SettingsView.ui" line="910"/> + <source>Screenshot</source> + <translation>スクリーンショット</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="876"/> + <location filename="../SettingsView.ui" line="920"/> + <source>Save data</source> + <translation>セーブデータ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="886"/> + <location filename="../SettingsView.ui" line="927"/> + <source>Cheat codes</source> + <translation>チートコード</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="903"/> + <source>Load extra data:</source> + <translation>ロード追加データ:</translation> + </message> + <message> + <source>Rewind affects save data</source> + <translation type="vanished">Rewind affects save data</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="845"/> + <source>Preload entire ROM into memory</source> + <translation>ROM全体をメモリにプリロード</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="756"/> + <source>Autofire interval:</source> + <translation>連射間隔:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="938"/> + <source>Video renderer:</source> + <translation>ビデオレンダラー:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="946"/> + <source>Software</source> + <translation>Software</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="951"/> + <source>OpenGL</source> + <translation>OpenGL</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="959"/> + <source>OpenGL enhancements</source> + <translation>OpenGL追加機能</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="965"/> + <source>High-resolution scale:</source> + <translation>高解像度スケール:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1028"/> + <source>XQ GBA audio (experimental)</source> + <translation>XQ GBA audio(実験的)</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1039"/> + <source>GB BIOS file:</source> + <translation>ゲームボーイBIOS:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1058"/> + <location filename="../SettingsView.ui" line="1096"/> + <location filename="../SettingsView.ui" line="1131"/> + <location filename="../SettingsView.ui" line="1159"/> + <location filename="../SettingsView.ui" line="1200"/> + <location filename="../SettingsView.ui" line="1248"/> + <location filename="../SettingsView.ui" line="1296"/> + <location filename="../SettingsView.ui" line="1344"/> + <location filename="../SettingsView.ui" line="1392"/> + <source>Browse</source> + <translation>参照</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1067"/> + <source>Use BIOS file if found</source> + <translation>存在する場合にBIOSファイルを使用</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1077"/> + <source>Skip BIOS intro</source> + <translation>BIOSイントロをスキップ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1105"/> + <source>GBA BIOS file:</source> + <translation>ゲームボーイアドバンスBIOS:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1112"/> + <source>GBC BIOS file:</source> + <translation>ゲームボーイカラーBIOS:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1140"/> + <source>SGB BIOS file:</source> + <translation>スーパーゲームボーイBIOS:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1175"/> + <source>Save games</source> + <translation>セーブデータ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1209"/> + <location filename="../SettingsView.ui" line="1257"/> + <location filename="../SettingsView.ui" line="1305"/> + <location filename="../SettingsView.ui" line="1353"/> + <location filename="../SettingsView.ui" line="1401"/> + <source>Same directory as the ROM</source> + <translation>ROMファイルと同じディレクトリ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1223"/> + <source>Save states</source> + <translation>ステートセーブ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1271"/> + <source>Screenshots</source> + <translation>スクリーンショット</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1319"/> + <source>Patches</source> + <translation>パッチ</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1367"/> + <source>Cheats</source> + <translation>チート</translation> + </message> + <message> + <source>Game Boy model</source> + <translation type="vanished">Game Boy model</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1466"/> + <location filename="../SettingsView.ui" line="1502"/> + <location filename="../SettingsView.ui" line="1538"/> + <source>Autodetect</source> + <translation>自動検出</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1471"/> + <location filename="../SettingsView.ui" line="1507"/> + <location filename="../SettingsView.ui" line="1543"/> + <source>Game Boy (DMG)</source> + <translation>Game Boy (DMG)</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1476"/> + <location filename="../SettingsView.ui" line="1512"/> + <location filename="../SettingsView.ui" line="1548"/> + <source>Super Game Boy (SGB)</source> + <translation>Super Game Boy (SGB)</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1481"/> + <location filename="../SettingsView.ui" line="1517"/> + <location filename="../SettingsView.ui" line="1553"/> + <source>Game Boy Color (CGB)</source> + <translation>Game Boy Color (CGB)</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1486"/> + <location filename="../SettingsView.ui" line="1522"/> + <location filename="../SettingsView.ui" line="1558"/> + <source>Game Boy Advance (AGB)</source> + <translation>Game Boy Advance (AGB)</translation> + </message> + <message> + <source>Super Game Boy model</source> + <translation type="vanished">Super Game Boy model</translation> + </message> + <message> + <source>Game Boy Color model</source> + <translation type="vanished">Game Boy Color model</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1573"/> + <source>Default BG colors:</source> + <translation>規定 背景色:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1740"/> + <source>Super Game Boy borders</source> + <translation>Super Game Boy borders</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1754"/> + <source>Camera driver:</source> + <translation>カメラドライバ:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1851"/> + <source>Default sprite colors 1:</source> + <translation>規定 スプライト1:</translation> + </message> + <message> + <location filename="../SettingsView.ui" line="1858"/> + <source>Default sprite colors 2:</source> + <translation>規定 スプライト2:</translation> + </message> +</context> +<context> + <name>ShaderSelector</name> + <message> + <location filename="../ShaderSelector.ui" line="14"/> + <source>Shaders</source> + <translation>シェーダー</translation> + </message> + <message> + <location filename="../ShaderSelector.ui" line="28"/> + <source>Active Shader:</source> + <translation>アクティブシェーダー:</translation> + </message> + <message> + <location filename="../ShaderSelector.ui" line="35"/> + <source>Name</source> + <translation>名称</translation> + </message> + <message> + <location filename="../ShaderSelector.ui" line="45"/> + <source>Author</source> + <translation>製作者</translation> + </message> + <message> + <location filename="../ShaderSelector.ui" line="62"/> + <source>Description</source> + <translation>説明</translation> + </message> + <message> + <location filename="../ShaderSelector.ui" line="88"/> + <source>Unload Shader</source> + <translation>シェーダーをアンロード</translation> + </message> + <message> + <location filename="../ShaderSelector.ui" line="95"/> + <source>Load New Shader</source> + <translation>新規シェーダーをロード</translation> + </message> +</context> +<context> + <name>ShortcutView</name> + <message> + <location filename="../ShortcutView.ui" line="14"/> + <source>Edit Shortcuts</source> + <translation>ショートカットキー編集</translation> + </message> + <message> + <location filename="../ShortcutView.ui" line="29"/> + <source>Keyboard</source> + <translation>キーボード</translation> + </message> + <message> + <location filename="../ShortcutView.ui" line="39"/> + <source>Gamepad</source> + <translation>ゲームパッド</translation> + </message> + <message> + <location filename="../ShortcutView.ui" line="46"/> + <source>Clear</source> + <translation>削除</translation> + </message> +</context> +<context> + <name>TileView</name> + <message> + <location filename="../TileView.ui" line="14"/> + <source>Tiles</source> + <translation>タイルビューワー</translation> + </message> + <message> + <location filename="../TileView.ui" line="20"/> + <source>Export Selected</source> + <translation>選択内容を保存</translation> + </message> + <message> + <location filename="../TileView.ui" line="27"/> + <source>Export All</source> + <translation>すべて保存</translation> + </message> + <message> + <location filename="../TileView.ui" line="43"/> + <source>256 colors</source> + <translation>256色</translation> + </message> + <message> + <location filename="../TileView.ui" line="56"/> + <source>×</source> + <translation>×</translation> + </message> + <message> + <location filename="../TileView.ui" line="69"/> + <source>Magnification</source> + <translation>倍率</translation> + </message> + <message> + <location filename="../TileView.ui" line="92"/> + <source>Tiles per row</source> + <translation>Tiles per row</translation> + </message> + <message> + <location filename="../TileView.ui" line="99"/> + <source>Fit to window</source> + <translation>ウィンドウに合わせる</translation> + </message> + <message> + <location filename="../TileView.ui" line="192"/> + <source>Copy Selected</source> + <translation>選択内容をコピー</translation> + </message> + <message> + <location filename="../TileView.ui" line="199"/> + <source>Copy All</source> + <translation>すべてコピー</translation> + </message> +</context> +<context> + <name>VideoView</name> + <message> + <location filename="../VideoView.ui" line="20"/> + <source>Record Video</source> + <translation>録画</translation> + </message> + <message> + <location filename="../VideoView.ui" line="40"/> + <source>Start</source> + <translation>開始</translation> + </message> + <message> + <location filename="../VideoView.ui" line="56"/> + <source>Stop</source> + <translation>停止</translation> + </message> + <message> + <location filename="../VideoView.ui" line="69"/> + <source>Select File</source> + <translation>ファイル選択</translation> + </message> + <message> + <location filename="../VideoView.ui" line="101"/> + <source>Presets</source> + <translation>プリセット</translation> + </message> + <message> + <source>High Quality</source> + <translation type="vanished">High Quality</translation> + </message> + <message> + <source>YouTube</source> + <translation type="vanished">YouTube</translation> + </message> + <message> + <location filename="../VideoView.ui" line="129"/> + <location filename="../VideoView.ui" line="237"/> + <source>WebM</source> + <translation>WebM</translation> + </message> + <message> + <source>Lossless</source> + <translation type="vanished">Lossless</translation> + </message> + <message> + <source>1080p</source> + <translation type="vanished">1080p</translation> + </message> + <message> + <source>720p</source> + <translation type="vanished">720p</translation> + </message> + <message> + <source>480p</source> + <translation type="vanished">480p</translation> + </message> + <message> + <source>Native</source> + <translation type="vanished">Native</translation> + </message> + <message> + <location filename="../VideoView.ui" line="222"/> + <source>Format</source> + <translation>形式</translation> + </message> + <message> + <location filename="../VideoView.ui" line="232"/> + <source>MKV</source> + <translation>MKV</translation> + </message> + <message> + <location filename="../VideoView.ui" line="242"/> + <source>AVI</source> + <translation>AVI</translation> + </message> + <message> + <location filename="../VideoView.ui" line="247"/> + <source>MP4</source> + <translation>MP4</translation> + </message> + <message> + <source>PNG</source> + <translation type="vanished">PNG</translation> + </message> + <message> + <location filename="../VideoView.ui" line="109"/> + <source>High &amp;Quality</source> + <translation>High &amp;Quality</translation> + </message> + <message> + <location filename="../VideoView.ui" line="119"/> + <source>&amp;YouTube</source> + <translation>&amp;YouTube</translation> + </message> + <message> + <location filename="../VideoView.ui" line="139"/> + <source>&amp;Lossless</source> + <translation>&amp;Lossless</translation> + </message> + <message> + <location filename="../VideoView.ui" line="156"/> + <source>&amp;1080p</source> + <translation>&amp;1080p</translation> + </message> + <message> + <location filename="../VideoView.ui" line="166"/> + <source>&amp;720p</source> + <translation>&amp;720p</translation> + </message> + <message> + <location filename="../VideoView.ui" line="176"/> + <source>&amp;480p</source> + <translation>&amp;480p</translation> + </message> + <message> + <location filename="../VideoView.ui" line="189"/> + <source>&amp;Native</source> + <translation>&amp;Native</translation> + </message> + <message> + <location filename="../VideoView.ui" line="259"/> + <source>h.264</source> + <translation>h.264</translation> + </message> + <message> + <location filename="../VideoView.ui" line="264"/> + <source>h.264 (NVENC)</source> + <translation>h.264 (NVENC)</translation> + </message> + <message> + <location filename="../VideoView.ui" line="269"/> + <source>HEVC</source> + <translation>HEVC</translation> + </message> + <message> + <location filename="../VideoView.ui" line="274"/> + <source>HEVC (NVENC)</source> + <translation>HEVC (NVENC)</translation> + </message> + <message> + <location filename="../VideoView.ui" line="279"/> + <source>VP8</source> + <translation>VP8</translation> + </message> + <message> + <location filename="../VideoView.ui" line="284"/> + <source>VP9</source> + <translation>VP9</translation> + </message> + <message> + <location filename="../VideoView.ui" line="289"/> + <source>FFV1</source> + <translation>FFV1</translation> + </message> + <message> + <location filename="../VideoView.ui" line="301"/> + <source>FLAC</source> + <translation>FLAC</translation> + </message> + <message> + <location filename="../VideoView.ui" line="306"/> + <source>Opus</source> + <translation>Opus</translation> + </message> + <message> + <location filename="../VideoView.ui" line="311"/> + <source>Vorbis</source> + <translation>Vorbis</translation> + </message> + <message> + <location filename="../VideoView.ui" line="316"/> + <source>MP3</source> + <translation>MP3</translation> + </message> + <message> + <location filename="../VideoView.ui" line="321"/> + <source>AAC</source> + <translation>AAC</translation> + </message> + <message> + <location filename="../VideoView.ui" line="326"/> + <source>Uncompressed</source> + <translation>圧縮なし</translation> + </message> + <message> + <location filename="../VideoView.ui" line="337"/> + <source> Bitrate (kbps)</source> + <translation> ビットレート(kbps)</translation> + </message> + <message> + <location filename="../VideoView.ui" line="343"/> + <source>VBR </source> + <translation>VBR </translation> + </message> + <message> + <location filename="../VideoView.ui" line="388"/> + <source>ABR</source> + <translation>ABR</translation> + </message> + <message> + <location filename="../VideoView.ui" line="404"/> + <source>Dimensions</source> + <translation>サイズ</translation> + </message> + <message> + <location filename="../VideoView.ui" line="410"/> + <source>:</source> + <translation>:</translation> + </message> + <message> + <location filename="../VideoView.ui" line="420"/> + <source>×</source> + <translation>×</translation> + </message> + <message> + <location filename="../VideoView.ui" line="470"/> + <source>Lock aspect ratio</source> + <translation>アスペクト比固定</translation> + </message> + <message> + <location filename="../VideoView.ui" line="485"/> + <source>Show advanced</source> + <translation>詳細表示</translation> + </message> +</context> +</TS>
M src/sm83/debugger/debugger.csrc/sm83/debugger/debugger.c

@@ -90,6 +90,9 @@ platform->d.hasBreakpoints = SM83DebuggerHasBreakpoints;

platform->d.trace = SM83DebuggerTrace; platform->d.getRegister = SM83DebuggerGetRegister; platform->d.setRegister = SM83DebuggerSetRegister; + platform->d.getStackTraceMode = NULL; + platform->d.setStackTraceMode = NULL; + platform->d.updateStackTrace = NULL; platform->printStatus = NULL; return &platform->d; }
M src/sm83/isa-sm83.csrc/sm83/isa-sm83.c

@@ -9,33 +9,27 @@ #include <mgba/internal/sm83/emitter-sm83.h>

#include <mgba/internal/sm83/sm83.h> static inline uint16_t SM83ReadHL(struct SM83Core* cpu) { - uint16_t hl; - LOAD_16LE(hl, 0, &cpu->hl); - return hl; + return cpu->hl; } static inline void SM83WriteHL(struct SM83Core* cpu, uint16_t hl) { - STORE_16LE(hl, 0, &cpu->hl); + cpu->hl = hl; } static inline uint16_t SM83ReadBC(struct SM83Core* cpu) { - uint16_t bc; - LOAD_16LE(bc, 0, &cpu->bc); - return bc; + return cpu->bc; } static inline void SM83WriteBC(struct SM83Core* cpu, uint16_t bc) { - STORE_16LE(bc, 0, &cpu->bc); + cpu->bc = bc; } static inline uint16_t SM83ReadDE(struct SM83Core* cpu) { - uint16_t de; - LOAD_16LE(de, 0, &cpu->de); - return de; + return cpu->de; } static inline void SM83WriteDE(struct SM83Core* cpu, uint16_t de) { - STORE_16LE(de, 0, &cpu->de); + cpu->de = de; } #define DEFINE_INSTRUCTION_SM83(NAME, BODY) \

@@ -77,7 +71,7 @@

DEFINE_CONDITIONAL_INSTRUCTION_SM83(JP); DEFINE_INSTRUCTION_SM83(JPHL, - cpu->pc = SM83ReadHL(cpu); + cpu->pc = cpu->hl; cpu->memory.setActiveRegion(cpu, cpu->pc);) DEFINE_INSTRUCTION_SM83(JRFinish,

@@ -226,7 +220,7 @@

#define DEFINE_LDHL__INSTRUCTION_SM83(NAME, OPERAND) \ DEFINE_INSTRUCTION_SM83(LDHL_ ## NAME, \ cpu->bus = OPERAND; \ - cpu->index = SM83ReadHL(cpu); \ + cpu->index = cpu->hl; \ cpu->executionState = SM83_CORE_MEMORY_STORE; \ cpu->instruction = _SM83InstructionNOP;)

@@ -244,7 +238,7 @@ DEFINE_ ## NAME ## _INSTRUCTION_SM83(H, cpu->h); \

DEFINE_ ## NAME ## _INSTRUCTION_SM83(L, cpu->l); DEFINE_INSTRUCTION_SM83(LDHL_Bus, \ - cpu->index = SM83ReadHL(cpu); \ + cpu->index = cpu->hl; \ cpu->executionState = SM83_CORE_MEMORY_STORE; \ cpu->instruction = _SM83InstructionNOP;)

@@ -267,7 +261,7 @@ cpu->executionState = SM83_CORE_READ_PC;

cpu->instruction = _SM83InstructionLDHL_SPDelay;) DEFINE_INSTRUCTION_SM83(LDSP_HL, - cpu->sp = SM83ReadHL(cpu); + cpu->sp = cpu->hl; cpu->executionState = SM83_CORE_STALL;) #define DEFINE_ALU_INSTRUCTION_SM83_MEM(NAME, REG) \

@@ -378,7 +372,7 @@ cpu->executionState = SM83_CORE_READ_PC; \

cpu->instruction = _SM83InstructionLDBCDelay;) DEFINE_INSTRUCTION_SM83(LDBC_A, \ - cpu->index = SM83ReadBC(cpu); \ + cpu->index = cpu->bc; \ cpu->bus = cpu->a; \ cpu->executionState = SM83_CORE_MEMORY_STORE; \ cpu->instruction = _SM83InstructionNOP;)

@@ -393,7 +387,7 @@ cpu->executionState = SM83_CORE_READ_PC; \

cpu->instruction = _SM83InstructionLDDEDelay;) DEFINE_INSTRUCTION_SM83(LDDE_A, \ - cpu->index = SM83ReadDE(cpu); \ + cpu->index = cpu->de; \ cpu->bus = cpu->a; \ cpu->executionState = SM83_CORE_MEMORY_STORE; \ cpu->instruction = _SM83InstructionNOP;)

@@ -419,27 +413,27 @@ cpu->executionState = SM83_CORE_READ_PC; \

cpu->instruction = _SM83InstructionLDSPDelay;) DEFINE_INSTRUCTION_SM83(LDIHLA, \ - cpu->index = SM83ReadHL(cpu); \ + cpu->index = cpu->hl; \ SM83WriteHL(cpu, cpu->index + 1); \ cpu->bus = cpu->a; \ cpu->executionState = SM83_CORE_MEMORY_STORE; \ cpu->instruction = _SM83InstructionNOP;) DEFINE_INSTRUCTION_SM83(LDDHLA, \ - cpu->index = SM83ReadHL(cpu); \ + cpu->index = cpu->hl; \ SM83WriteHL(cpu, cpu->index - 1); \ cpu->bus = cpu->a; \ cpu->executionState = SM83_CORE_MEMORY_STORE; \ cpu->instruction = _SM83InstructionNOP;) DEFINE_INSTRUCTION_SM83(LDA_IHL, \ - cpu->index = SM83ReadHL(cpu); \ + cpu->index = cpu->hl; \ SM83WriteHL(cpu, cpu->index + 1); \ cpu->executionState = SM83_CORE_MEMORY_LOAD; \ cpu->instruction = _SM83InstructionLDA_Bus;) DEFINE_INSTRUCTION_SM83(LDA_DHL, \ - cpu->index = SM83ReadHL(cpu); \ + cpu->index = cpu->hl; \ SM83WriteHL(cpu, cpu->index - 1); \ cpu->executionState = SM83_CORE_MEMORY_LOAD; \ cpu->instruction = _SM83InstructionLDA_Bus;)

@@ -587,7 +581,7 @@ cpu->instruction = _SM83InstructionNOP;

cpu->executionState = SM83_CORE_MEMORY_STORE;) DEFINE_INSTRUCTION_SM83(INC_HL, - cpu->index = SM83ReadHL(cpu); + cpu->index = cpu->hl; cpu->instruction = _SM83InstructionINC_HLDelay; cpu->executionState = SM83_CORE_MEMORY_LOAD;)

@@ -601,7 +595,7 @@ cpu->instruction = _SM83InstructionNOP;

cpu->executionState = SM83_CORE_MEMORY_STORE;) DEFINE_INSTRUCTION_SM83(DEC_HL, - cpu->index = SM83ReadHL(cpu); + cpu->index = cpu->hl; cpu->instruction = _SM83InstructionDEC_HLDelay; cpu->executionState = SM83_CORE_MEMORY_LOAD;)

@@ -699,7 +693,7 @@ cpu->bus = reg; \

cpu->executionState = WB; \ cpu->instruction = _SM83InstructionNOP;) \ DEFINE_INSTRUCTION_SM83(NAME ## HL, \ - cpu->index = SM83ReadHL(cpu); \ + cpu->index = cpu->hl; \ cpu->executionState = SM83_CORE_MEMORY_LOAD; \ cpu->instruction = _SM83Instruction ## NAME ## HLDelay;) \ DEFINE_INSTRUCTION_SM83(NAME ## A, uint8_t reg = cpu->a; BODY; cpu->a = reg)