mirror of https://github.com/mgba-emu/mgba.git
Merge branch 'master' into translations
This commit is contained in:
commit
618907586f
10
CHANGES
10
CHANGES
|
@ -18,9 +18,12 @@ Emulation fixes:
|
|||
Other fixes:
|
||||
- Core: Fix inconsistencies with setting game-specific overrides (fixes mgba.io/i/2963)
|
||||
- Debugger: Fix writing to specific segment in command-line debugger
|
||||
- GB Serialize: Prevent loading invalid states where LY >= 144 in modes other than 1
|
||||
- GBA Hardware: Fix loading states unconditionally overwriting GPIO memory
|
||||
- FFmpeg: Fix failing to record videos with CRF video (fixes mgba.io/i/3368)
|
||||
- GB Core: Fix cloning savedata when backing file is outdated (fixes mgba.io/i/3388)
|
||||
- GBA: Fix getting game info for multiboot ROMs
|
||||
- GBA Core: Fix booting into BIOS when skip BIOS is enabled
|
||||
- GBA Hardware: Fix loading states unconditionally overwriting GPIO memory
|
||||
- mGUI: Load parent directory if last used directory is missing (fixes mgba.io/i/3379)
|
||||
- Qt: Fix savestate preview sizes with different scales (fixes mgba.io/i/2560)
|
||||
- Qt: Fix potential crash when configuring shortcuts
|
||||
Misc:
|
||||
|
@ -38,13 +41,16 @@ Misc:
|
|||
- Libretro: Add Super Game Boy Color support (closes mgba.io/i/3188)
|
||||
- mGUI: Enable auto-softpatching (closes mgba.io/i/2899)
|
||||
- mGUI: Persist fast forwarding after closing menu (fixes mgba.io/i/2414)
|
||||
- mGUI: Wrap around menu cursor when navigating past end (closes mgba.io/i/3356)
|
||||
- Qt: Handle multiple save game files for disparate games separately (fixes mgba.io/i/2887)
|
||||
- Qt: Remove maligned double-click-to-fullscreen shortcut (closes mgba.io/i/2632)
|
||||
- Qt: Pass logging context through to video proxy thread (fixes mgba.io/i/3095)
|
||||
- Qt: Show maker code and game version in ROM info
|
||||
- Qt: Show a dummy shader settings tab if shaders aren't supported
|
||||
- Qt: Allow passing multiple games on command line for multiplayer (closes mgba.io/i/3061)
|
||||
- Res: Port NSO-gba-colors shader (closes mgba.io/i/2834)
|
||||
- Scripting: Add `callbacks:oneshot` for single-call callbacks
|
||||
- Updater: Fix rewriting folders and files on Windows (fixes mgba.io/i/3384)
|
||||
|
||||
0.10.4: (2024-12-07)
|
||||
Emulation fixes:
|
||||
|
|
|
@ -72,7 +72,7 @@ if(NOT LIBMGBA_ONLY)
|
|||
set(BUILD_TEST OFF CACHE BOOL "Build testing harness")
|
||||
set(BUILD_SUITE OFF CACHE BOOL "Build test suite")
|
||||
set(BUILD_CINEMA OFF CACHE BOOL "Build video tests suite")
|
||||
set(BUILD_ROM_TEST OFF CACHE BOOL "Build ROM test tool")
|
||||
set(BUILD_HEADLESS OFF CACHE BOOL "Build headless tool")
|
||||
set(BUILD_EXAMPLE OFF CACHE BOOL "Build example frontends")
|
||||
set(BUILD_PYTHON OFF CACHE BOOL "Build Python bindings")
|
||||
set(BUILD_STATIC OFF CACHE BOOL "Build a static library")
|
||||
|
@ -158,6 +158,7 @@ endif()
|
|||
|
||||
include(FindFeature)
|
||||
include(FindFunction)
|
||||
include(DebugStrip)
|
||||
|
||||
# Version information
|
||||
add_custom_target(${BINARY_NAME}-version-info ALL
|
||||
|
@ -948,6 +949,14 @@ if(NOT SKIP_LIBRARY)
|
|||
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util)
|
||||
|
||||
if(BUILD_STATIC)
|
||||
# Some versions of CMake are remarkably bad about deduplicating this list,
|
||||
# leading to issues with static linking. Let's do it manually.
|
||||
list(REVERSE DEPENDENCY_LIB)
|
||||
list(REMOVE_DUPLICATES DEPENDENCY_LIB)
|
||||
list(REVERSE DEPENDENCY_LIB)
|
||||
endif()
|
||||
|
||||
target_link_libraries(${BINARY_NAME} ${DEBUGGER_LIB} ${DEPENDENCY_LIB} ${OS_LIB})
|
||||
install(TARGETS ${BINARY_NAME} LIBRARY DESTINATION ${LIBDIR} COMPONENT lib${BINARY_NAME} NAMELINK_SKIP ARCHIVE DESTINATION ${LIBDIR} RUNTIME DESTINATION ${LIBDIR} COMPONENT lib${BINARY_NAME})
|
||||
if(BUILD_SHARED)
|
||||
|
@ -1037,6 +1046,14 @@ if(BUILD_QT)
|
|||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/platform/qt ${CMAKE_CURRENT_BINARY_DIR}/qt)
|
||||
endif()
|
||||
|
||||
if(BUILD_HEADLESS)
|
||||
add_executable(${BINARY_NAME}-headless ${CMAKE_CURRENT_SOURCE_DIR}/src/platform/headless-main.c)
|
||||
target_link_libraries(${BINARY_NAME}-headless ${PLATFORM_LIBRARY} ${BINARY_NAME})
|
||||
debug_strip(${BINARY_NAME}-headless)
|
||||
target_compile_definitions(${BINARY_NAME}-headless PRIVATE "${OS_DEFINES};${FEATURE_DEFINES};${FUNCTION_DEFINES}")
|
||||
install(TARGETS ${BINARY_NAME}-headless DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${BINARY_NAME}-headless)
|
||||
endif()
|
||||
|
||||
if(NOT USE_CMOCKA)
|
||||
set(BUILD_SUITE OFF)
|
||||
endif()
|
||||
|
@ -1234,6 +1251,11 @@ if(SDL_FOUND)
|
|||
cpack_add_component(${BINARY_NAME}-sdl GROUP sdl)
|
||||
endif()
|
||||
|
||||
if(BUILD_HEADLESS)
|
||||
cpack_add_component_group(headless PARENT_GROUP base)
|
||||
cpack_add_component(${BINARY_NAME}-headless GROUP headless)
|
||||
endif()
|
||||
|
||||
if(DISTBUILD)
|
||||
cpack_add_component_group(debug PARENT_GROUP dev)
|
||||
if(BUILD_SHARED AND NOT IS_EMBEDDED)
|
||||
|
@ -1248,6 +1270,9 @@ if(DISTBUILD)
|
|||
if(SDL_FOUND)
|
||||
cpack_add_component(${BINARY_NAME}-sdl-dbg GROUP debug)
|
||||
endif()
|
||||
if(BUILD_HEADLESS)
|
||||
cpack_add_component(${BINARY_NAME}-headless-dbg GROUP debug)
|
||||
endif()
|
||||
if(WIN32)
|
||||
cpack_add_component_group(installer PARENT_GROUP base)
|
||||
endif()
|
||||
|
@ -1318,6 +1343,7 @@ if(NOT QUIET AND NOT LIBMGBA_ONLY)
|
|||
message(STATUS "Frontends:")
|
||||
message(STATUS " Qt: ${BUILD_QT}")
|
||||
message(STATUS " SDL (${SDL_VERSION}): ${BUILD_SDL}")
|
||||
message(STATUS " Headless: ${BUILD_HEADLESS}")
|
||||
message(STATUS " Python bindings: ${BUILD_PYTHON}")
|
||||
message(STATUS " Examples: ${BUILD_EXAMPLE}")
|
||||
message(STATUS "Test tools:")
|
||||
|
@ -1325,7 +1351,6 @@ if(NOT QUIET AND NOT LIBMGBA_ONLY)
|
|||
message(STATUS " Test harness: ${BUILD_TEST}")
|
||||
message(STATUS " Test suite: ${BUILD_SUITE}")
|
||||
message(STATUS " Video test suite: ${BUILD_CINEMA}")
|
||||
message(STATUS " ROM tester: ${BUILD_ROM_TEST}")
|
||||
message(STATUS "Cores:")
|
||||
message(STATUS " Libretro core: ${BUILD_LIBRETRO}")
|
||||
message(STATUS "Libraries:")
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
CXX_GUARD_START
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
// Require Windows 7 or newer
|
||||
#ifndef _WIN32_WINNT
|
||||
#define _WIN32_WINNT 0x0601
|
||||
|
|
|
@ -10,9 +10,12 @@
|
|||
|
||||
CXX_GUARD_START
|
||||
|
||||
#include <mgba/core/log.h>
|
||||
#include <mgba-util/gui.h>
|
||||
#include <mgba-util/vector.h>
|
||||
|
||||
mLOG_DECLARE_CATEGORY(GUI_MENU);
|
||||
|
||||
#define GUI_V_V (struct GUIVariant) { .type = GUI_VARIANT_VOID }
|
||||
#define GUI_V_U(U) (struct GUIVariant) { .type = GUI_VARIANT_UNSIGNED, .v.u = (U) }
|
||||
#define GUI_V_I(I) (struct GUIVariant) { .type = GUI_VARIANT_INT, .v.i = (I) }
|
||||
|
|
|
@ -44,6 +44,7 @@ struct mSubParser {
|
|||
bool (*parse)(struct mSubParser* parser, int option, const char* arg);
|
||||
bool (*parseLong)(struct mSubParser* parser, const char* option, const char* arg);
|
||||
void (*apply)(struct mSubParser* parser, struct mCoreConfig* config);
|
||||
bool (*handleExtraArg)(struct mSubParser* parser, const char* arg);
|
||||
const char* extraOptions;
|
||||
const struct mOption* longOptions;
|
||||
void* opts;
|
||||
|
|
|
@ -350,6 +350,9 @@ static struct mScriptValue* _mScriptCoreChecksum(const struct mCore* core, int t
|
|||
case mCHECKSUM_CRC32:
|
||||
size = 4;
|
||||
break;
|
||||
case mCHECKSUM_MD5:
|
||||
size = 16;
|
||||
break;
|
||||
}
|
||||
if (!size) {
|
||||
return &mScriptValueNull;
|
||||
|
@ -769,7 +772,7 @@ static int64_t _addCallbackToBreakpoint(struct mScriptDebugger* debugger, struct
|
|||
return cbid;
|
||||
}
|
||||
|
||||
static void _runCallbacks(struct mScriptDebugger* debugger, struct mScriptBreakpoint* point) {
|
||||
static void _runCallbacks(struct mScriptDebugger* debugger, struct mScriptBreakpoint* point, struct mScriptValue* info) {
|
||||
struct TableIterator iter;
|
||||
if (!HashTableIteratorStart(&point->callbacks, &iter)) {
|
||||
return;
|
||||
|
@ -778,6 +781,7 @@ static void _runCallbacks(struct mScriptDebugger* debugger, struct mScriptBreakp
|
|||
struct mScriptValue* fn = HashTableIteratorGetValue(&point->callbacks, &iter);
|
||||
struct mScriptFrame frame;
|
||||
mScriptFrameInit(&frame);
|
||||
mSCRIPT_PUSH(&frame.stack, WTABLE, info);
|
||||
mScriptContextInvoke(debugger->p->context, fn, &frame);
|
||||
mScriptFrameDeinit(&frame);
|
||||
} while (HashTableIteratorNext(&point->callbacks, &iter));
|
||||
|
@ -826,7 +830,50 @@ static void _scriptDebuggerEntered(struct mDebuggerModule* debugger, enum mDebug
|
|||
return;
|
||||
}
|
||||
|
||||
_runCallbacks(scriptDebugger, point);
|
||||
struct mScriptValue cbInfo = {
|
||||
.refs = mSCRIPT_VALUE_UNREF,
|
||||
.flags = 0,
|
||||
.type = mSCRIPT_TYPE_MS_TABLE,
|
||||
};
|
||||
cbInfo.type->alloc(&cbInfo);
|
||||
|
||||
static struct mScriptValue keyAddress = mSCRIPT_CHARP("address");
|
||||
static struct mScriptValue keyWidth = mSCRIPT_CHARP("width");
|
||||
static struct mScriptValue keySegment = mSCRIPT_CHARP("segment");
|
||||
static struct mScriptValue keyOldValue = mSCRIPT_CHARP("oldValue");
|
||||
static struct mScriptValue keyNewValue = mSCRIPT_CHARP("newValue");
|
||||
static struct mScriptValue keyAccessType = mSCRIPT_CHARP("accessType");
|
||||
|
||||
struct mScriptValue valAddress = mSCRIPT_MAKE_U32(info->address);
|
||||
struct mScriptValue valWidth = mSCRIPT_MAKE_S32(info->width);
|
||||
struct mScriptValue valSegment = mSCRIPT_MAKE_S32(info->segment);
|
||||
struct mScriptValue valOldValue;
|
||||
struct mScriptValue valNewValue;
|
||||
struct mScriptValue valAccessType;
|
||||
|
||||
mScriptTableInsert(&cbInfo, &keyAddress, &valAddress);
|
||||
if (info->width > 0) {
|
||||
mScriptTableInsert(&cbInfo, &keyWidth, &valWidth);
|
||||
}
|
||||
if (info->segment >= 0) {
|
||||
mScriptTableInsert(&cbInfo, &keySegment, &valSegment);
|
||||
}
|
||||
|
||||
if (reason == DEBUGGER_ENTER_WATCHPOINT) {
|
||||
valOldValue = mSCRIPT_MAKE_S32(info->type.wp.oldValue);
|
||||
valNewValue = mSCRIPT_MAKE_S32(info->type.wp.newValue);
|
||||
valAccessType = mSCRIPT_MAKE_S32(info->type.wp.accessType);
|
||||
|
||||
mScriptTableInsert(&cbInfo, &keyOldValue, &valOldValue);
|
||||
if (info->type.wp.accessType != WATCHPOINT_READ) {
|
||||
mScriptTableInsert(&cbInfo, &keyNewValue, &valNewValue);
|
||||
}
|
||||
mScriptTableInsert(&cbInfo, &keyAccessType, &valAccessType);
|
||||
}
|
||||
|
||||
_runCallbacks(scriptDebugger, point, &cbInfo);
|
||||
|
||||
cbInfo.type->free(&cbInfo);
|
||||
debugger->isPaused = false;
|
||||
}
|
||||
|
||||
|
@ -1296,6 +1343,24 @@ static uint8_t _readLuminance(struct GBALuminanceSource* luminance) {
|
|||
}
|
||||
#endif
|
||||
|
||||
#define CALLBACK(NAME) _mScriptCoreCallback ## NAME
|
||||
#define DEFINE_CALLBACK(NAME) \
|
||||
void CALLBACK(NAME) (void* context) { \
|
||||
struct mScriptContext* scriptContext = context; \
|
||||
if (!scriptContext) { \
|
||||
return; \
|
||||
} \
|
||||
mScriptContextTriggerCallback(scriptContext, #NAME, NULL); \
|
||||
}
|
||||
|
||||
DEFINE_CALLBACK(frame)
|
||||
DEFINE_CALLBACK(crashed)
|
||||
DEFINE_CALLBACK(sleep)
|
||||
DEFINE_CALLBACK(stop)
|
||||
DEFINE_CALLBACK(keysRead)
|
||||
DEFINE_CALLBACK(savedataUpdated)
|
||||
DEFINE_CALLBACK(alarm)
|
||||
|
||||
void mScriptContextAttachCore(struct mScriptContext* context, struct mCore* core) {
|
||||
struct mScriptValue* coreValue = mScriptValueAlloc(mSCRIPT_TYPE_MS_S(mScriptCoreAdapter));
|
||||
struct mScriptCoreAdapter* adapter = calloc(1, sizeof(*adapter));
|
||||
|
@ -1328,6 +1393,18 @@ void mScriptContextAttachCore(struct mScriptContext* context, struct mCore* core
|
|||
}
|
||||
#endif
|
||||
|
||||
struct mCoreCallbacks callbacks = {
|
||||
.videoFrameEnded = CALLBACK(frame),
|
||||
.coreCrashed = CALLBACK(crashed),
|
||||
.sleep = CALLBACK(sleep),
|
||||
.shutdown = CALLBACK(stop),
|
||||
.keysRead = CALLBACK(keysRead),
|
||||
.savedataUpdated = CALLBACK(savedataUpdated),
|
||||
.alarm = CALLBACK(alarm),
|
||||
.context = context
|
||||
};
|
||||
core->addCoreCallbacks(core, &callbacks);
|
||||
|
||||
_rebuildMemoryMap(context, adapter);
|
||||
|
||||
coreValue->value.opaque = adapter;
|
||||
|
|
|
@ -249,9 +249,16 @@ static int _loadPNGChunkHandler(png_structp png, png_unknown_chunkp chunk) {
|
|||
}
|
||||
const uint8_t* data = chunk->data;
|
||||
data += sizeof(uint32_t) * 2;
|
||||
uncompress((Bytef*) item.data, &len, data, chunk->size);
|
||||
item.size = len;
|
||||
mStateExtdataPut(extdata, tag, &item);
|
||||
if (uncompress((Bytef*) item.data, &len, data, chunk->size) == Z_OK) {
|
||||
if ((uLongf) item.size != len) {
|
||||
mLOG(SAVESTATE, WARN, "Mismatched decompressed extdata %i size (%d vs %u)", tag, item.size, (uint32_t) len);
|
||||
item.size = len;
|
||||
}
|
||||
mStateExtdataPut(extdata, tag, &item);
|
||||
} else {
|
||||
mLOG(SAVESTATE, WARN, "Failed to decompress extdata chunk");
|
||||
free(item.data);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -320,7 +327,7 @@ static void* _loadPNGState(struct mCore* core, struct VFile* vf, struct mStateEx
|
|||
return state;
|
||||
}
|
||||
|
||||
static bool _loadPNGExtadata(struct VFile* vf, struct mStateExtdata* extdata) {
|
||||
static bool _loadPNGExtdata(struct VFile* vf, struct mStateExtdata* extdata) {
|
||||
png_structp png = PNGReadOpen(vf, PNG_HEADER_BYTES);
|
||||
png_infop info = png_create_info_struct(png);
|
||||
png_infop end = png_create_info_struct(png);
|
||||
|
@ -511,7 +518,7 @@ void* mCoreExtractState(struct mCore* core, struct VFile* vf, struct mStateExtda
|
|||
bool mCoreExtractExtdata(struct mCore* core, struct VFile* vf, struct mStateExtdata* extdata) {
|
||||
#ifdef USE_PNG
|
||||
if (isPNG(vf)) {
|
||||
return _loadPNGExtadata(vf, extdata);
|
||||
return _loadPNGExtdata(vf, extdata);
|
||||
}
|
||||
#endif
|
||||
if (!core) {
|
||||
|
|
|
@ -365,8 +365,10 @@ M_TEST_DEFINE(basicBreakpointGBA) {
|
|||
|
||||
TEST_PROGRAM(
|
||||
"hit = 0\n"
|
||||
"function bkpt()\n"
|
||||
"address = nil\n"
|
||||
"function bkpt(info)\n"
|
||||
" hit = hit + 1\n"
|
||||
" address = info.address\n"
|
||||
"end"
|
||||
);
|
||||
TEST_PROGRAM("cbid = emu:setBreakpoint(bkpt, 0x020000C4)");
|
||||
|
@ -379,6 +381,7 @@ M_TEST_DEFINE(basicBreakpointGBA) {
|
|||
|
||||
assert_int_equal(debugger.state, DEBUGGER_RUNNING);
|
||||
TEST_PROGRAM("assert(hit >= 1)");
|
||||
TEST_PROGRAM("assert(address == 0x020000C4)");
|
||||
|
||||
mScriptContextDeinit(&context);
|
||||
TEARDOWN_CORE;
|
||||
|
@ -404,8 +407,10 @@ M_TEST_DEFINE(basicBreakpointGB) {
|
|||
|
||||
TEST_PROGRAM(
|
||||
"hit = 0\n"
|
||||
"function bkpt()\n"
|
||||
"address = nil\n"
|
||||
"function bkpt(info)\n"
|
||||
" hit = hit + 1\n"
|
||||
" address = info.address\n"
|
||||
"end"
|
||||
);
|
||||
TEST_PROGRAM("cbid = emu:setBreakpoint(bkpt, 0xF0)");
|
||||
|
@ -418,6 +423,7 @@ M_TEST_DEFINE(basicBreakpointGB) {
|
|||
|
||||
assert_int_equal(debugger.state, DEBUGGER_RUNNING);
|
||||
TEST_PROGRAM("assert(hit >= 1)");
|
||||
TEST_PROGRAM("assert(address == 0xF0)");
|
||||
|
||||
mScriptContextDeinit(&context);
|
||||
TEARDOWN_CORE;
|
||||
|
@ -441,11 +447,22 @@ M_TEST_DEFINE(multipleBreakpoint) {
|
|||
|
||||
TEST_PROGRAM(
|
||||
"hit = 0\n"
|
||||
"function bkpt1()\n"
|
||||
"address = nil\n"
|
||||
"function bkpt1(info)\n"
|
||||
" hit = hit + 1\n"
|
||||
" if address then\n"
|
||||
" address = (address + info.address) / 2\n"
|
||||
" else\n"
|
||||
" address = info.address\n"
|
||||
" end\n"
|
||||
"end\n"
|
||||
"function bkpt2()\n"
|
||||
"function bkpt2(info)\n"
|
||||
" hit = hit + 100\n"
|
||||
" if address then\n"
|
||||
" address = (address + info.address) / 2\n"
|
||||
" else\n"
|
||||
" address = info.address\n"
|
||||
" end\n"
|
||||
"end"
|
||||
);
|
||||
#ifdef M_CORE_GBA
|
||||
|
@ -465,6 +482,13 @@ M_TEST_DEFINE(multipleBreakpoint) {
|
|||
|
||||
assert_int_equal(debugger.state, DEBUGGER_RUNNING);
|
||||
TEST_PROGRAM("assert(hit >= 101)");
|
||||
#ifdef M_CORE_GBA
|
||||
TEST_PROGRAM("assert(address >= 0x020000C4)");
|
||||
TEST_PROGRAM("assert(address <= 0x020000C8)");
|
||||
#else
|
||||
TEST_PROGRAM("assert(address >= 0xF0)");
|
||||
TEST_PROGRAM("assert(address <= 0xF1)");
|
||||
#endif
|
||||
|
||||
mScriptContextDeinit(&context);
|
||||
TEARDOWN_CORE;
|
||||
|
@ -479,13 +503,28 @@ M_TEST_DEFINE(basicWatchpoint) {
|
|||
core->reset(core);
|
||||
mScriptContextAttachCore(&context, core);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 4; ++i) {
|
||||
core->busWrite8(core, RAM_BASE + i, i + 1);
|
||||
}
|
||||
|
||||
mDebuggerInit(&debugger);
|
||||
mDebuggerAttach(&debugger, core);
|
||||
|
||||
TEST_PROGRAM(
|
||||
"hit = 0\n"
|
||||
"function bkpt()\n"
|
||||
"address = nil\n"
|
||||
"width = nil\n"
|
||||
"oldValue = nil\n"
|
||||
"newValue = nil\n"
|
||||
"accessType = nil\n"
|
||||
"function bkpt(info)\n"
|
||||
" hit = hit + 1\n"
|
||||
" address = info.address\n"
|
||||
" width = info.width\n"
|
||||
" oldValue = info.oldValue\n"
|
||||
" newValue = info.newValue\n"
|
||||
" accessType = info.accessType\n"
|
||||
"end"
|
||||
);
|
||||
struct mScriptValue base = mSCRIPT_MAKE_S32(RAM_BASE);
|
||||
|
@ -499,7 +538,13 @@ M_TEST_DEFINE(basicWatchpoint) {
|
|||
uint8_t value;
|
||||
|
||||
// Read
|
||||
TEST_PROGRAM("hit = 0");
|
||||
TEST_PROGRAM(
|
||||
"hit = 0\n"
|
||||
"address = nil\n"
|
||||
"width = nil\n"
|
||||
"oldValue = nil\n"
|
||||
"newValue = nil\n"
|
||||
"accessType = nil\n");
|
||||
value = core->rawRead8(core, RAM_BASE, -1);
|
||||
TEST_PROGRAM("assert(hit == 0)");
|
||||
core->busRead8(core, RAM_BASE);
|
||||
|
@ -508,31 +553,71 @@ M_TEST_DEFINE(basicWatchpoint) {
|
|||
TEST_PROGRAM("assert(hit == 1)");
|
||||
core->busWrite8(core, RAM_BASE, ~value);
|
||||
TEST_PROGRAM("assert(hit == 1)");
|
||||
TEST_PROGRAM("assert(address == base)");
|
||||
TEST_PROGRAM("assert(width == 1)");
|
||||
TEST_PROGRAM("assert(oldValue == 1)");
|
||||
TEST_PROGRAM("assert(newValue == nil)");
|
||||
TEST_PROGRAM("assert(accessType == C.WATCHPOINT_TYPE.READ)");
|
||||
|
||||
// Write
|
||||
TEST_PROGRAM("hit = 0");
|
||||
TEST_PROGRAM(
|
||||
"hit = 0\n"
|
||||
"address = nil\n"
|
||||
"width = nil\n"
|
||||
"oldValue = nil\n"
|
||||
"newValue = nil\n"
|
||||
"accessType = nil\n");
|
||||
value = core->rawRead8(core, RAM_BASE + 1, -1);
|
||||
TEST_PROGRAM("assert(hit == 0)");
|
||||
core->busRead8(core, RAM_BASE + 1);
|
||||
TEST_PROGRAM("assert(hit == 0)");
|
||||
core->busWrite8(core, RAM_BASE + 1, value);
|
||||
TEST_PROGRAM("assert(hit == 1)");
|
||||
TEST_PROGRAM("assert(oldValue == 2)");
|
||||
TEST_PROGRAM("assert(newValue == 2)");
|
||||
core->busWrite8(core, RAM_BASE + 1, ~value);
|
||||
TEST_PROGRAM("assert(hit == 2)");
|
||||
TEST_PROGRAM("assert(address == base + 1)");
|
||||
TEST_PROGRAM("assert(width == 1)");
|
||||
TEST_PROGRAM("assert(oldValue == 2)");
|
||||
TEST_PROGRAM("assert(newValue == -3)");
|
||||
TEST_PROGRAM("assert(accessType == C.WATCHPOINT_TYPE.WRITE)");
|
||||
|
||||
// RW
|
||||
TEST_PROGRAM("hit = 0");
|
||||
TEST_PROGRAM(
|
||||
"hit = 0\n"
|
||||
"address = nil\n"
|
||||
"width = nil\n"
|
||||
"oldValue = nil\n"
|
||||
"newValue = nil\n"
|
||||
"accessType = nil\n");
|
||||
value = core->rawRead8(core, RAM_BASE + 2, -1);
|
||||
TEST_PROGRAM("assert(hit == 0)");
|
||||
core->busRead8(core, RAM_BASE + 2);
|
||||
TEST_PROGRAM("assert(accessType == C.WATCHPOINT_TYPE.READ)");
|
||||
TEST_PROGRAM("assert(hit == 1)");
|
||||
TEST_PROGRAM("assert(oldValue == 3)");
|
||||
TEST_PROGRAM("assert(newValue == nil)");
|
||||
core->busWrite8(core, RAM_BASE + 2, value);
|
||||
TEST_PROGRAM("assert(hit == 2)");
|
||||
TEST_PROGRAM("assert(oldValue == 3)");
|
||||
TEST_PROGRAM("assert(newValue == 3)");
|
||||
core->busWrite8(core, RAM_BASE + 2, ~value);
|
||||
TEST_PROGRAM("assert(hit == 3)");
|
||||
TEST_PROGRAM("assert(address == base + 2)");
|
||||
TEST_PROGRAM("assert(width == 1)");
|
||||
TEST_PROGRAM("assert(oldValue == 3)");
|
||||
TEST_PROGRAM("assert(newValue == -4)");
|
||||
TEST_PROGRAM("assert(accessType == C.WATCHPOINT_TYPE.WRITE)");
|
||||
|
||||
// Change
|
||||
TEST_PROGRAM("hit = 0");
|
||||
TEST_PROGRAM(
|
||||
"hit = 0\n"
|
||||
"address = nil\n"
|
||||
"width = nil\n"
|
||||
"oldValue = nil\n"
|
||||
"newValue = nil\n"
|
||||
"accessType = nil\n");
|
||||
value = core->rawRead8(core, RAM_BASE + 3, -1);
|
||||
TEST_PROGRAM("assert(hit == 0)");
|
||||
core->busRead8(core, RAM_BASE + 3);
|
||||
|
@ -541,6 +626,11 @@ M_TEST_DEFINE(basicWatchpoint) {
|
|||
TEST_PROGRAM("assert(hit == 0)");
|
||||
core->busWrite8(core, RAM_BASE + 3, ~value);
|
||||
TEST_PROGRAM("assert(hit == 1)");
|
||||
TEST_PROGRAM("assert(address == base + 3)");
|
||||
TEST_PROGRAM("assert(width == 1)");
|
||||
TEST_PROGRAM("assert(oldValue == 4)");
|
||||
TEST_PROGRAM("assert(newValue == -5)");
|
||||
TEST_PROGRAM("assert(accessType == C.WATCHPOINT_TYPE.WRITE)");
|
||||
|
||||
mScriptContextDeinit(&context);
|
||||
TEARDOWN_CORE;
|
||||
|
@ -728,8 +818,10 @@ M_TEST_DEFINE(rangeWatchpoint) {
|
|||
|
||||
TEST_PROGRAM(
|
||||
"hit = 0\n"
|
||||
"function bkpt()\n"
|
||||
"address = nil\n"
|
||||
"function bkpt(info)\n"
|
||||
" hit = hit + 1\n"
|
||||
" address = info.address\n"
|
||||
"end"
|
||||
);
|
||||
struct mScriptValue base = mSCRIPT_MAKE_S32(RAM_BASE);
|
||||
|
@ -741,10 +833,13 @@ M_TEST_DEFINE(rangeWatchpoint) {
|
|||
TEST_PROGRAM("assert(hit == 0)");
|
||||
core->busRead8(core, RAM_BASE);
|
||||
TEST_PROGRAM("assert(hit == 1)");
|
||||
TEST_PROGRAM("assert(address == base)");
|
||||
core->busRead8(core, RAM_BASE + 1);
|
||||
TEST_PROGRAM("assert(hit == 3)");
|
||||
TEST_PROGRAM("assert(address == base + 1)");
|
||||
core->busRead8(core, RAM_BASE + 2);
|
||||
TEST_PROGRAM("assert(hit == 4)");
|
||||
TEST_PROGRAM("assert(address == base + 2)");
|
||||
|
||||
mScriptContextDeinit(&context);
|
||||
TEARDOWN_CORE;
|
||||
|
|
|
@ -198,42 +198,6 @@ void _coreShutdown(void* context) {
|
|||
MutexUnlock(&thread->impl->stateMutex);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
#define ADD_CALLBACK(NAME) \
|
||||
void _script_ ## NAME(void* context) { \
|
||||
struct mCoreThread* threadContext = context; \
|
||||
if (!threadContext->scriptContext) { \
|
||||
return; \
|
||||
} \
|
||||
mScriptContextTriggerCallback(threadContext->scriptContext, #NAME, NULL); \
|
||||
}
|
||||
|
||||
ADD_CALLBACK(frame)
|
||||
ADD_CALLBACK(crashed)
|
||||
ADD_CALLBACK(sleep)
|
||||
ADD_CALLBACK(stop)
|
||||
ADD_CALLBACK(keysRead)
|
||||
ADD_CALLBACK(savedataUpdated)
|
||||
ADD_CALLBACK(alarm)
|
||||
|
||||
#undef ADD_CALLBACK
|
||||
#define SCRIPT(NAME) _script_ ## NAME
|
||||
|
||||
static void _mCoreThreadAddCallbacks(struct mCoreThread* threadContext) {
|
||||
struct mCoreCallbacks callbacks = {
|
||||
.videoFrameEnded = SCRIPT(frame),
|
||||
.coreCrashed = SCRIPT(crashed),
|
||||
.sleep = SCRIPT(sleep),
|
||||
.shutdown = SCRIPT(stop),
|
||||
.keysRead = SCRIPT(keysRead),
|
||||
.savedataUpdated = SCRIPT(savedataUpdated),
|
||||
.alarm = SCRIPT(alarm),
|
||||
.context = threadContext
|
||||
};
|
||||
threadContext->core->addCoreCallbacks(threadContext->core, &callbacks);
|
||||
}
|
||||
#endif
|
||||
|
||||
static THREAD_ENTRY _mCoreThreadRun(void* context) {
|
||||
struct mCoreThread* threadContext = context;
|
||||
#ifdef USE_PTHREADS
|
||||
|
@ -279,7 +243,6 @@ static THREAD_ENTRY _mCoreThreadRun(void* context) {
|
|||
struct mScriptContext* scriptContext = threadContext->scriptContext;
|
||||
if (scriptContext) {
|
||||
mScriptContextAttachCore(scriptContext, core);
|
||||
_mCoreThreadAddCallbacks(threadContext);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -289,12 +252,7 @@ static THREAD_ENTRY _mCoreThreadRun(void* context) {
|
|||
}
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
// startCallback could add a script context
|
||||
if (scriptContext != threadContext->scriptContext) {
|
||||
scriptContext = threadContext->scriptContext;
|
||||
if (scriptContext) {
|
||||
_mCoreThreadAddCallbacks(threadContext);
|
||||
}
|
||||
}
|
||||
scriptContext = threadContext->scriptContext;
|
||||
if (scriptContext) {
|
||||
mScriptContextTriggerCallback(scriptContext, "start", NULL);
|
||||
}
|
||||
|
@ -312,12 +270,7 @@ static THREAD_ENTRY _mCoreThreadRun(void* context) {
|
|||
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
// resetCallback could add a script context
|
||||
if (scriptContext != threadContext->scriptContext) {
|
||||
scriptContext = threadContext->scriptContext;
|
||||
if (scriptContext) {
|
||||
_mCoreThreadAddCallbacks(threadContext);
|
||||
}
|
||||
}
|
||||
scriptContext = threadContext->scriptContext;
|
||||
if (scriptContext) {
|
||||
mScriptContextTriggerCallback(scriptContext, "reset", NULL);
|
||||
}
|
||||
|
@ -372,12 +325,7 @@ static THREAD_ENTRY _mCoreThreadRun(void* context) {
|
|||
}
|
||||
}
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
if (scriptContext != threadContext->scriptContext) {
|
||||
scriptContext = threadContext->scriptContext;
|
||||
if (scriptContext) {
|
||||
_mCoreThreadAddCallbacks(threadContext);
|
||||
}
|
||||
}
|
||||
scriptContext = threadContext->scriptContext;
|
||||
#endif
|
||||
if (wasPaused && !(impl->requested & mTHREAD_REQ_PAUSE)) {
|
||||
break;
|
||||
|
|
|
@ -187,7 +187,21 @@ bool mArgumentsParse(struct mArguments* args, int argc, char* const* argv, struc
|
|||
argc -= optind;
|
||||
argv += optind;
|
||||
if (argc > 1) {
|
||||
return false;
|
||||
for (j = 0; j < argc; ++j) {
|
||||
bool handled = false;
|
||||
for (i = 0; i < nSubparsers; ++i) {
|
||||
if (!subparsers[i].handleExtraArg) {
|
||||
continue;
|
||||
}
|
||||
handled = subparsers[i].handleExtraArg(&subparsers[i], argv[j]);
|
||||
if (handled) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!handled) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else if (argc == 1) {
|
||||
args->fname = strdup(argv[0]);
|
||||
} else {
|
||||
|
@ -303,6 +317,7 @@ void mSubParserGraphicsInit(struct mSubParser* parser, struct mGraphicsOpts* opt
|
|||
parser->apply = _applyGraphicsArgs;
|
||||
parser->extraOptions = GRAPHICS_OPTIONS;
|
||||
parser->longOptions = _graphicsLongOpts;
|
||||
parser->handleExtraArg = NULL;
|
||||
opts->multiplier = 0;
|
||||
opts->fullscreen = false;
|
||||
}
|
||||
|
|
|
@ -38,6 +38,10 @@ CXX_GUARD_START
|
|||
#define FFMPEG_USE_NEW_CH_LAYOUT
|
||||
#endif
|
||||
|
||||
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(61, 13, 100)
|
||||
#define FFMPEG_USE_GET_SUPPORTED_CONFIG
|
||||
#endif
|
||||
|
||||
static inline enum AVPixelFormat mColorFormatToFFmpegPixFmt(enum mColorFormat format) {
|
||||
switch (format) {
|
||||
#ifndef USE_LIBAV
|
||||
|
|
|
@ -134,18 +134,28 @@ bool FFmpegEncoderSetAudio(struct FFmpegEncoder* encoder, const char* acodec, un
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!codec->sample_fmts) {
|
||||
const enum AVSampleFormat* formats = NULL;
|
||||
#ifdef FFMPEG_USE_GET_SUPPORTED_CONFIG
|
||||
if (avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_SAMPLE_FORMAT, 0, (const void**) &formats, NULL) < 0) {
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
formats = codec->sample_fmts;
|
||||
#endif
|
||||
|
||||
if (!formats) {
|
||||
return false;
|
||||
}
|
||||
|
||||
size_t i;
|
||||
size_t j;
|
||||
int priority = INT_MAX;
|
||||
encoder->sampleFormat = AV_SAMPLE_FMT_NONE;
|
||||
for (i = 0; codec->sample_fmts[i] != AV_SAMPLE_FMT_NONE; ++i) {
|
||||
for (i = 0; formats[i] != AV_SAMPLE_FMT_NONE; ++i) {
|
||||
for (j = 0; j < sizeof(priorities) / sizeof(*priorities); ++j) {
|
||||
if (codec->sample_fmts[i] == priorities[j].format && priority > priorities[j].priority) {
|
||||
if (formats[i] == priorities[j].format && priority > priorities[j].priority) {
|
||||
priority = priorities[j].priority;
|
||||
encoder->sampleFormat = codec->sample_fmts[i];
|
||||
encoder->sampleFormat = formats[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -153,18 +163,29 @@ bool FFmpegEncoderSetAudio(struct FFmpegEncoder* encoder, const char* acodec, un
|
|||
return false;
|
||||
}
|
||||
encoder->sampleRate = encoder->isampleRate;
|
||||
if (codec->supported_samplerates) {
|
||||
|
||||
|
||||
|
||||
const int* sampleRates = NULL;
|
||||
#ifdef FFMPEG_USE_GET_SUPPORTED_CONFIG
|
||||
if (avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_SAMPLE_RATE, 0, (const void**) &sampleRates, NULL) < 0) {
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
sampleRates = codec->supported_samplerates;
|
||||
#endif
|
||||
if (sampleRates) {
|
||||
bool gotSampleRate = false;
|
||||
int highestSampleRate = 0;
|
||||
for (i = 0; codec->supported_samplerates[i]; ++i) {
|
||||
if (codec->supported_samplerates[i] > highestSampleRate) {
|
||||
highestSampleRate = codec->supported_samplerates[i];
|
||||
for (i = 0; sampleRates[i]; ++i) {
|
||||
if (sampleRates[i] > highestSampleRate) {
|
||||
highestSampleRate = sampleRates[i];
|
||||
}
|
||||
if (codec->supported_samplerates[i] < encoder->isampleRate) {
|
||||
if (sampleRates[i] < encoder->isampleRate) {
|
||||
continue;
|
||||
}
|
||||
if (!gotSampleRate || encoder->sampleRate > codec->supported_samplerates[i]) {
|
||||
encoder->sampleRate = codec->supported_samplerates[i];
|
||||
if (!gotSampleRate || encoder->sampleRate > sampleRates[i]) {
|
||||
encoder->sampleRate = sampleRates[i];
|
||||
gotSampleRate = true;
|
||||
}
|
||||
}
|
||||
|
@ -231,11 +252,19 @@ bool FFmpegEncoderSetVideo(struct FFmpegEncoder* encoder, const char* vcodec, in
|
|||
size_t j;
|
||||
int priority = INT_MAX;
|
||||
encoder->pixFormat = AV_PIX_FMT_NONE;
|
||||
for (i = 0; codec->pix_fmts[i] != AV_PIX_FMT_NONE; ++i) {
|
||||
const enum AVPixelFormat* formats;
|
||||
#ifdef FFMPEG_USE_GET_SUPPORTED_CONFIG
|
||||
if (avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_PIX_FORMAT, 0, (const void**) &formats, NULL) < 0) {
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
formats = codec->pix_fmts;
|
||||
#endif
|
||||
for (i = 0; formats[i] != AV_PIX_FMT_NONE; ++i) {
|
||||
for (j = 0; j < sizeof(priorities) / sizeof(*priorities); ++j) {
|
||||
if (codec->pix_fmts[i] == priorities[j].format && priority > priorities[j].priority) {
|
||||
if (formats[i] == priorities[j].format && priority > priorities[j].priority) {
|
||||
priority = priorities[j].priority;
|
||||
encoder->pixFormat = codec->pix_fmts[i];
|
||||
encoder->pixFormat = formats[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -384,7 +413,9 @@ bool FFmpegEncoderOpen(struct FFmpegEncoder* encoder, const char* outfile) {
|
|||
encoder->videoStream = avformat_new_stream(encoder->context, vcodec);
|
||||
encoder->video = encoder->videoStream->codec;
|
||||
#endif
|
||||
encoder->video->bit_rate = encoder->videoBitrate;
|
||||
if (encoder->videoBitrate >= 0) {
|
||||
encoder->video->bit_rate = encoder->videoBitrate;
|
||||
}
|
||||
encoder->video->width = encoder->width;
|
||||
encoder->video->height = encoder->height;
|
||||
encoder->video->time_base = (AVRational) { encoder->frameCycles * encoder->frameskip, encoder->cycles };
|
||||
|
|
|
@ -1167,19 +1167,32 @@ static struct mCheatDevice* _GBCoreCheatDevice(struct mCore* core) {
|
|||
|
||||
static size_t _GBCoreSavedataClone(struct mCore* core, void** sram) {
|
||||
struct GB* gb = core->board;
|
||||
struct VFile* vf = gb->sramVf;
|
||||
if (vf) {
|
||||
*sram = malloc(vf->size(vf));
|
||||
vf->seek(vf, 0, SEEK_SET);
|
||||
return vf->read(vf, *sram, vf->size(vf));
|
||||
size_t sramSize = gb->sramSize;
|
||||
size_t vfSize = 0;
|
||||
size_t size = sramSize;
|
||||
uint8_t* view = NULL;
|
||||
|
||||
if (gb->sramVf) {
|
||||
vfSize = gb->sramVf->size(gb->sramVf);
|
||||
if (vfSize > size) {
|
||||
size = vfSize;
|
||||
}
|
||||
}
|
||||
if (gb->sramSize) {
|
||||
*sram = malloc(gb->sramSize);
|
||||
memcpy(*sram, gb->memory.sram, gb->sramSize);
|
||||
return gb->sramSize;
|
||||
if (!size) {
|
||||
*sram = NULL;
|
||||
return 0;
|
||||
}
|
||||
*sram = NULL;
|
||||
return 0;
|
||||
|
||||
view = malloc(size);
|
||||
if (sramSize) {
|
||||
memcpy(view, gb->memory.sram, gb->sramSize);
|
||||
}
|
||||
if (vfSize > sramSize) {
|
||||
gb->sramVf->seek(gb->sramVf, sramSize, SEEK_SET);
|
||||
gb->sramVf->read(gb->sramVf, &view[sramSize], vfSize - sramSize);
|
||||
}
|
||||
*sram = view;
|
||||
return size;
|
||||
}
|
||||
|
||||
static bool _GBCoreSavedataRestore(struct mCore* core, const void* sram, size_t size, bool writeback) {
|
||||
|
|
|
@ -801,7 +801,7 @@ static void _GBACoreReset(struct mCore* core) {
|
|||
#endif
|
||||
|
||||
ARMReset(core->cpu);
|
||||
bool forceSkip = gba->mbVf || core->opts.skipBios;
|
||||
bool forceSkip = gba->mbVf || (core->opts.skipBios && (gba->romVf || gba->memory.rom));
|
||||
if (!forceSkip && (gba->romVf || gba->memory.rom) && gba->pristineRomSize >= 0xA0 && gba->biosVf) {
|
||||
uint32_t crc = doCrc32(&gba->memory.rom[1], 0x9C);
|
||||
if (crc != LOGO_CRC32) {
|
||||
|
|
|
@ -702,7 +702,7 @@ void GBASavedataRTCRead(struct GBASavedata* savedata) {
|
|||
|
||||
savedata->gpio->rtc.offset = savedata->gpio->rtc.lastLatch - rtcTime;
|
||||
|
||||
mLOG(GBA_SAVE, ERROR, "Savegame time offset set to %li", savedata->gpio->rtc.offset);
|
||||
mLOG(GBA_SAVE, DEBUG, "Savegame time offset set to %li", savedata->gpio->rtc.offset);
|
||||
}
|
||||
|
||||
void GBASavedataSerialize(const struct GBASavedata* savedata, struct GBASerializedState* state) {
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
function(debug_strip TARGET)
|
||||
if(DISTBUILD AND NOT APPLE)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||||
add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND "${OBJCOPY}" --only-keep-debug "$<TARGET_FILE:${TARGET}>" "$<TARGET_FILE:${TARGET}>.debug")
|
||||
add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND "${STRIP}" "$<TARGET_FILE:${TARGET}>")
|
||||
add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND "${OBJCOPY}" --add-gnu-debuglink "$<TARGET_FILE:${TARGET}>.debug" "$<TARGET_FILE:${TARGET}>")
|
||||
install(FILES "$<TARGET_FILE:${TARGET}>.debug" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${TARGET}-dbg)
|
||||
elseif(BUILD_STATIC AND (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel"))
|
||||
add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND "${STRIP}" "$<TARGET_FILE:${TARGET}>")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
|
@ -17,29 +17,40 @@
|
|||
#ifdef M_CORE_GB
|
||||
#include <mgba/internal/sm83/sm83.h>
|
||||
#endif
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
#include <mgba/script.h>
|
||||
#include <mgba/core/scripting.h>
|
||||
#endif
|
||||
|
||||
#include <mgba/feature/commandline.h>
|
||||
#include <mgba-util/vector.h>
|
||||
#include <mgba-util/vfs.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <signal.h>
|
||||
|
||||
#define ROM_TEST_OPTIONS "S:R:"
|
||||
#define ROM_TEST_USAGE \
|
||||
"Additional options:\n" \
|
||||
" -S SWI Run until specified SWI call before exiting\n" \
|
||||
" -R REGISTER General purpose register to return as exit code\n" \
|
||||
#define HEADLESS_OPTIONS "S:R:"
|
||||
static const char* const headlessUsage =
|
||||
"Additional options:\n"
|
||||
" -S SWI Run until specified SWI call before exiting\n"
|
||||
" -R REGISTER General purpose register to return as exit code\n"
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
" --script FILE Run a script on start. Can be passed multiple times\n"
|
||||
#endif
|
||||
;
|
||||
|
||||
struct RomTestOpts {
|
||||
struct HeadlessOpts {
|
||||
int exitSwiImmediate;
|
||||
char* returnCodeRegister;
|
||||
struct StringList scripts;
|
||||
};
|
||||
|
||||
static void _romTestShutdown(int signal);
|
||||
static bool _parseRomTestOpts(struct mSubParser* parser, int option, const char* arg);
|
||||
static void _headlessShutdown(int signal);
|
||||
static bool _parseHeadlessOpts(struct mSubParser* parser, int option, const char* arg);
|
||||
static bool _parseLongHeadlessOpts(struct mSubParser* parser, const char* option, const char* arg);
|
||||
static bool _parseSwi(const char* regStr, int* oSwi);
|
||||
|
||||
static bool _romTestCheckResiger(void);
|
||||
static bool _headlessCheckResiger(void);
|
||||
|
||||
static struct mCore* core;
|
||||
|
||||
|
@ -47,10 +58,10 @@ static bool _dispatchExiting = false;
|
|||
static int _exitCode = 0;
|
||||
static struct mStandardLogger _logger;
|
||||
|
||||
static void _romTestCallback(void* context);
|
||||
static void _headlessCallback(void* context);
|
||||
#ifdef M_CORE_GBA
|
||||
static void _romTestSwi16(struct ARMCore* cpu, int immediate);
|
||||
static void _romTestSwi32(struct ARMCore* cpu, int immediate);
|
||||
static void _headlessSwi16(struct ARMCore* cpu, int immediate);
|
||||
static void _headlessSwi32(struct ARMCore* cpu, int immediate);
|
||||
|
||||
static int _exitSwiImmediate;
|
||||
static char* _returnCodeRegister;
|
||||
|
@ -60,14 +71,27 @@ void (*_armSwi32)(struct ARMCore* cpu, int immediate);
|
|||
#endif
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
signal(SIGINT, _romTestShutdown);
|
||||
signal(SIGINT, _headlessShutdown);
|
||||
|
||||
struct RomTestOpts romTestOpts = { 3, NULL };
|
||||
bool cleanExit = false;
|
||||
int uncleanExit = 1;
|
||||
size_t i;
|
||||
|
||||
struct HeadlessOpts headlessOpts = { 3, NULL };
|
||||
StringListInit(&headlessOpts.scripts, 0);
|
||||
struct mSubParser subparser = {
|
||||
.usage = ROM_TEST_USAGE,
|
||||
.parse = _parseRomTestOpts,
|
||||
.extraOptions = ROM_TEST_OPTIONS,
|
||||
.opts = &romTestOpts
|
||||
.usage = headlessUsage,
|
||||
.parse = _parseHeadlessOpts,
|
||||
.parseLong = _parseLongHeadlessOpts,
|
||||
.extraOptions = HEADLESS_OPTIONS,
|
||||
.longOptions = (struct mOption[]) {
|
||||
{
|
||||
.name = "script",
|
||||
.arg = true,
|
||||
},
|
||||
{0}
|
||||
},
|
||||
.opts = &headlessOpts
|
||||
};
|
||||
|
||||
struct mArguments args;
|
||||
|
@ -77,18 +101,20 @@ int main(int argc, char * argv[]) {
|
|||
}
|
||||
if (!parsed || args.showHelp) {
|
||||
usage(argv[0], NULL, NULL, &subparser, 1);
|
||||
return !parsed;
|
||||
uncleanExit = !parsed;
|
||||
goto argsExit;
|
||||
}
|
||||
if (args.showVersion) {
|
||||
version(argv[0]);
|
||||
return 0;
|
||||
uncleanExit = 0;
|
||||
goto argsExit;
|
||||
}
|
||||
core = mCoreFind(args.fname);
|
||||
if (!core) {
|
||||
return 1;
|
||||
goto argsExit;
|
||||
}
|
||||
core->init(core);
|
||||
mCoreInitConfig(core, "romTest");
|
||||
mCoreInitConfig(core, "headless");
|
||||
mArgumentsApply(&args, NULL, 0, &core->config);
|
||||
|
||||
mCoreConfigSetDefaultValue(&core->config, "idleOptimization", "remove");
|
||||
|
@ -99,11 +125,10 @@ int main(int argc, char * argv[]) {
|
|||
mStandardLoggerConfig(&_logger, &core->config);
|
||||
mLogSetDefaultLogger(&_logger.d);
|
||||
|
||||
bool cleanExit = false;
|
||||
struct mCoreCallbacks callbacks = {0};
|
||||
|
||||
_returnCodeRegister = romTestOpts.returnCodeRegister;
|
||||
if (!_romTestCheckResiger()) {
|
||||
_returnCodeRegister = headlessOpts.returnCodeRegister;
|
||||
if (!_headlessCheckResiger()) {
|
||||
goto loadError;
|
||||
}
|
||||
|
||||
|
@ -111,24 +136,24 @@ int main(int argc, char * argv[]) {
|
|||
#ifdef M_CORE_GBA
|
||||
case mPLATFORM_GBA:
|
||||
((struct GBA*) core->board)->hardCrash = false;
|
||||
_exitSwiImmediate = romTestOpts.exitSwiImmediate;
|
||||
_exitSwiImmediate = headlessOpts.exitSwiImmediate;
|
||||
|
||||
if (_exitSwiImmediate == 3) {
|
||||
// Hook into SWI 3 (shutdown)
|
||||
callbacks.shutdown = _romTestCallback;
|
||||
callbacks.shutdown = _headlessCallback;
|
||||
core->addCoreCallbacks(core, &callbacks);
|
||||
} else {
|
||||
// Custom SWI hooks
|
||||
_armSwi16 = ((struct GBA*) core->board)->cpu->irqh.swi16;
|
||||
((struct GBA*) core->board)->cpu->irqh.swi16 = _romTestSwi16;
|
||||
((struct GBA*) core->board)->cpu->irqh.swi16 = _headlessSwi16;
|
||||
_armSwi32 = ((struct GBA*) core->board)->cpu->irqh.swi32;
|
||||
((struct GBA*) core->board)->cpu->irqh.swi32 = _romTestSwi32;
|
||||
((struct GBA*) core->board)->cpu->irqh.swi32 = _headlessSwi32;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#ifdef M_CORE_GB
|
||||
case mPLATFORM_GB:
|
||||
callbacks.shutdown = _romTestCallback;
|
||||
callbacks.shutdown = _headlessCallback;
|
||||
core->addCoreCallbacks(core, &callbacks);
|
||||
break;
|
||||
#endif
|
||||
|
@ -166,6 +191,31 @@ int main(int argc, char * argv[]) {
|
|||
savestate->close(savestate);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
struct mScriptContext scriptContext;
|
||||
|
||||
if (StringListSize(&headlessOpts.scripts)) {
|
||||
mScriptContextInit(&scriptContext);
|
||||
mScriptContextAttachStdlib(&scriptContext);
|
||||
mScriptContextAttachImage(&scriptContext);
|
||||
mScriptContextAttachLogger(&scriptContext, NULL);
|
||||
mScriptContextAttachSocket(&scriptContext);
|
||||
#ifdef USE_JSON_C
|
||||
mScriptContextAttachStorage(&scriptContext);
|
||||
#endif
|
||||
mScriptContextRegisterEngines(&scriptContext);
|
||||
|
||||
mScriptContextAttachCore(&scriptContext, core);
|
||||
|
||||
for (i = 0; i < StringListSize(&headlessOpts.scripts); ++i) {
|
||||
if (!mScriptContextLoadFile(&scriptContext, *StringListGetPointer(&headlessOpts.scripts, i))) {
|
||||
mLOG(STATUS, ERROR, "Failed to load script \"%s\"", *StringListGetPointer(&headlessOpts.scripts, i));
|
||||
goto scriptsError;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_DEBUGGERS
|
||||
if (hasDebugger) {
|
||||
do {
|
||||
|
@ -176,19 +226,25 @@ int main(int argc, char * argv[]) {
|
|||
do {
|
||||
core->runLoop(core);
|
||||
} while (!_dispatchExiting);
|
||||
cleanExit = true;
|
||||
|
||||
scriptsError:
|
||||
core->unloadROM(core);
|
||||
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
if (StringListSize(&headlessOpts.scripts)) {
|
||||
mScriptContextDeinit(&scriptContext);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_DEBUGGERS
|
||||
if (hasDebugger) {
|
||||
core->detachDebugger(core);
|
||||
mDebuggerDeinit(&debugger);
|
||||
}
|
||||
#endif
|
||||
cleanExit = true;
|
||||
|
||||
loadError:
|
||||
mArgumentsDeinit(&args);
|
||||
mStandardLoggerDeinit(&_logger);
|
||||
mCoreConfigDeinit(&core->config);
|
||||
core->deinit(core);
|
||||
|
@ -196,15 +252,22 @@ loadError:
|
|||
free(_returnCodeRegister);
|
||||
}
|
||||
|
||||
return cleanExit ? _exitCode : 1;
|
||||
argsExit:
|
||||
for (i = 0; i < StringListSize(&headlessOpts.scripts); ++i) {
|
||||
free(*StringListGetPointer(&headlessOpts.scripts, i));
|
||||
}
|
||||
StringListDeinit(&headlessOpts.scripts);
|
||||
mArgumentsDeinit(&args);
|
||||
|
||||
return cleanExit ? _exitCode : uncleanExit;
|
||||
}
|
||||
|
||||
static void _romTestShutdown(int signal) {
|
||||
static void _headlessShutdown(int signal) {
|
||||
UNUSED(signal);
|
||||
_dispatchExiting = true;
|
||||
}
|
||||
|
||||
static bool _romTestCheckResiger(void) {
|
||||
static bool _headlessCheckResiger(void) {
|
||||
if (!_returnCodeRegister) {
|
||||
return true;
|
||||
}
|
||||
|
@ -250,7 +313,7 @@ static bool _romTestCheckResiger(void) {
|
|||
return true;
|
||||
}
|
||||
|
||||
static void _romTestCallback(void* context) {
|
||||
static void _headlessCallback(void* context) {
|
||||
UNUSED(context);
|
||||
if (_returnCodeRegister) {
|
||||
core->readRegister(core, _returnCodeRegister, &_exitCode);
|
||||
|
@ -259,7 +322,7 @@ static void _romTestCallback(void* context) {
|
|||
}
|
||||
|
||||
#ifdef M_CORE_GBA
|
||||
static void _romTestSwi16(struct ARMCore* cpu, int immediate) {
|
||||
static void _headlessSwi16(struct ARMCore* cpu, int immediate) {
|
||||
if (immediate == _exitSwiImmediate) {
|
||||
if (_returnCodeRegister) {
|
||||
core->readRegister(core, _returnCodeRegister, &_exitCode);
|
||||
|
@ -270,7 +333,7 @@ static void _romTestSwi16(struct ARMCore* cpu, int immediate) {
|
|||
_armSwi16(cpu, immediate);
|
||||
}
|
||||
|
||||
static void _romTestSwi32(struct ARMCore* cpu, int immediate) {
|
||||
static void _headlessSwi32(struct ARMCore* cpu, int immediate) {
|
||||
if (immediate == _exitSwiImmediate) {
|
||||
if (_returnCodeRegister) {
|
||||
core->readRegister(core, _returnCodeRegister, &_exitCode);
|
||||
|
@ -282,8 +345,8 @@ static void _romTestSwi32(struct ARMCore* cpu, int immediate) {
|
|||
}
|
||||
#endif
|
||||
|
||||
static bool _parseRomTestOpts(struct mSubParser* parser, int option, const char* arg) {
|
||||
struct RomTestOpts* opts = parser->opts;
|
||||
static bool _parseHeadlessOpts(struct mSubParser* parser, int option, const char* arg) {
|
||||
struct HeadlessOpts* opts = parser->opts;
|
||||
errno = 0;
|
||||
switch (option) {
|
||||
case 'S':
|
||||
|
@ -296,6 +359,15 @@ static bool _parseRomTestOpts(struct mSubParser* parser, int option, const char*
|
|||
}
|
||||
}
|
||||
|
||||
static bool _parseLongHeadlessOpts(struct mSubParser* parser, const char* option, const char* arg) {
|
||||
struct HeadlessOpts* opts = parser->opts;
|
||||
if (strcmp(option, "script") == 0) {
|
||||
*StringListAppend(&opts->scripts) = strdup(arg);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool _parseSwi(const char* swiStr, int* oSwi) {
|
||||
char* parseEnd;
|
||||
long swi = strtol(swiStr, &parseEnd, 0);
|
|
@ -261,6 +261,7 @@ if(ENABLE_DEBUGGERS)
|
|||
DebuggerController.cpp
|
||||
DebuggerConsole.cpp
|
||||
DebuggerConsoleController.cpp
|
||||
MemoryAccessLogController.cpp
|
||||
MemoryAccessLogView.cpp)
|
||||
endif()
|
||||
|
||||
|
@ -517,7 +518,7 @@ if(APPLE)
|
|||
set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -R "${CROSS_ROOT}")
|
||||
endif()
|
||||
if($ENV{CODESIGN_IDENTITY})
|
||||
set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -s "$ENV{CODESIGN_IDENTITY}" -E "${PROJECT_SOURCE_DIR}/res/entitlements.xml")
|
||||
set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -s "$ENV{CODESIGN_IDENTITY}" -E "${PROJECT_SOURCE_DIR}/res/entitlements.plist")
|
||||
endif()
|
||||
install(CODE "execute_process(COMMAND \"${PROJECT_SOURCE_DIR}/tools/deploy-mac.py\" -v ${DEPLOY_OPTIONS} \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${APPDIR}/${PROJECT_NAME}.app\")")
|
||||
endif()
|
||||
|
@ -536,17 +537,7 @@ elseif(WIN32)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if(DISTBUILD AND NOT APPLE)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||||
add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND "${OBJCOPY}" --only-keep-debug "$<TARGET_FILE:${BINARY_NAME}-qt>" "$<TARGET_FILE:${BINARY_NAME}-qt>.debug")
|
||||
add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND "${STRIP}" "$<TARGET_FILE:${BINARY_NAME}-qt>")
|
||||
add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND "${OBJCOPY}" --add-gnu-debuglink "$<TARGET_FILE:${BINARY_NAME}-qt>.debug" "$<TARGET_FILE:${BINARY_NAME}-qt>")
|
||||
install(FILES "$<TARGET_FILE:${BINARY_NAME}-qt>.debug" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${BINARY_NAME}-qt-dbg)
|
||||
elseif(BUILD_STATIC AND (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel"))
|
||||
add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND "${STRIP}" "$<TARGET_FILE:${BINARY_NAME}-qt>")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
debug_strip(${BINARY_NAME}-qt)
|
||||
install(TARGETS ${BINARY_NAME}-qt
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${BINARY_NAME}-qt
|
||||
BUNDLE DESTINATION ${APPDIR} COMPONENT ${BINARY_NAME}-qt)
|
||||
|
|
|
@ -158,8 +158,7 @@ ConfigController::ConfigController(QObject* parent)
|
|||
" Can be passed multiple times for multiple cards\n"
|
||||
" --mb FILE Boot a multiboot image with FILE inserted into the ROM slot"
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
"\n --script FILE Script file to load on start\n"
|
||||
" Can be passed multiple times\n"
|
||||
"\n --script FILE Run a script on start. Can be passed multiple times\n"
|
||||
#endif
|
||||
;
|
||||
|
||||
|
@ -197,6 +196,14 @@ ConfigController::ConfigController(QObject* parent)
|
|||
m_subparsers[1].extraOptions = nullptr;
|
||||
m_subparsers[1].longOptions = s_frontendOptions;
|
||||
m_subparsers[1].opts = this;
|
||||
m_subparsers[1].handleExtraArg = [](struct mSubParser* parser, const char* arg) {
|
||||
ConfigController* self = static_cast<ConfigController*>(parser->opts);
|
||||
if (self->m_fnames.count() >= MAX_GBAS) {
|
||||
return false;
|
||||
}
|
||||
self->m_fnames.append(QString::fromUtf8(arg));
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
ConfigController::~ConfigController() {
|
||||
|
|
|
@ -102,6 +102,7 @@ public:
|
|||
|
||||
const mArguments* args() const { return &m_args; }
|
||||
const mGraphicsOpts* graphicsOpts() const { return &m_graphicsOpts; }
|
||||
QStringList fileNames() const { return m_fnames; }
|
||||
void usage(const char* arg0) const;
|
||||
|
||||
static const QString& configDir();
|
||||
|
@ -129,6 +130,7 @@ private:
|
|||
mArguments m_args{};
|
||||
mGraphicsOpts m_graphicsOpts{};
|
||||
std::array<mSubParser, 2> m_subparsers;
|
||||
QStringList m_fnames;
|
||||
bool m_parsed = false;
|
||||
|
||||
QHash<QString, QVariant> m_argvOptions;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "ConfigController.h"
|
||||
#include "InputController.h"
|
||||
#include "LogController.h"
|
||||
#include "MemoryAccessLogController.h"
|
||||
#include "MultiplayerController.h"
|
||||
#include "Override.h"
|
||||
|
||||
|
@ -459,6 +460,15 @@ void CoreController::setLogger(LogController* logger) {
|
|||
connect(this, &CoreController::logPosted, m_log, &LogController::postLog);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_DEBUGGERS
|
||||
std::weak_ptr<MemoryAccessLogController> CoreController::memoryAccessLogController() {
|
||||
if (!m_malController) {
|
||||
m_malController = std::make_shared<MemoryAccessLogController>(this);
|
||||
}
|
||||
return m_malController;
|
||||
}
|
||||
#endif
|
||||
|
||||
void CoreController::start() {
|
||||
QSize size(screenDimensions());
|
||||
m_activeBuffer.resize(size.width() * size.height() * sizeof(mColor));
|
||||
|
@ -479,6 +489,10 @@ void CoreController::start() {
|
|||
void CoreController::stop() {
|
||||
setSync(false);
|
||||
#ifdef ENABLE_DEBUGGERS
|
||||
if (m_malController) {
|
||||
m_malController->stop();
|
||||
}
|
||||
|
||||
detachDebugger();
|
||||
#endif
|
||||
setPaused(false);
|
||||
|
|
|
@ -40,6 +40,7 @@ namespace QGBA {
|
|||
class ConfigController;
|
||||
class InputController;
|
||||
class LogController;
|
||||
class MemoryAccessLogController;
|
||||
class MultiplayerController;
|
||||
class Override;
|
||||
|
||||
|
@ -113,6 +114,8 @@ public:
|
|||
void detachDebugger();
|
||||
void attachDebuggerModule(mDebuggerModule*, bool interrupt = true);
|
||||
void detachDebuggerModule(mDebuggerModule*);
|
||||
|
||||
std::weak_ptr<MemoryAccessLogController> memoryAccessLogController();
|
||||
#endif
|
||||
|
||||
void setMultiplayerController(MultiplayerController*);
|
||||
|
@ -326,6 +329,10 @@ private:
|
|||
GBASIODolphin m_dolphin;
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_DEBUGGERS
|
||||
std::shared_ptr<MemoryAccessLogController> m_malController;
|
||||
#endif
|
||||
|
||||
mVideoLogContext* m_vl = nullptr;
|
||||
VFile* m_vlVf = nullptr;
|
||||
|
||||
|
|
|
@ -209,7 +209,7 @@ void DisplayQt::deinit(struct VideoBackend*) {
|
|||
|
||||
void DisplayQt::setLayerDimensions(struct VideoBackend* v, enum VideoLayer layer, const struct mRectangle* dims) {
|
||||
DisplayQt* self = static_cast<DisplayQt*>(v->user);
|
||||
if (layer > self->m_layerDims.size()) {
|
||||
if (layer >= self->m_layerDims.size()) {
|
||||
return;
|
||||
}
|
||||
self->m_layerDims[layer] = QRect(dims->x, dims->y, dims->width, dims->height);
|
||||
|
@ -217,7 +217,7 @@ void DisplayQt::setLayerDimensions(struct VideoBackend* v, enum VideoLayer layer
|
|||
|
||||
void DisplayQt::layerDimensions(const struct VideoBackend* v, enum VideoLayer layer, struct mRectangle* dims) {
|
||||
DisplayQt* self = static_cast<DisplayQt*>(v->user);
|
||||
if (layer > self->m_layerDims.size()) {
|
||||
if (layer >= self->m_layerDims.size()) {
|
||||
return;
|
||||
}
|
||||
QRect rect = self->m_layerDims[layer];
|
||||
|
@ -238,7 +238,7 @@ void DisplayQt::contextResized(struct VideoBackend*, unsigned, unsigned, unsigne
|
|||
|
||||
void DisplayQt::setImageSize(struct VideoBackend* v, enum VideoLayer layer, int w, int h) {
|
||||
DisplayQt* self = static_cast<DisplayQt*>(v->user);
|
||||
if (layer > self->m_layers.size()) {
|
||||
if (layer >= self->m_layers.size()) {
|
||||
return;
|
||||
}
|
||||
self->m_layers[layer] = QImage(w, h, QImage::Format_ARGB32);
|
||||
|
@ -246,7 +246,7 @@ void DisplayQt::setImageSize(struct VideoBackend* v, enum VideoLayer layer, int
|
|||
|
||||
void DisplayQt::imageSize(struct VideoBackend* v, enum VideoLayer layer, int* w, int* h) {
|
||||
DisplayQt* self = static_cast<DisplayQt*>(v->user);
|
||||
if (layer > self->m_layers.size()) {
|
||||
if (layer >= self->m_layers.size()) {
|
||||
return;
|
||||
}
|
||||
*w = self->m_layers[layer].width();
|
||||
|
@ -255,7 +255,7 @@ void DisplayQt::imageSize(struct VideoBackend* v, enum VideoLayer layer, int* w,
|
|||
|
||||
void DisplayQt::setImage(struct VideoBackend* v, enum VideoLayer layer, const void* frame) {
|
||||
DisplayQt* self = static_cast<DisplayQt*>(v->user);
|
||||
if (layer > self->m_layers.size()) {
|
||||
if (layer >= self->m_layers.size()) {
|
||||
return;
|
||||
}
|
||||
QImage& image = self->m_layers[layer];
|
||||
|
|
|
@ -397,6 +397,26 @@ void GBAApp::finishJob(qint64 jobId) {
|
|||
m_workerJobCallbacks.remove(jobId);
|
||||
}
|
||||
|
||||
void GBAApp::initMultiplayer() {
|
||||
QStringList fnames = m_configController->fileNames();
|
||||
if (fnames.count() < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
Window* w = m_windows[0];
|
||||
for (const auto& fname : fnames) {
|
||||
if (!w) {
|
||||
w = newWindow();
|
||||
}
|
||||
if (!w) {
|
||||
break;
|
||||
}
|
||||
CoreController* core = m_manager.loadGame(fname);
|
||||
w->setController(core, fname);
|
||||
w = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
GBAApp::WorkerJob::WorkerJob(qint64 id, std::function<void ()>&& job, GBAApp* owner)
|
||||
: m_id(id)
|
||||
, m_job(std::move(job))
|
||||
|
|
|
@ -82,6 +82,8 @@ public:
|
|||
ApplicationUpdater* updater() { return &m_updater; }
|
||||
QString invokeOnExit() { return m_invokeOnExit; }
|
||||
|
||||
void initMultiplayer();
|
||||
|
||||
public slots:
|
||||
void restartForUpdate();
|
||||
Window* newWindow();
|
||||
|
|
|
@ -0,0 +1,118 @@
|
|||
/* Copyright (c) 2013-2025 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 "MemoryAccessLogController.h"
|
||||
|
||||
#include "GBAApp.h"
|
||||
#include "LogController.h"
|
||||
#include "utils.h"
|
||||
#include "VFileDevice.h"
|
||||
|
||||
using namespace QGBA;
|
||||
|
||||
MemoryAccessLogController::MemoryAccessLogController(CoreController* controller, QObject* parent)
|
||||
: QObject(parent)
|
||||
, m_controller(controller)
|
||||
{
|
||||
mCore* core = m_controller->thread()->core;
|
||||
const mCoreMemoryBlock* info;
|
||||
size_t nBlocks = core->listMemoryBlocks(core, &info);
|
||||
|
||||
for (size_t i = 0; i < nBlocks; ++i) {
|
||||
if (!(info[i].flags & mCORE_MEMORY_MAPPED)) {
|
||||
continue;
|
||||
}
|
||||
m_regions.append({
|
||||
QString::fromUtf8(info[i].longName),
|
||||
QString::fromUtf8(info[i].internalName)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
MemoryAccessLogController::~MemoryAccessLogController() {
|
||||
stop();
|
||||
}
|
||||
|
||||
bool MemoryAccessLogController::canExport() const {
|
||||
return m_regionMapping.contains("cart0");
|
||||
}
|
||||
|
||||
void MemoryAccessLogController::updateRegion(const QString& internalName, bool checked) {
|
||||
if (checked) {
|
||||
m_watchedRegions += internalName;
|
||||
} else {
|
||||
m_watchedRegions -= internalName;
|
||||
}
|
||||
if (!m_active) {
|
||||
return;
|
||||
}
|
||||
m_regionMapping[internalName] = mDebuggerAccessLoggerWatchMemoryBlockName(&m_logger, internalName.toUtf8().constData(), activeFlags());
|
||||
emit regionMappingChanged(internalName, checked);
|
||||
}
|
||||
|
||||
void MemoryAccessLogController::setFile(const QString& path) {
|
||||
m_path = path;
|
||||
}
|
||||
|
||||
void MemoryAccessLogController::start(bool loadExisting, bool logExtra) {
|
||||
int flags = O_CREAT | O_RDWR;
|
||||
if (!loadExisting) {
|
||||
flags |= O_TRUNC;
|
||||
}
|
||||
VFile* vf = VFileDevice::open(m_path, flags);
|
||||
if (!vf) {
|
||||
LOG(QT, ERROR) << tr("Failed to open memory log file");
|
||||
return;
|
||||
}
|
||||
m_logExtra = logExtra;
|
||||
|
||||
mDebuggerAccessLoggerInit(&m_logger);
|
||||
CoreController::Interrupter interrupter(m_controller);
|
||||
m_controller->attachDebuggerModule(&m_logger.d);
|
||||
if (!mDebuggerAccessLoggerOpen(&m_logger, vf, flags)) {
|
||||
mDebuggerAccessLoggerDeinit(&m_logger);
|
||||
LOG(QT, ERROR) << tr("Failed to open memory log file");
|
||||
return;
|
||||
}
|
||||
|
||||
m_active = true;
|
||||
emit loggingChanged(true);
|
||||
for (const auto& region : m_watchedRegions) {
|
||||
m_regionMapping[region] = mDebuggerAccessLoggerWatchMemoryBlockName(&m_logger, region.toUtf8().constData(), activeFlags());
|
||||
}
|
||||
interrupter.resume();
|
||||
}
|
||||
|
||||
void MemoryAccessLogController::stop() {
|
||||
if (!m_active) {
|
||||
return;
|
||||
}
|
||||
CoreController::Interrupter interrupter(m_controller);
|
||||
m_controller->detachDebuggerModule(&m_logger.d);
|
||||
mDebuggerAccessLoggerDeinit(&m_logger);
|
||||
emit loggingChanged(false);
|
||||
interrupter.resume();
|
||||
m_active = false;
|
||||
}
|
||||
|
||||
mDebuggerAccessLogRegionFlags MemoryAccessLogController::activeFlags() const {
|
||||
mDebuggerAccessLogRegionFlags loggerFlags = 0;
|
||||
if (m_logExtra) {
|
||||
loggerFlags = mDebuggerAccessLogRegionFlagsFillHasExBlock(loggerFlags);
|
||||
}
|
||||
return loggerFlags;
|
||||
}
|
||||
|
||||
void MemoryAccessLogController::exportFile(const QString& filename) {
|
||||
VFile* vf = VFileDevice::open(filename, O_CREAT | O_TRUNC | O_WRONLY);
|
||||
if (!vf) {
|
||||
// log error
|
||||
return;
|
||||
}
|
||||
|
||||
CoreController::Interrupter interrupter(m_controller);
|
||||
mDebuggerAccessLoggerCreateShadowFile(&m_logger, m_regionMapping[QString("cart0")], vf, 0);
|
||||
vf->close(vf);
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/* Copyright (c) 2013-2025 Jeffrey Pfau
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
#pragma once
|
||||
|
||||
#include <QSet>
|
||||
#include <QVector>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "CoreController.h"
|
||||
|
||||
#include <mgba/internal/debugger/access-logger.h>
|
||||
|
||||
namespace QGBA {
|
||||
|
||||
class MemoryAccessLogController : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
struct Region {
|
||||
QString longName;
|
||||
QString internalName;
|
||||
};
|
||||
|
||||
MemoryAccessLogController(CoreController* controller, QObject* parent = nullptr);
|
||||
~MemoryAccessLogController();
|
||||
|
||||
QVector<Region> listRegions() const { return m_regions; }
|
||||
QSet<QString> watchedRegions() const { return m_watchedRegions; }
|
||||
|
||||
bool canExport() const;
|
||||
mPlatform platform() const { return m_controller->platform(); }
|
||||
|
||||
QString file() const { return m_path; }
|
||||
bool active() const { return m_active; }
|
||||
|
||||
public slots:
|
||||
void updateRegion(const QString& internalName, bool enable);
|
||||
void setFile(const QString& path);
|
||||
|
||||
void start(bool loadExisting, bool logExtra);
|
||||
void stop();
|
||||
|
||||
void exportFile(const QString& filename);
|
||||
|
||||
signals:
|
||||
void loggingChanged(bool active);
|
||||
void regionMappingChanged(const QString& internalName, bool active);
|
||||
|
||||
private:
|
||||
bool m_logExtra = false;
|
||||
QString m_path;
|
||||
CoreController* m_controller;
|
||||
QSet<QString> m_watchedRegions;
|
||||
QHash<QString, int> m_regionMapping;
|
||||
QVector<Region> m_regions;
|
||||
struct mDebuggerAccessLogger m_logger{};
|
||||
bool m_active = false;
|
||||
|
||||
mDebuggerAccessLogRegionFlags activeFlags() const;
|
||||
};
|
||||
|
||||
}
|
|
@ -9,104 +9,66 @@
|
|||
|
||||
#include "GBAApp.h"
|
||||
#include "LogController.h"
|
||||
#include "MemoryAccessLogController.h"
|
||||
#include "utils.h"
|
||||
#include "VFileDevice.h"
|
||||
|
||||
using namespace QGBA;
|
||||
|
||||
MemoryAccessLogView::MemoryAccessLogView(std::shared_ptr<CoreController> controller, QWidget* parent)
|
||||
MemoryAccessLogView::MemoryAccessLogView(std::weak_ptr<MemoryAccessLogController> controller, QWidget* parent)
|
||||
: QWidget(parent)
|
||||
, m_controller(std::move(controller))
|
||||
, m_controller(controller)
|
||||
{
|
||||
m_ui.setupUi(this);
|
||||
|
||||
std::shared_ptr<MemoryAccessLogController> controllerPtr = m_controller.lock();
|
||||
connect(m_ui.browse, &QAbstractButton::clicked, this, &MemoryAccessLogView::selectFile);
|
||||
connect(m_ui.exportButton, &QAbstractButton::clicked, this, &MemoryAccessLogView::exportFile);
|
||||
connect(this, &MemoryAccessLogView::loggingChanged, m_ui.start, &QWidget::setDisabled);
|
||||
connect(this, &MemoryAccessLogView::loggingChanged, m_ui.stop, &QWidget::setEnabled);
|
||||
connect(this, &MemoryAccessLogView::loggingChanged, m_ui.filename, &QWidget::setDisabled);
|
||||
connect(this, &MemoryAccessLogView::loggingChanged, m_ui.browse, &QWidget::setDisabled);
|
||||
connect(controllerPtr.get(), &MemoryAccessLogController::regionMappingChanged, this, &MemoryAccessLogView::updateRegion);
|
||||
connect(controllerPtr.get(), &MemoryAccessLogController::loggingChanged, this, &MemoryAccessLogView::handleStartStop);
|
||||
|
||||
mCore* core = m_controller->thread()->core;
|
||||
const mCoreMemoryBlock* info;
|
||||
size_t nBlocks = core->listMemoryBlocks(core, &info);
|
||||
bool active = controllerPtr->active();
|
||||
auto watchedRegions = controllerPtr->watchedRegions();
|
||||
|
||||
QVBoxLayout* regionBox = static_cast<QVBoxLayout*>(m_ui.regionBox->layout());
|
||||
for (size_t i = 0; i < nBlocks; ++i) {
|
||||
if (!(info[i].flags & mCORE_MEMORY_MAPPED)) {
|
||||
continue;
|
||||
}
|
||||
QCheckBox* region = new QCheckBox(QString::fromUtf8(info[i].longName));
|
||||
for (const auto& info : controllerPtr->listRegions()) {
|
||||
QCheckBox* region = new QCheckBox(info.longName);
|
||||
regionBox->addWidget(region);
|
||||
|
||||
QString name(QString::fromUtf8(info[i].internalName));
|
||||
QString name(info.internalName);
|
||||
m_regionBoxes[name] = region;
|
||||
connect(region, &QAbstractButton::toggled, this, [this, name](bool checked) {
|
||||
updateRegion(name, checked);
|
||||
std::shared_ptr<MemoryAccessLogController> controllerPtr = m_controller.lock();
|
||||
if (!controllerPtr) {
|
||||
return;
|
||||
}
|
||||
controllerPtr->updateRegion(name, checked);
|
||||
});
|
||||
}
|
||||
|
||||
handleStartStop(active);
|
||||
}
|
||||
|
||||
MemoryAccessLogView::~MemoryAccessLogView() {
|
||||
stop();
|
||||
}
|
||||
|
||||
void MemoryAccessLogView::updateRegion(const QString& internalName, bool checked) {
|
||||
if (checked) {
|
||||
m_watchedRegions += internalName;
|
||||
} else {
|
||||
m_watchedRegions -= internalName;
|
||||
}
|
||||
if (!m_active) {
|
||||
return;
|
||||
}
|
||||
void MemoryAccessLogView::updateRegion(const QString& internalName, bool) {
|
||||
m_regionBoxes[internalName]->setEnabled(false);
|
||||
m_regionMapping[internalName] = mDebuggerAccessLoggerWatchMemoryBlockName(&m_logger, internalName.toUtf8().constData(), activeFlags());
|
||||
}
|
||||
|
||||
void MemoryAccessLogView::start() {
|
||||
int flags = O_CREAT | O_RDWR;
|
||||
if (!m_ui.loadExisting->isChecked()) {
|
||||
flags |= O_TRUNC;
|
||||
}
|
||||
VFile* vf = VFileDevice::open(m_ui.filename->text(), flags);
|
||||
if (!vf) {
|
||||
// log error
|
||||
std::shared_ptr<MemoryAccessLogController> controllerPtr = m_controller.lock();
|
||||
if (!controllerPtr) {
|
||||
return;
|
||||
}
|
||||
mDebuggerAccessLoggerInit(&m_logger);
|
||||
CoreController::Interrupter interrupter(m_controller);
|
||||
m_controller->attachDebuggerModule(&m_logger.d);
|
||||
if (!mDebuggerAccessLoggerOpen(&m_logger, vf, flags)) {
|
||||
mDebuggerAccessLoggerDeinit(&m_logger);
|
||||
LOG(QT, ERROR) << tr("Failed to open memory log file");
|
||||
return;
|
||||
}
|
||||
|
||||
m_active = true;
|
||||
emit loggingChanged(true);
|
||||
for (const auto& region : m_watchedRegions) {
|
||||
m_regionBoxes[region]->setEnabled(false);
|
||||
m_regionMapping[region] = mDebuggerAccessLoggerWatchMemoryBlockName(&m_logger, region.toUtf8().constData(), activeFlags());
|
||||
}
|
||||
interrupter.resume();
|
||||
|
||||
if (m_watchedRegions.contains(QString("cart0"))) {
|
||||
m_ui.exportButton->setEnabled(true);
|
||||
}
|
||||
controllerPtr->setFile(m_ui.filename->text());
|
||||
controllerPtr->start(m_ui.loadExisting->isChecked(), m_ui.logExtra->isChecked());
|
||||
}
|
||||
|
||||
void MemoryAccessLogView::stop() {
|
||||
if (!m_active) {
|
||||
std::shared_ptr<MemoryAccessLogController> controllerPtr = m_controller.lock();
|
||||
if (!controllerPtr) {
|
||||
return;
|
||||
}
|
||||
CoreController::Interrupter interrupter(m_controller);
|
||||
m_controller->detachDebuggerModule(&m_logger.d);
|
||||
mDebuggerAccessLoggerDeinit(&m_logger);
|
||||
emit loggingChanged(false);
|
||||
interrupter.resume();
|
||||
|
||||
for (const auto& region : m_watchedRegions) {
|
||||
controllerPtr->stop();
|
||||
for (const auto& region : controllerPtr->watchedRegions()) {
|
||||
m_regionBoxes[region]->setEnabled(true);
|
||||
}
|
||||
m_ui.exportButton->setEnabled(false);
|
||||
|
@ -119,30 +81,41 @@ void MemoryAccessLogView::selectFile() {
|
|||
}
|
||||
}
|
||||
|
||||
mDebuggerAccessLogRegionFlags MemoryAccessLogView::activeFlags() const {
|
||||
mDebuggerAccessLogRegionFlags loggerFlags = 0;
|
||||
if (m_ui.logExtra->isChecked()) {
|
||||
loggerFlags = mDebuggerAccessLogRegionFlagsFillHasExBlock(loggerFlags);
|
||||
}
|
||||
return loggerFlags;
|
||||
}
|
||||
|
||||
void MemoryAccessLogView::exportFile() {
|
||||
if (!m_regionMapping.contains("cart0")) {
|
||||
std::shared_ptr<MemoryAccessLogController> controllerPtr = m_controller.lock();
|
||||
if (!controllerPtr) {
|
||||
return;
|
||||
}
|
||||
if (!controllerPtr->canExport()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QString filename = GBAApp::app()->getSaveFileName(this, tr("Select access log file"), romFilters(false, m_controller->platform(), true));
|
||||
QString filename = GBAApp::app()->getSaveFileName(this, tr("Select access log file"), romFilters(false, controllerPtr->platform(), true));
|
||||
if (filename.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
VFile* vf = VFileDevice::open(filename, O_CREAT | O_TRUNC | O_WRONLY);
|
||||
if (!vf) {
|
||||
// log error
|
||||
controllerPtr->exportFile(filename);
|
||||
}
|
||||
|
||||
void MemoryAccessLogView::handleStartStop(bool start) {
|
||||
std::shared_ptr<MemoryAccessLogController> controllerPtr = m_controller.lock();
|
||||
if (!controllerPtr) {
|
||||
return;
|
||||
}
|
||||
m_ui.filename->setText(controllerPtr->file());
|
||||
|
||||
CoreController::Interrupter interrupter(m_controller);
|
||||
mDebuggerAccessLoggerCreateShadowFile(&m_logger, m_regionMapping[QString("cart0")], vf, 0);
|
||||
vf->close(vf);
|
||||
auto watchedRegions = controllerPtr->watchedRegions();
|
||||
for (const auto& region : watchedRegions) {
|
||||
m_regionBoxes[region]->setDisabled(start);
|
||||
m_regionBoxes[region]->setChecked(true);
|
||||
}
|
||||
|
||||
if (watchedRegions.contains(QString("cart0"))) {
|
||||
m_ui.exportButton->setEnabled(start);
|
||||
}
|
||||
|
||||
m_ui.start->setDisabled(start);
|
||||
m_ui.stop->setEnabled(start);
|
||||
m_ui.filename->setDisabled(start);
|
||||
m_ui.browse->setDisabled(start);
|
||||
}
|
||||
|
|
|
@ -18,12 +18,14 @@
|
|||
|
||||
namespace QGBA {
|
||||
|
||||
class MemoryAccessLogController;
|
||||
|
||||
class MemoryAccessLogView : public QWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MemoryAccessLogView(std::shared_ptr<CoreController> controller, QWidget* parent = nullptr);
|
||||
~MemoryAccessLogView();
|
||||
MemoryAccessLogView(std::weak_ptr<MemoryAccessLogController> controller, QWidget* parent = nullptr);
|
||||
~MemoryAccessLogView() = default;
|
||||
|
||||
private slots:
|
||||
void updateRegion(const QString& internalName, bool enable);
|
||||
|
@ -34,20 +36,13 @@ private slots:
|
|||
|
||||
void exportFile();
|
||||
|
||||
signals:
|
||||
void loggingChanged(bool active);
|
||||
void handleStartStop(bool start);
|
||||
|
||||
private:
|
||||
Ui::MemoryAccessLogView m_ui;
|
||||
|
||||
std::shared_ptr<CoreController> m_controller;
|
||||
QSet<QString> m_watchedRegions;
|
||||
std::weak_ptr<MemoryAccessLogController> m_controller;
|
||||
QHash<QString, QCheckBox*> m_regionBoxes;
|
||||
QHash<QString, int> m_regionMapping;
|
||||
struct mDebuggerAccessLogger m_logger{};
|
||||
bool m_active = false;
|
||||
|
||||
mDebuggerAccessLogRegionFlags activeFlags() const;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -364,7 +364,7 @@ SettingsView::SettingsView(ConfigController* controller, InputController* inputC
|
|||
continue;
|
||||
}
|
||||
QLocale locale(name.remove(QString("%0-").arg(binaryName)).remove(".qm"));
|
||||
if (locale.language() == QLocale::English) {
|
||||
if (locale.language() == QLocale::English || locale.language() == QLocale::C) {
|
||||
continue;
|
||||
}
|
||||
QString endonym = locale.nativeLanguageName();
|
||||
|
|
|
@ -1767,7 +1767,12 @@ void Window::setupMenu(QMenuBar* menubar) {
|
|||
addGameAction(tr("View &I/O registers..."), "ioViewer", openControllerTView<IOViewer>(), "stateViews");
|
||||
|
||||
#ifdef ENABLE_DEBUGGERS
|
||||
addGameAction(tr("Log memory &accesses..."), "memoryAccessView", openControllerTView<MemoryAccessLogView>(), "tools");
|
||||
addGameAction(tr("Log memory &accesses..."), "memoryAccessView", [this]() {
|
||||
std::weak_ptr<MemoryAccessLogController> controller = m_controller->memoryAccessLogController();
|
||||
MemoryAccessLogView* view = new MemoryAccessLogView(controller);
|
||||
connect(m_controller.get(), &CoreController::stopping, view, &QWidget::close);
|
||||
openView(view);
|
||||
}, "tools");
|
||||
#endif
|
||||
|
||||
#if defined(USE_FFMPEG) && defined(M_CORE_GBA)
|
||||
|
|
|
@ -131,10 +131,9 @@ int main(int argc, char* argv[]) {
|
|||
}
|
||||
|
||||
Window* w = application.newWindow();
|
||||
w->loadConfig();
|
||||
w->argumentsPassed();
|
||||
|
||||
w->show();
|
||||
application.initMultiplayer();
|
||||
|
||||
int ret = application.exec();
|
||||
if (ret != 0) {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -387,48 +387,48 @@ Download-Größe: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>r%1-%2 %3 zurücksetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>Zurückspulen ist derzeit nicht aktiviert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>Spiel zurücksetzen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>Die meisten Spiele müssen zurückgesetzt werden, um einen neuen Spielstand zu laden. Möchtest Du das Spiel jetzt zurücksetzen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Fehler beim Öffnen der Speicherdatei: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Fehler beim Öffnen der Spieldatei: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>Das GamePak kann nur auf unterstützten Plattformen herausgezogen werden!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Konnte Snapshot-Datei %1 nicht zum Lesen öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Konnte Snapshot-Datei %1 nicht zum Schreiben öffnen</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Download-Größe: %3</translation>
|
|||
<translation>Portable Network Graphics (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Download-Größe: %3</translation>
|
|||
<translation type="unfinished">Stopp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6187,7 +6191,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>ROM ersetzen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>Lesegerät-Kartenbild in Rohdaten umwandeln …</translation>
|
||||
</message>
|
||||
|
@ -6498,7 +6502,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Leeren</translation>
|
||||
</message>
|
||||
|
@ -6714,77 +6718,77 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>&I/O-Register betrachten...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Video-Protokoll aufzeichnen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Aufzeichnen des Video-Protokolls beenden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Vollbildmodus beenden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>GameShark-Taste (gehalten)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>Autofeuer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>Autofeuer A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>Autofeuer B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>Autofeuer L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>Autofeuer R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>Autofeuer Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>Autofeuer Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>Autofeuer nach oben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>Autofeuer rechts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>Autofeuer nach unten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>Autofeuer links</translation>
|
||||
</message>
|
||||
|
|
|
@ -381,48 +381,48 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -3397,6 +3397,15 @@ Download size: %3</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3445,18 +3454,13 @@ Download size: %3</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6230,7 +6234,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6701,82 +6705,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -387,48 +387,48 @@ Tamaño de descarga: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>Reiniciar r%1-%2 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>Rebobinado desactivado actualmente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>¿Reiniciar el juego?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>La mayoría de juegos requieren reiniciar para cargar la nueva partida guardada. ¿Quieres reiniciar ahora?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Error al abrir el archivo de guardado: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Error al abrir el archivo del juego: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>¡No se puede quitar el cartucho en esta plataforma!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Error al leer del archivo de captura: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Error al escribir al archivo de captura: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Tamaño de descarga: %3</translation>
|
|||
<translation>Gráficos de red portátiles (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished">Error al abrir el archivo de registro de memoria</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Tamaño de descarga: %3</translation>
|
|||
<translation>Detener</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation>Error al abrir el archivo de registro de memoria</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation>Seleccionar archivo de registro de acceso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation>Archivos de registro de memoria (*.mal)</translation>
|
||||
</message>
|
||||
|
@ -6224,7 +6228,7 @@ Si está configurado como OpenGL y estás viendo esto, tu tarjeta gráfica o con
|
|||
<translation>Sensores del cartucho...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Limpiar</translation>
|
||||
</message>
|
||||
|
@ -6285,7 +6289,7 @@ Si está configurado como OpenGL y estás viendo esto, tu tarjeta gráfica o con
|
|||
<translation>Cargar partida guardada temporal...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>Convertir imagen de tarjeta e-Reader a archivo en bruto...</translation>
|
||||
</message>
|
||||
|
@ -6716,77 +6720,77 @@ Si está configurado como OpenGL y estás viendo esto, tu tarjeta gráfica o con
|
|||
<translation>Registrar &accesoa la memoria…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Grabar registro de depuración de vídeo...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Detener registro de depuración de vídeo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Salir de pantalla completa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>Botón GameShark (mantener)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>Disparo automático</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>Disparo automático A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>Disparo automático B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>Disparo automático L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>Disparo automático R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>Disparo automático Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>Disparo automático Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>Disparo automático arriba</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>Disparo automático derecha</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>Disparo automático abajo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>Disparo automático izquierda</translation>
|
||||
</message>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -388,48 +388,48 @@ Taille du téléchargement : %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>Réinitialiser r%1-%2 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>Le rembobinage n'est pas actuellement activé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>Réinitialiser le jeu ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>La plupart des jeux nécessitent une réinitialisation pour charger la nouvelle sauvegarde. Voulez-vous réinitialiser maintenant ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Échec de l'ouverture du fichier de sauvegarde : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Échec de l'ouverture du fichier de jeu : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Échec de l'ouverture de l'instantané pour lire : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Échec de l'ouverture de l'instantané pour écrire : %1</translation>
|
||||
</message>
|
||||
|
@ -3421,6 +3421,15 @@ Taille du téléchargement : %3</translation>
|
|||
<translation>Portable Network Graphics (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3469,18 +3478,13 @@ Taille du téléchargement : %3</translation>
|
|||
<translation type="unfinished">Arrêter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6241,7 +6245,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6728,82 +6732,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>Voir les registres d'&E/S...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Enregistrer le journal vidéo de débogage...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Arrêter le journal vidéo de débogage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Quitter le plein écran</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>Bouton GameShark (maintenir)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>Tir automatique</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>Tir automatique A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>Tir automatique B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>Tir automatique L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>Tir automatique R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>Tir automatique Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>Tir automatique Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>Tir automatique Up</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>Tir automatique Right</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>Tir automatique Down</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>Tir automatique Gauche</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Vider</translation>
|
||||
</message>
|
||||
|
|
|
@ -388,48 +388,48 @@ Letöltendő adat: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>Visszatekerés jelenleg nem engedélyezett</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Nem sikerült a mentésfájl megnyitása: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Nem sikerült a játékfájl megnyitása: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished">A játékkazettát nem lehet kirántani ismeretlen platformon!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished">A pillanatkép fájljának olvasásra való megnyitása sikertelen: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished">A pillanatkép fájljának írásra való megnyitása sikertelen: %1</translation>
|
||||
</message>
|
||||
|
@ -3404,6 +3404,15 @@ Letöltendő adat: %3</translation>
|
|||
<translation type="unfinished">Portable Network Graphics (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3452,18 +3461,13 @@ Letöltendő adat: %3</translation>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6235,7 +6239,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6706,82 +6710,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished">Napló törlése</translation>
|
||||
</message>
|
||||
|
|
|
@ -387,48 +387,48 @@ Dimensione del download: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>Reset r%1-%2 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>La funzione 'riavvolgi' non è attualmente abilitata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>Riavviare il gioco?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>La maggior parte dei giochi richiede un riavvio per caricare il nuovo salvataggio. Vuoi riavviare ora?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Impossibile aprire il file di salvataggio: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Impossibile aprire il file di gioco: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>Non riesco a strappare il pacchetto in una piattaforma inaspettata!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Impossibile aprire il file snapshot per la lettura: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Impossibile aprire il file snapshot per la scrittura: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Dimensione del download: %3</translation>
|
|||
<translation>Portable Network Graphics (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished">Impossibile aprire il file di registro della memoria</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Dimensione del download: %3</translation>
|
|||
<translation>Ferma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation>Impossibile aprire il file di registro della memoria</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation>Seleziona il file di registro di accesso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation>Registri degli accessi alla memoria (*.mal)</translation>
|
||||
</message>
|
||||
|
@ -6187,7 +6191,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>Scansiona e-Reader dotcode...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>Converti immagini carte e-Reader in raw...</translation>
|
||||
</message>
|
||||
|
@ -6709,82 +6713,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>Registra memoria &accessi...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Salva registro video di debug...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Ferma registro video di debug</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Esci da Schermo Intero</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>Pulsante GameShark (tieni premuto)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>Pulsanti Autofire</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>Autofire A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>Autofire B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>Autofire L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>Autofire R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>Autofire Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>Autofire Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>Autofire Su</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>AAutofire Destra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>Autofire Giù</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>Autofire Sinistra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Pulisci</translation>
|
||||
</message>
|
||||
|
|
|
@ -387,48 +387,48 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>セーブファイルを開けませんでした: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>ゲームファイルを開けませんでした: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>予期しないプラットフォームでパックをヤンクすることはできません!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>読み取り用のスナップショットファイルを開けませんでした: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>書き込み用のスナップショットファイルを開けませんでした: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Download size: %3</source>
|
|||
<translation>Portable Network Graphics (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Download size: %3</source>
|
|||
<translation type="unfinished">停止</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6225,7 +6229,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>カートリッジセンサー...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>消去</translation>
|
||||
</message>
|
||||
|
@ -6286,7 +6290,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6712,77 +6716,77 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>デバッグビデオログ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>デバッグビデオログを停止</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>全画面表示を終了</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>GameSharkボタン(押し)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>連打</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>連打 A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>連打 B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>連打 L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>連打 R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>連打 Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>連打 Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>連打 上</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>連打 右</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>連打 下</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>連打 左</translation>
|
||||
</message>
|
||||
|
|
|
@ -387,48 +387,48 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>r%1-%2 %3 재설정</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>현재 활성화되지 않은 되감기</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>게임을 재설정하겠습니까?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>대부분의 게임은 새로운 저장을 로드하려면 재설정이 필요합니다. 지금 재설정하겠습니까?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>저장 파일을 열지 못했습니다: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>게임 파일을 열지 못했습니다: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>예기치 않은 플랫폼에서 팩을 잡아당길 수 없습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>읽기 용 스냅샷 파일을 열지 못했습니다: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>쓰기 용 스냅샷 파일을 열지 못했습니다: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Download size: %3</source>
|
|||
<translation>휴대용 네트워크 그래픽 (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished">메모리 로그 파일을 열 수 없음</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Download size: %3</source>
|
|||
<translation>정지</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation>메모리 로그 파일을 열 수 없음</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation>접속 파일 선택</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation>메모리 접속 로그 (*.mal)</translation>
|
||||
</message>
|
||||
|
@ -6215,7 +6219,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>게임 상태 보기</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>e-리더 카드 이미지를 원시 데이터로 변환...</translation>
|
||||
</message>
|
||||
|
@ -6707,82 +6711,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>메모리 및 접속 기록...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>디버그 비디오 로그 녹화...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>디버그 비디오 로그 중지</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>전체화면 종료</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>게임샤크 버튼 (누름)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>연사</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>연사 A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>연사 B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>연사 L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>연사 R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>연사 시작</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>연사 선택</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>지움</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>연사 위쪽</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>연사 오른쪽</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>연사 아래쪽</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>연사 왼쪽</translation>
|
||||
</message>
|
||||
|
|
|
@ -381,48 +381,48 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Gagal membuka fail tersimpan: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Gagal membuka fail permainan: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished">Gagal membuka fail snapshot untuk baca: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished">Gagal membuka fail snapshot untuk menulis: %1</translation>
|
||||
</message>
|
||||
|
@ -3397,6 +3397,15 @@ Download size: %3</source>
|
|||
<translation>Grafik Rangkaian Mudah Alih (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3445,18 +3454,13 @@ Download size: %3</source>
|
|||
<translation type="unfinished">Henti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6230,7 +6234,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6701,82 +6705,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Rakam log video nyahpepijat...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Henti log video nyahpepijat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Keluar skrinpenuh</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>Butang GameShark (pegang)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Kosongkan</translation>
|
||||
</message>
|
||||
|
|
|
@ -385,48 +385,48 @@ Nedlastningsstørrelse: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>Vil du starte spillet på nytt?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Klarte ikke å åpne spillfil: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -3401,6 +3401,15 @@ Nedlastningsstørrelse: %3</translation>
|
|||
<translation>Portable Network Graphics (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3449,18 +3458,13 @@ Nedlastningsstørrelse: %3</translation>
|
|||
<translation type="unfinished">Stopp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6234,7 +6238,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>Skann e-Reader-punktkoder...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6705,82 +6709,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Gå ut av fullskjerm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Tøm</translation>
|
||||
</message>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -387,48 +387,48 @@ Rozmiar pobierania: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>Reset r%1-%2 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>Przewijanie nie jest obecnie włączone</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>Zresetować grę?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>Większość gier wymaga zresetowania, aby wczytać nowy zapis. Czy chcesz teraz zresetować?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Nie udało się otworzyć pliku zapisu: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Nie udało się otworzyć pliku gry: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>Nie można wyciągnąć pack na nieoczekiwanej platformie!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Nie udało się otworzyć pliku snapshot do odczytu: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Nie udało się otworzyć pliku snapshot do zapisu: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Rozmiar pobierania: %3</translation>
|
|||
<translation>Portable Network Graphics (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished">Błąd odczytu pliku logów pamięci</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Rozmiar pobierania: %3</translation>
|
|||
<translation type="unfinished">Stop</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation>Błąd odczytu pliku logów pamięci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6240,7 +6244,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>Skanuj kody kropkowe czytnika e-Reader...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>Konwertuj obraz karty czytnika e-Reader na surowy...</translation>
|
||||
</message>
|
||||
|
@ -6711,82 +6715,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Nagraj dziennik wideo debugowania...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Zatrzymaj dziennik wideo debugowania</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Wyłączyć tryb pełnoekranowy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>Przycisk GameShark (przytrzymany)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>Turbo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>Turbo A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>Turbo B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>Turbo L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>Turbo R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>Turbo Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>Turbo Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>Turbo Góra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>Turbo Prawo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>Turbo Dół</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>Turbo Lewo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Wyczyść</translation>
|
||||
</message>
|
||||
|
|
|
@ -387,48 +387,48 @@ Tamanho do download: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>Resetar r%1-%2 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>O rebobinamento não está ativado atualmente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>Resetar o jogo?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>A maioria dos jogos requerirão um reset pra carregar o novo save. Você quer resetar agora?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Falhou em abrir o arquivo do save: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Falhou em abrir o arquivo do jogo: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>Não pode arrancar o pacote numa plataforma inesperada!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Falhou em abrir o arquivo do snapshot pra leitura: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Falhou em abrir o arquivo do snapshot pra gravação: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Tamanho do download: %3</translation>
|
|||
<translation>Gráficos Portáteis da Rede (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished">Falhou em abrir o arquivo do registro da memória</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Tamanho do download: %3</translation>
|
|||
<translation>Parar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation>Falhou em abrir o arquivo do registro da memória</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation>Selecionar o arquivo de registro do acesso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation>Registros de acesso a memória (*.mal)</translation>
|
||||
</message>
|
||||
|
@ -6224,7 +6228,7 @@ Se ele está definido como OpenGL e você ainda ver isto sua placa gráfica ou d
|
|||
<translation>Sensores do Game Pak...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Limpar</translation>
|
||||
</message>
|
||||
|
@ -6285,7 +6289,7 @@ Se ele está definido como OpenGL e você ainda ver isto sua placa gráfica ou d
|
|||
<translation>Carregar save temporário do jogo...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>Converter a imagem do cartão do e-Reader pro natural...</translation>
|
||||
</message>
|
||||
|
@ -6716,77 +6720,77 @@ Se ele está definido como OpenGL e você ainda ver isto sua placa gráfica ou d
|
|||
<translation>Registrar os acessos a &memória...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Gravar registro do vídeo de debug...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Parar o registro do vídeo de debug</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Sair da tela cheia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>Botão do GameShark (pressionado)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>Auto-disparar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>Auto-disparar A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>Auto-disparar B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>Auto-disparar L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>Auto-disparar R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>Auto-disparar Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>Auto-disparar Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>Auto-disparar Pra Cima</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>Auto-disparar Direita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>Auto-disparar Pra Baixo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>Auto-disparar Esquerda</translation>
|
||||
</message>
|
||||
|
|
|
@ -387,48 +387,48 @@ Tamanho da descarga: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>Resetar r%1-%2 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>O rebobinamento não está ativado atualmente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>Resetar o jogo?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>A maioria dos jogos requerirão um reset para carregar o novo save. Quer resetar agora?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Falha ao abrir o ficheiro dde gravação: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Falha ao abrir o ficheiro do jogo: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>Não pode arrancar o pacote numa plataforma inesperada!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Falha ao abrir o ficheiro do snapshot para leitura: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Falha ao abrir o ficheiro do snapshot para gravação: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Tamanho da descarga: %3</translation>
|
|||
<translation>Gráficos Portáteis da Rede (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Tamanho da descarga: %3</translation>
|
|||
<translation type="unfinished">Parar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6238,7 +6242,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>Escanear dotcodes do e-Reader...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>Converter imagem do cartão do e-Reader para natural...</translation>
|
||||
</message>
|
||||
|
@ -6709,82 +6713,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Gravar registo do vídeo de debug...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Parar o registo do vídeo de debug</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Sair do ecrã inteiro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>Botão do GameShark (segurado)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>Auto-disparar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>Auto-disparar A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>Auto-disparar B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>Auto-disparar L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>Auto-disparar R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>Auto-disparar Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>Auto-disparar Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>Auto-disparar Para Cima</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>Auto-disparar Direita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>Auto-disparar Para Baixo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>Auto-disparar Esquerda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Limpar</translation>
|
||||
</message>
|
||||
|
|
|
@ -387,48 +387,48 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>Сброс r%1-%2 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>Обратная перемотка выключена</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>Перезагрузить игру?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>Большинству игр нужна перезагрузка, чтобы загрузить новое сохранение. Перезагрузить сейчас?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Не удалось открыть файл сохранения: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Не удалось открыть файл игры: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>Невозможно пнуть картридж на неожиданной платформе!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Не удалось открыть файл изображения для считывания: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Не удалось открыть файл изображения для записи: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Download size: %3</source>
|
|||
<translation>Portable Network Graphics (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Download size: %3</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6240,7 +6244,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>Сканировать dot-коды e-Reader...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>Конвертировать карту e-Reader в raw...</translation>
|
||||
</message>
|
||||
|
@ -6711,82 +6715,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Запись отладочного видеожурнала...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Закончить запись отладочного видеожурнала</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Выйти из полноэкранного режима</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>Кнопка GameShark (удерживается)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>Автострельба</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>A (автострельба)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>B (автострельба)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>L (автострельба)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>R (автострельба)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>Start (автострельба)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>Select (автострельба)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>Вверх (автострельба)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>Вправо (автострельба)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>Вниз (автострельба)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>Влево (автострельба)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Очистить</translation>
|
||||
</message>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -387,48 +387,48 @@ Hämtningsstorlek: %3</translation>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>Starta om r%1-%2 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>Starta om spelet?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>De flesta spel kommer att kräva en omstart för att läsa in ny sparning. Vill du starta om nu?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Misslyckades med att öppna sparad fil: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Misslyckades med att öppna spelfil: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Misslyckades med att öppna ögonblicksfil för läsning: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Misslyckades med att öppna ögonblicksfil för skrivning: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Hämtningsstorlek: %3</translation>
|
|||
<translation>Portable Network Graphics (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished">Misslyckades med att öppna minnesloggfil</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Hämtningsstorlek: %3</translation>
|
|||
<translation>Stoppa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation>Misslyckades med att öppna minnesloggfil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation>Välj åtkomstloggfil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation>Minnesåtkomstloggar (*.mal)</translation>
|
||||
</message>
|
||||
|
@ -6238,7 +6242,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>Skanna e-Reader-punktkoder...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>Konvertera e-Reader-kortavbilder till raw...</translation>
|
||||
</message>
|
||||
|
@ -6709,82 +6713,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>Logga minneså&tkomster...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Spela in felsökningsvideologg...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Stoppa felsökningsvideologg</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Avsluta helskärm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>GameShark-knapp (håll)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>Autofire</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>Autofire A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>Autofire B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>Autofire L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>Autofire R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>Autofire Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>Autofire Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>Autofire upp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>Autofire höger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>Autofire ner</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>Autofire vänster</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Töm</translation>
|
||||
</message>
|
||||
|
|
|
@ -381,48 +381,48 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -3397,6 +3397,15 @@ Download size: %3</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3445,18 +3454,13 @@ Download size: %3</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6228,7 +6232,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6699,82 +6703,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -387,48 +387,48 @@ Yeni sürüm: %2
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>Oyun sıfırlansım mı?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>Kayıt dosyası açılamadı: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>Oyun dosyası açılamadı: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>Beklenmedik bir platformda kartı çıkaramazsın!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>Anlık görüntü dosyası okuma için açılamadı: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>Anlık görüntü dosyası yazma için açılamadı: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Yeni sürüm: %2
|
|||
<translation></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Yeni sürüm: %2
|
|||
<translation type="unfinished">Durdur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6220,7 +6224,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>e-Okuyucu kart resimlerini rawa dönüştür...</translation>
|
||||
</message>
|
||||
|
@ -6707,82 +6711,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>&I/O kayıtlarını görüntüle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>Hata ayıklama video günlüğünü kaydet...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>Hata ayıklama video günlüğünü durdur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>Tam ekrandan çık</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>GameShark Butonu (basılı tutun)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>Otomatik basma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>Otomatik basma A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>Otomatik basma B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>Otomatik basma L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>Otomatik basma R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>Otomatik basma Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>Otomatik basma Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>Otomatik basma Up</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>Otomatik basma Right</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>Otomatik basma Down</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>Otomatik basma Sol</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>Temizle</translation>
|
||||
</message>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -387,48 +387,48 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>重置 r%1-%2 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>当前未开启倒带</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>要重置游戏吗?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>大多数游戏需要重置才能加载新的存档。您要立即重启吗?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>打开存档失败: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>打开游戏文件失败: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>无法在意外平台上抽出卡带!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>读取快照文件失败: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>写入快照文件失败: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Download size: %3</source>
|
|||
<translation>便携式网络图形 (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished">打开内存日志文件失败</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Download size: %3</source>
|
|||
<translation>停止</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation>打开内存日志文件失败</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation>选择访问日志文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation>内存访问日志(*.mal)</translation>
|
||||
</message>
|
||||
|
@ -6236,7 +6240,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>扫描 e-Reader 点码...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>将 e-Reader 卡片图像转换为原始数据...</translation>
|
||||
</message>
|
||||
|
@ -6707,82 +6711,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>记录内存访问(&a)...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>记录调试视频日志...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>停止记录调试视频日志</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>退出全屏</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>GameShark 键 (长按)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>连发</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>连发 A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>连发 B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>连发 L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>连发 R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>连发 Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>连发 Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>连发 上</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>连发 右</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>连发 下</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>连发 左</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>清除</translation>
|
||||
</message>
|
||||
|
|
|
@ -387,48 +387,48 @@ Download size: %3</source>
|
|||
<context>
|
||||
<name>QGBA::CoreController</name>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="103"/>
|
||||
<location filename="../CoreController.cpp" line="104"/>
|
||||
<source>Reset r%1-%2 %3</source>
|
||||
<translation>重置 r%1-%2 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="536"/>
|
||||
<location filename="../CoreController.cpp" line="553"/>
|
||||
<location filename="../CoreController.cpp" line="550"/>
|
||||
<location filename="../CoreController.cpp" line="567"/>
|
||||
<source>Rewinding not currently enabled</source>
|
||||
<translation>目前未開啟倒帶</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="592"/>
|
||||
<location filename="../CoreController.cpp" line="606"/>
|
||||
<source>Reset the game?</source>
|
||||
<translation>要重置遊戲嗎?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="593"/>
|
||||
<location filename="../CoreController.cpp" line="607"/>
|
||||
<source>Most games will require a reset to load the new save. Do you want to reset now?</source>
|
||||
<translation>大多數遊戲需要重置才能載入新的檔案。您要立即重啟嗎?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="808"/>
|
||||
<location filename="../CoreController.cpp" line="822"/>
|
||||
<source>Failed to open save file: %1</source>
|
||||
<translation>存檔開啟失敗: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="866"/>
|
||||
<location filename="../CoreController.cpp" line="880"/>
|
||||
<source>Failed to open game file: %1</source>
|
||||
<translation>遊戲開啟失敗: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="896"/>
|
||||
<location filename="../CoreController.cpp" line="910"/>
|
||||
<source>Can't yank pack in unexpected platform!</source>
|
||||
<translation>無法在預料外的平台拔除卡帶!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1011"/>
|
||||
<location filename="../CoreController.cpp" line="1025"/>
|
||||
<source>Failed to open snapshot file for reading: %1</source>
|
||||
<translation>讀取快照失敗: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CoreController.cpp" line="1028"/>
|
||||
<location filename="../CoreController.cpp" line="1042"/>
|
||||
<source>Failed to open snapshot file for writing: %1</source>
|
||||
<translation>寫入快照失敗: %1</translation>
|
||||
</message>
|
||||
|
@ -3403,6 +3403,15 @@ Download size: %3</source>
|
|||
<translation type="unfinished">複製</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogController</name>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="66"/>
|
||||
<location filename="../MemoryAccessLogController.cpp" line="76"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation type="unfinished">打開記憶體日誌檔案失敗</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QGBA::MemoryAccessLogView</name>
|
||||
<message>
|
||||
|
@ -3451,18 +3460,13 @@ Download size: %3</source>
|
|||
<translation type="unfinished">停止</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="82"/>
|
||||
<source>Failed to open memory log file</source>
|
||||
<translation>打開記憶體日誌檔案失敗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="135"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="93"/>
|
||||
<source>Select access log file</source>
|
||||
<translation>選擇訪問日誌文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="116"/>
|
||||
<location filename="../MemoryAccessLogView.cpp" line="78"/>
|
||||
<source>Memory access logs (*.mal)</source>
|
||||
<translation>記憶體存取日誌(*.mal)</translation>
|
||||
</message>
|
||||
|
@ -4450,7 +4454,7 @@ Download size: %3</source>
|
|||
<message>
|
||||
<location filename="../ReportView.ui" line="99"/>
|
||||
<source>Save</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="unfinished">儲存</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ReportView.ui" line="113"/>
|
||||
|
@ -6246,7 +6250,7 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation>掃描 e-Reader 點碼...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1775"/>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<source>Convert e-Reader card image to raw...</source>
|
||||
<translation>轉換 e-Reader 卡片圖檔為原始資料...</translation>
|
||||
</message>
|
||||
|
@ -6707,82 +6711,82 @@ If it is set to OpenGL and you still see this, your graphics card or drivers may
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1779"/>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<source>Record debug video log...</source>
|
||||
<translation>錄製除錯影片記錄檔。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1780"/>
|
||||
<location filename="../Window.cpp" line="1785"/>
|
||||
<source>Stop debug video log</source>
|
||||
<translation>停止除錯影片記錄檔</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1784"/>
|
||||
<location filename="../Window.cpp" line="1789"/>
|
||||
<source>Exit fullscreen</source>
|
||||
<translation>離開全螢幕</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1786"/>
|
||||
<location filename="../Window.cpp" line="1791"/>
|
||||
<source>GameShark Button (held)</source>
|
||||
<translation>Gameshark 按鈕 (長按)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1792"/>
|
||||
<location filename="../Window.cpp" line="1797"/>
|
||||
<source>Autofire</source>
|
||||
<translation>自動連射</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1793"/>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<source>Autofire A</source>
|
||||
<translation>自動連射 A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1798"/>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<source>Autofire B</source>
|
||||
<translation>自動連射 B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1803"/>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<source>Autofire L</source>
|
||||
<translation>自動連射 L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1808"/>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<source>Autofire R</source>
|
||||
<translation>自動連射 R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1813"/>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<source>Autofire Start</source>
|
||||
<translation>自動連射 Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1818"/>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<source>Autofire Select</source>
|
||||
<translation>自動連射 Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1823"/>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<source>Autofire Up</source>
|
||||
<translation>自動連射 上</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1828"/>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<source>Autofire Right</source>
|
||||
<translation>自動連射 右</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1833"/>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<source>Autofire Down</source>
|
||||
<translation>自動連射 下</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="1838"/>
|
||||
<location filename="../Window.cpp" line="1843"/>
|
||||
<source>Autofire Left</source>
|
||||
<translation>自動連射 左</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Window.cpp" line="2043"/>
|
||||
<location filename="../Window.cpp" line="2048"/>
|
||||
<source>Clear</source>
|
||||
<translation>清除</translation>
|
||||
</message>
|
||||
|
|
|
@ -115,11 +115,4 @@ if(UNIX)
|
|||
install(FILES ${PROJECT_SOURCE_DIR}/doc/mgba.6 DESTINATION ${MANDIR}/man6 COMPONENT ${BINARY_NAME}-sdl)
|
||||
endif()
|
||||
|
||||
if(DISTBUILD AND CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||||
if(NOT APPLE)
|
||||
add_custom_command(TARGET ${BINARY_NAME}-sdl POST_BUILD COMMAND "${OBJCOPY}" --only-keep-debug "$<TARGET_FILE:${BINARY_NAME}-sdl>" "$<TARGET_FILE:${BINARY_NAME}-sdl>.debug")
|
||||
add_custom_command(TARGET ${BINARY_NAME}-sdl POST_BUILD COMMAND "${STRIP}" "$<TARGET_FILE:${BINARY_NAME}-sdl>")
|
||||
add_custom_command(TARGET ${BINARY_NAME}-sdl POST_BUILD COMMAND "${OBJCOPY}" --add-gnu-debuglink "$<TARGET_FILE:${BINARY_NAME}-sdl>.debug" "$<TARGET_FILE:${BINARY_NAME}-sdl>")
|
||||
install(FILES "$<TARGET_FILE:${BINARY_NAME}-sdl>.debug" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${BINARY_NAME}-sdl-dbg)
|
||||
endif()
|
||||
endif()
|
||||
debug_strip(${BINARY_NAME}-sdl)
|
||||
|
|
|
@ -46,10 +46,3 @@ if(BUILD_CINEMA)
|
|||
add_test(cinema ${BINARY_NAME}-cinema -v)
|
||||
install(TARGETS ${BINARY_NAME}-cinema DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${BINARY_NAME}-test)
|
||||
endif()
|
||||
|
||||
if(BUILD_ROM_TEST)
|
||||
add_executable(${BINARY_NAME}-rom-test ${CMAKE_CURRENT_SOURCE_DIR}/rom-test-main.c)
|
||||
target_link_libraries(${BINARY_NAME}-rom-test ${BINARY_NAME})
|
||||
target_compile_definitions(${BINARY_NAME}-rom-test PRIVATE "${OS_DEFINES};${FEATURE_DEFINES};${FUNCTION_DEFINES}")
|
||||
install(TARGETS ${BINARY_NAME}-rom-test DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${BINARY_NAME}-test)
|
||||
endif()
|
||||
|
|
|
@ -82,7 +82,7 @@ static struct mScriptConsole* _ensureConsole(struct mScriptContext* context) {
|
|||
|
||||
void mScriptContextAttachLogger(struct mScriptContext* context, struct mLogger* logger) {
|
||||
struct mScriptConsole* console = _ensureConsole(context);
|
||||
console->logger = logger;
|
||||
console->logger = logger ? logger : mLogGetContext();
|
||||
}
|
||||
|
||||
void mScriptContextDetachLogger(struct mScriptContext* context) {
|
||||
|
|
|
@ -421,7 +421,10 @@ bool mScriptContextLoadVF(struct mScriptContext* context, const char* name, stru
|
|||
if (!info.context) {
|
||||
return false;
|
||||
}
|
||||
return info.context->load(info.context, name, vf);
|
||||
if (!info.context->load(info.context, name, vf)) {
|
||||
return false;
|
||||
}
|
||||
return info.context->run(info.context);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_VFS
|
||||
|
|
|
@ -1573,7 +1573,19 @@ static int _luaRequireShim(lua_State* lua) {
|
|||
static int _luaPrintShim(lua_State* lua) {
|
||||
int n = lua_gettop(lua);
|
||||
|
||||
lua_getglobal(lua, "console");
|
||||
if (lua_getglobal(lua, "console") == LUA_TNIL) {
|
||||
// There is no console installed, so output to stdout
|
||||
lua_pop(lua, 1);
|
||||
for (int i = 1; i <= n; i++) {
|
||||
const char* str = luaL_tolstring(lua, i, NULL);
|
||||
if (i > 1) {
|
||||
printf("\t");
|
||||
}
|
||||
printf("%s", str);
|
||||
}
|
||||
printf("\n");
|
||||
return 0;
|
||||
}
|
||||
lua_insert(lua, 1);
|
||||
|
||||
// The first upvalue is either "log" or "warn"
|
||||
|
|
|
@ -130,6 +130,7 @@ void mScriptContextAttachStdlib(struct mScriptContext* context) {
|
|||
});
|
||||
mScriptContextExportConstants(context, "CHECKSUM", (struct mScriptKVPair[]) {
|
||||
mSCRIPT_CONSTANT_PAIR(mCHECKSUM, CRC32),
|
||||
mSCRIPT_CONSTANT_PAIR(mCHECKSUM, MD5),
|
||||
mSCRIPT_KV_SENTINEL
|
||||
});
|
||||
#ifdef M_CORE_GBA
|
||||
|
|
|
@ -133,14 +133,11 @@ bool extractArchive(struct VDir* archive, const char* root, bool prefix) {
|
|||
errno = 0;
|
||||
vfOut = VFileOpen(path, O_WRONLY | O_CREAT | O_TRUNC);
|
||||
if (!vfOut) {
|
||||
if (errno == EACCES) {
|
||||
#ifdef _WIN32
|
||||
Sleep(1000);
|
||||
#else
|
||||
sleep(1);
|
||||
#endif
|
||||
vfOut = VFileOpen(path, O_WRONLY | O_CREAT | O_TRUNC);
|
||||
} else if (errno == EISDIR) {
|
||||
int error = errno;
|
||||
struct stat st;
|
||||
if (error == EISDIR || (stat(path, &st) >= 0 && S_ISDIR(st.st_mode))) {
|
||||
// Windows maps STATUS_FILE_IS_A_DIRECTORY to ERROR_ACCESS_DENIED,
|
||||
// which then gets mapped to EACCESS, because everything is awful
|
||||
fprintf(logfile, "rm -r %s\n", path);
|
||||
if (!rmdirRecursive(VDirOpen(path))) {
|
||||
return false;
|
||||
|
@ -151,6 +148,13 @@ bool extractArchive(struct VDir* archive, const char* root, bool prefix) {
|
|||
RemoveDirectoryW(wpath);
|
||||
#else
|
||||
rmdir(path);
|
||||
#endif
|
||||
vfOut = VFileOpen(path, O_WRONLY | O_CREAT | O_TRUNC);
|
||||
} else if (error == EACCES || error == ETXTBSY) {
|
||||
#ifdef _WIN32
|
||||
Sleep(1000);
|
||||
#else
|
||||
sleep(1);
|
||||
#endif
|
||||
vfOut = VFileOpen(path, O_WRONLY | O_CREAT | O_TRUNC);
|
||||
}
|
||||
|
|
|
@ -163,7 +163,16 @@ bool GUISelectFile(struct GUIParams* params, char* outPath, size_t outLen, bool
|
|||
.subtitle = params->currentPath,
|
||||
};
|
||||
GUIMenuItemListInit(&menu.items, 0);
|
||||
_refreshDirectory(params, params->currentPath, &menu.items, filterName, filterContents, preselect);
|
||||
while (true) {
|
||||
if (_refreshDirectory(params, params->currentPath, &menu.items, filterName, filterContents, preselect)) {
|
||||
break;
|
||||
}
|
||||
if (strncmp(params->currentPath, params->basePath, PATH_MAX) == 0 || !params->currentPath[0]) {
|
||||
mLOG(GUI_MENU, ERROR, "Failed to load base directory");
|
||||
return false;
|
||||
}
|
||||
_upDirectory(params->currentPath);
|
||||
}
|
||||
menu.index = params->fileIndex;
|
||||
|
||||
while (true) {
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
DEFINE_VECTOR(GUIMenuItemList, struct GUIMenuItem);
|
||||
DEFINE_VECTOR(GUIMenuSavedList, struct GUIMenuSavedState);
|
||||
|
||||
mLOG_DEFINE_CATEGORY(GUI_MENU, "GUI Menu", "gui.menu");
|
||||
|
||||
void _itemNext(struct GUIMenuItem* item, bool wrap) {
|
||||
if (wrap || item->state < item->nStates - 1) {
|
||||
unsigned oldState = item->state;
|
||||
|
@ -117,12 +119,6 @@ static enum GUIMenuExitReason GUIMenuPollInput(struct GUIParams* params, struct
|
|||
state->cursor = GUIPollCursor(params, &state->cx, &state->cy);
|
||||
|
||||
// Check for new direction presses
|
||||
if (newInput & (1 << GUI_INPUT_UP) && menu->index > 0) {
|
||||
--menu->index;
|
||||
}
|
||||
if (newInput & (1 << GUI_INPUT_DOWN) && menu->index < GUIMenuItemListSize(&menu->items) - 1) {
|
||||
++menu->index;
|
||||
}
|
||||
if (newInput & (1 << GUI_INPUT_LEFT)) {
|
||||
struct GUIMenuItem* item = GUIMenuItemListGetPointer(&menu->items, menu->index);
|
||||
if (item->validStates && !item->readonly) {
|
||||
|
@ -143,6 +139,20 @@ static enum GUIMenuExitReason GUIMenuPollInput(struct GUIParams* params, struct
|
|||
menu->index = GUIMenuItemListSize(&menu->items) - 1;
|
||||
}
|
||||
}
|
||||
if (newInput & (1 << GUI_INPUT_UP)) {
|
||||
if (menu->index > 0) {
|
||||
--menu->index;
|
||||
} else {
|
||||
menu->index = GUIMenuItemListSize(&menu->items) - 1;
|
||||
}
|
||||
}
|
||||
if (newInput & (1 << GUI_INPUT_DOWN)) {
|
||||
if (menu->index < GUIMenuItemListSize(&menu->items) - 1) {
|
||||
++menu->index;
|
||||
} else {
|
||||
menu->index = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Handle cursor movement
|
||||
if (state->cursor != GUI_CURSOR_NOT_PRESENT) {
|
||||
|
|
Loading…
Reference in New Issue