From 8cd7e1b2c0530d050ac01954942d7fdc2eb59c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Sat, 8 Aug 2026 17:36:39 +0200 Subject: [PATCH] Delete all support for Qt Our Qt backend has long been left behind and doesn't even support Vulkan currently. There would be a lot of work to make it viable, and I don't think anyone is really interested. ImGui on SDL will soon fulfill the need for a more classic user interface with a menu bar on Linux, and on Mac we already have a native UI. --- .github/workflows/build.yml | 14 - .gitignore | 3 - AGENTS.md | 1 - CMakeLists.txt | 47 - Common/Common.vcxproj | 2 - Common/Common.vcxproj.filters | 6 - Common/Input/InputState.h | 2 +- Common/Render/Text/draw_text.cpp | 5 +- Common/Render/Text/draw_text_qt.cpp | 146 --- Common/Render/Text/draw_text_qt.h | 29 - Common/Render/Text/draw_text_uwp.cpp | 2 +- Common/Render/Text/draw_text_uwp.h | 2 +- Common/Render/Text/draw_text_win.cpp | 2 +- Common/Render/Text/draw_text_win.h | 2 +- Core/Config.cpp | 6 +- .../WebSocket/GPUBufferSubscriber.cpp | 7 - Core/Dialog/PSPOskDialog.cpp | 4 +- Core/HLE/sceUsbCam.cpp | 4 +- Qt/NKCodeFromQt.h | 106 -- Qt/PPSSPPQt.desktop | 8 - Qt/QtMain.cpp | 1046 --------------- Qt/QtMain.h | 187 --- Qt/languages/ppsspp_de.ts | 1077 ---------------- Qt/languages/ppsspp_en.ts | 889 ------------- Qt/languages/ppsspp_fr.ts | 1130 ---------------- Qt/languages/ppsspp_gr.ts | 1057 --------------- Qt/languages/ppsspp_hu.ts | 1057 --------------- Qt/languages/ppsspp_id.ts | 905 ------------- Qt/languages/ppsspp_it.ts | 889 ------------- Qt/languages/ppsspp_pl.ts | 1145 ----------------- Qt/languages/ppsspp_pt-br.ts | 1069 --------------- Qt/languages/ppsspp_ru.ts | 1089 ---------------- Qt/languages/ppsspp_zh-cn.ts | 1145 ----------------- Qt/languages/ppsspp_zh-tw.ts | 1145 ----------------- Qt/macbundle.sh | 33 - Qt/mainwindow.cpp | 699 ---------- Qt/mainwindow.h | 356 ----- Qt/resources/breakpoint.ico | Bin 766 -> 0 bytes Qt/resources/breakpointDisable.ico | Bin 766 -> 0 bytes UI/GameSettingsScreen.cpp | 2 +- UI/MiscScreens.cpp | 5 +- UI/NativeApp.cpp | 2 +- UWP/CommonUWP/CommonUWP.vcxproj | 2 - UWP/CommonUWP/CommonUWP.vcxproj.filters | 6 - Windows/PPSSPP.vcxproj | 41 - Windows/PPSSPP.vcxproj.filters | 21 - b.sh | 25 - 47 files changed, 16 insertions(+), 15404 deletions(-) delete mode 100644 Common/Render/Text/draw_text_qt.cpp delete mode 100644 Common/Render/Text/draw_text_qt.h delete mode 100644 Qt/NKCodeFromQt.h delete mode 100644 Qt/PPSSPPQt.desktop delete mode 100644 Qt/QtMain.cpp delete mode 100644 Qt/QtMain.h delete mode 100644 Qt/languages/ppsspp_de.ts delete mode 100644 Qt/languages/ppsspp_en.ts delete mode 100644 Qt/languages/ppsspp_fr.ts delete mode 100644 Qt/languages/ppsspp_gr.ts delete mode 100644 Qt/languages/ppsspp_hu.ts delete mode 100644 Qt/languages/ppsspp_id.ts delete mode 100644 Qt/languages/ppsspp_it.ts delete mode 100644 Qt/languages/ppsspp_pl.ts delete mode 100644 Qt/languages/ppsspp_pt-br.ts delete mode 100644 Qt/languages/ppsspp_ru.ts delete mode 100644 Qt/languages/ppsspp_zh-cn.ts delete mode 100644 Qt/languages/ppsspp_zh-tw.ts delete mode 100644 Qt/macbundle.sh delete mode 100644 Qt/mainwindow.cpp delete mode 100644 Qt/mainwindow.h delete mode 100644 Qt/resources/breakpoint.ico delete mode 100644 Qt/resources/breakpointDisable.ico diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 42560a7578..1e72f362c0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -213,12 +213,6 @@ jobs: args: ./b.sh --libretro_android ppsspp_libretro id: android-libretro - - os: ubuntu-26.04 - extra: qt - cc: gcc - cxx: g++ - args: ./b.sh --qt - id: qt - os: ubuntu-26.04 extra: libretro cc: gcc @@ -270,14 +264,6 @@ jobs: run: | git fetch --deepen=15000 --no-recurse-submodules --tags || exit 0 - - name: Install Qt - uses: jurplel/install-qt-action@48d3ad6db93f3627c8ee7a0454bc6f3744f7e730 # v4.3.1 - if: matrix.extra == 'qt' - with: - cache: true - version: 5.15.2 - setup-python: false - - name: Setup Android NDK uses: nttld/setup-ndk@ed92fe6cadad69be94a966a7ee3271275e62f779 # v1.6.0 if: matrix.extra == 'android' diff --git a/.gitignore b/.gitignore index dac6b5062a..89b166c2e2 100644 --- a/.gitignore +++ b/.gitignore @@ -60,9 +60,6 @@ ppsspp.ini imgui.ini PPSSPPControls.dat -# Qt Linguist files -*.qm - # Gradle/Android Studio .gradle .idea diff --git a/AGENTS.md b/AGENTS.md index 4a5bc27ab5..510478deaf 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -55,7 +55,6 @@ Windows/main.cpp ios/main.cpp SDL/SDLMain.cpp UWP/PPSSPP_UWPMain.cpp -Qt/main.cpp android/jni/app-android.cpp libretro/libretro.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index b9dfd4f445..5311b8d70e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,7 +182,6 @@ option(USING_X11_VULKAN "Set to OFF if target environment doesn't use X11 for Vu option(USE_WAYLAND_WSI "Enable or disable Wayland WSI support for Vulkan" ON) option(USE_VULKAN_DISPLAY_KHR "Enable or disable full screen display of Vulkan" ${USE_VULKAN_DISPLAY_KHR}) # :: Frontends -option(USING_QT_UI "Set to ON if you wish to use the Qt frontend wrapper" ${USING_QT_UI}) option(MOBILE_DEVICE "Set to ON when targeting a mobile device" ${MOBILE_DEVICE}) option(HEADLESS "Set to OFF to not generate the PPSSPPHeadless target" ${HEADLESS}) option(ATLAS_TOOL "Set to OFF to not generate the ATLAS_TOOL target" ${ATLAS_TOOL}) @@ -986,49 +985,6 @@ elseif(IOS AND NOT LIBRETRO) set(TargetBin PPSSPP) elseif(IOS AND LIBRETRO) list(APPEND targetExtraLibs "-framework GLKit") -elseif(USING_QT_UI) - set(CMAKE_AUTOMOC ON) - find_package(Qt5 COMPONENTS OpenGL Gui Core Multimedia) - if(NOT Qt5_FOUND) - message(FATAL_ERROR "Qt5 not found for USING_QT_UI=ON. On linux, sudo apt install qt5-qmake qtsystems5-dev qtmultimedia5-dev qttools5-dev-tools libqt5opengl5-dev libcurl4-openssl-dev. On macOS with Homebrew, install qt@5 and set CMAKE_PREFIX_PATH to /opt/homebrew/opt/qt@5 (or use ./b.sh --qtbrew).") - endif() - list(APPEND NativeAppSource - Qt/QtMain.cpp - Qt/QtMain.h - Qt/mainwindow.cpp - Qt/mainwindow.h - ) - add_compile_definitions(USING_QT_UI) - if(USING_GLES2) - add_compile_definitions(QT_OPENGL_ES QT_OPENGL_ES_2) - endif() - if(APPLE) - list(APPEND NativeAppSource - Common/Battery/AppleBatteryClient.m) - set_source_files_properties(Common/Battery/AppleBatteryClient.m - Common/Render/Text/draw_text_cocoa.mm - PROPERTIES COMPILE_FLAGS -fobjc-arc) - list(APPEND targetExtraLibs ${COCOA_LIBRARY} ${QUARTZ_CORE_LIBRARY} ${IOKIT_LIBRARY}) - endif() - include_directories(Qt) - include_directories(${CMAKE_CURRENT_BINARY_DIR}) - list(APPEND targetExtraLibs Qt5::OpenGL Qt5::Gui Qt5::Core Qt5::Multimedia) - set(TargetBin PPSSPPQt) - list(APPEND targetExtra - Common/Render/Text/draw_text_qt.cpp - Common/Render/Text/draw_text_qt.h - ) - - # Enable SDL joystick if SDL is found - if(SDL_LIB_TARGET) - add_compile_definitions(SDL) - list(APPEND targetExtra - SDL/SDLJoystick.h - SDL/SDLJoystick.cpp - ) - list(APPEND targetExtraLibs ${SDL_LIB_TARGET}) - endif() - elseif(WIN32) # Don't care about SDL. set(TargetBin PPSSPPWindows) @@ -1528,9 +1484,6 @@ if(TargetBin) else() add_executable(${TargetBin} MACOSX_BUNDLE ${ICON_PATH_ABS} ${NativeAssets} ${BigFontAssets} ${UIImages} ${SHADER_FILES} ${THEME_FILE} ${DEBUGGER_FILES} ${WEB_UPLOAD_FILES} ${FLASH0_FILES} ${LANG_FILES} ${NativeAppSource}) file(INSTALL "${CMAKE_SOURCE_DIR}/ext/vulkan/macOS/Frameworks/libMoltenVK.dylib" DESTINATION "${CMAKE_BINARY_DIR}/${TargetBin}.app/Contents/Frameworks/") - if(USING_QT_UI) - add_custom_command(TARGET ${TargetBin} POST_BUILD COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/Qt/macbundle.sh" "${CMAKE_BINARY_DIR}/PPSSPPQt.app") - endif() endif() elseif(WIN32) add_executable(${TargetBin} WIN32 ${NativeAppSource}) diff --git a/Common/Common.vcxproj b/Common/Common.vcxproj index 042a8472ac..b0c4a68747 100644 --- a/Common/Common.vcxproj +++ b/Common/Common.vcxproj @@ -503,7 +503,6 @@ true true - @@ -975,7 +974,6 @@ - diff --git a/Common/Common.vcxproj.filters b/Common/Common.vcxproj.filters index e9d3d4dca2..45235ce676 100644 --- a/Common/Common.vcxproj.filters +++ b/Common/Common.vcxproj.filters @@ -323,9 +323,6 @@ Render\Text - - Render\Text - Render\Text @@ -1097,9 +1094,6 @@ Render\Text - - Render\Text - Render\Text diff --git a/Common/Input/InputState.h b/Common/Input/InputState.h index 588af44509..5bce680231 100644 --- a/Common/Input/InputState.h +++ b/Common/Input/InputState.h @@ -183,7 +183,7 @@ ENUM_CLASS_BITOPS(KeyInputFlags); struct KeyInput { KeyInput() {} - // These utility constructors are used a lot in SDL/Qt. + // These utility constructors are used a lot in SDL. KeyInput(InputDeviceID devId, InputKeyCode code, KeyInputFlags fl) : deviceId(devId), keyCode(code), flags(fl) {} KeyInput(InputDeviceID devId, int unicode) : deviceId(devId), unicodeChar(unicode), flags(KeyInputFlags::CHAR) {} InputDeviceID deviceId; diff --git a/Common/Render/Text/draw_text.cpp b/Common/Render/Text/draw_text.cpp index 5e08919dc8..254cb7a7c7 100644 --- a/Common/Render/Text/draw_text.cpp +++ b/Common/Render/Text/draw_text.cpp @@ -16,7 +16,6 @@ #include "Common/Render/Text/draw_text.h" #include "Common/Render/Text/draw_text_win.h" #include "Common/Render/Text/draw_text_cocoa.h" -#include "Common/Render/Text/draw_text_qt.h" #include "Common/Render/Text/draw_text_android.h" #include "Common/Render/Text/draw_text_sdl.h" #include "Common/Render/Text/draw_text_uwp.h" @@ -301,7 +300,7 @@ TextDrawer *TextDrawer::Create(Draw::DrawContext *draw) { // No text drawer #elif PPSSPP_PLATFORM(UWP) drawer = new TextDrawerUWP(draw); -#elif defined(_WIN32) && !defined(USING_QT_UI) +#elif defined(_WIN32) // If RenderDoc is active, we can't use the UWP drawer since it uses D3D11 to initialize D2D, // and RenderDoc doesn't permit multiple graphics contexts. // Also, this seems to cause failures under Windows 7, so let's gate on Win 10 to be safe. @@ -312,8 +311,6 @@ TextDrawer *TextDrawer::Create(Draw::DrawContext *draw) { } #elif PPSSPP_PLATFORM(MAC) || PPSSPP_PLATFORM(IOS) drawer = new TextDrawerCocoa(draw); -#elif defined(USING_QT_UI) - drawer = new TextDrawerQt(draw); #elif PPSSPP_PLATFORM(ANDROID) drawer = new TextDrawerAndroid(draw); #elif USE_SDL3_TTF diff --git a/Common/Render/Text/draw_text_qt.cpp b/Common/Render/Text/draw_text_qt.cpp deleted file mode 100644 index 7fb0fc38fa..0000000000 --- a/Common/Render/Text/draw_text_qt.cpp +++ /dev/null @@ -1,146 +0,0 @@ -#include "Common/System/Display.h" -#include "Common/GPU/thin3d.h" -#include "Common/Data/Hash/Hash.h" -#include "Common/Data/Text/WrapText.h" -#include "Common/Data/Encoding/Utf8.h" -#include "Common/File/VFS/VFS.h" -#include "Common/Render/Text/draw_text.h" -#include "Common/Render/Text/draw_text_qt.h" - -#include "Common/Log.h" - -#if defined(USING_QT_UI) - -#include -#include -#include -#include -#include -#include - -TextDrawerQt::TextDrawerQt(Draw::DrawContext *draw) : TextDrawer(draw) { - // Add all fonts we ship with. - - std::vector filenames = GetAllFontFilenames(); - - for (const auto &iter : filenames) { - std::string fn = "assets/" + iter + ".ttf"; - size_t fontSize = 0; - uint8_t *fontData = g_VFS.ReadFile(fn.c_str(), &fontSize); - if (fontData) { - int fontID = QFontDatabase::addApplicationFontFromData(QByteArray((const char *)fontData, fontSize)); - delete[] fontData; - QStringList fontsFound = QFontDatabase::applicationFontFamilies(fontID); - if (fontsFound.size() == 0) { - WARN_LOG(Log::G3D, "Failed to load font from %s", fn.c_str()); - } else { - for (const auto &f : fontsFound) { - WARN_LOG(Log::G3D, "Loaded font %s from %s", f.toUtf8().constData(), fn.c_str()); - } - } - } else { - ERROR_LOG(Log::G3D, "Failed to load font file %s", fn.c_str()); - } - } -} - -TextDrawerQt::~TextDrawerQt() { - ClearCache(); - ClearFonts(); -} - -void TextDrawerQt::SetOrCreateFont(const FontStyle &style) { - auto iter = fontMap_.find(style); - if (iter != fontMap_.end()) { - fontStyle_ = style; - return; - } - - FontStyleFlags styleFlags; - std::string fontName = GetFontNameForFontStyle(style, &styleFlags); - - QFont *font = new QFont(fontName.c_str()); - font->setPixelSize((int)((style.sizePts + 6) / dpiScale_)); - font->setBold(styleFlags & FontStyleFlags::Bold); - if (styleFlags & FontStyleFlags::Light) { - font->setWeight(QFont::Light); - } - font->setItalic(styleFlags & FontStyleFlags::Italic); - font->setUnderline(styleFlags & FontStyleFlags::Underline); - font->setStrikeOut(styleFlags & FontStyleFlags::Strikethrough); - - fontMap_[style] = font; - fontStyle_ = style; -} - -void TextDrawerQt::MeasureStringInternal(std::string_view str, float *w, float *h) { - QFont* font = fontMap_.find(fontStyle_)->second; - QFontMetrics fm(*font); - QSize size = fm.size(0, QString::fromUtf8(str.data(), str.length())); - - *w = size.width(); - *h = size.height(); -} - -bool TextDrawerQt::DrawStringBitmap(std::vector &bitmapData, TextStringEntry &entry, Draw::DataFormat texFormat, std::string_view str, int align, bool fullColor) { - _dbg_assert_(!fullColor); - - if (str.empty()) { - bitmapData.clear(); - return false; - } - - QFont *font = fontMap_.find(fontStyle_)->second; - QFontMetrics fm(*font); - QSize size = fm.size(0, QString::fromUtf8(str.data(), str.length())); - QImage image((size.width() + 3) & ~3, (size.height() + 3) & ~3, QImage::Format_ARGB32_Premultiplied); - if (image.isNull()) { - bitmapData.clear(); - return false; - } - image.fill(0); - - QPainter painter; - painter.begin(&image); - painter.setFont(*font); - painter.setPen(0xFFFFFFFF); - // TODO: Involve ALIGN_HCENTER (bounds etc.) - painter.drawText(image.rect(), Qt::AlignTop | Qt::AlignLeft, QString::fromUtf8(str.data(), str.length())); - painter.end(); - - entry.texture = nullptr; - entry.bmWidth = entry.width = image.width(); - entry.bmHeight = entry.height = image.height(); - entry.lastUsedFrame = frameCount_; - - if (texFormat == Draw::DataFormat::B4G4R4A4_UNORM_PACK16 || texFormat == Draw::DataFormat::R4G4B4A4_UNORM_PACK16) { - bitmapData.resize(entry.bmWidth * entry.bmHeight * sizeof(uint16_t)); - uint16_t *bitmapData16 = (uint16_t *)&bitmapData[0]; - for (int x = 0; x < entry.bmWidth; x++) { - for (int y = 0; y < entry.bmHeight; y++) { - bitmapData16[entry.bmWidth * y + x] = AlphaToPremul4444(image.pixel(x, y) >> 24); - } - } - } else if (texFormat == Draw::DataFormat::R8_UNORM) { - bitmapData.resize(entry.bmWidth * entry.bmHeight); - for (int x = 0; x < entry.bmWidth; x++) { - for (int y = 0; y < entry.bmHeight; y++) { - bitmapData[entry.bmWidth * y + x] = image.pixel(x, y) >> 24; - } - } - } else { - _assert_msg_(false, "Bad TextDrawer format"); - } - return true; -} - -void TextDrawerQt::ClearFonts() { - // Also wipe the font map. - for (auto iter : fontMap_) { - delete iter.second; - } - fontMap_.clear(); - fontStyle_ = {}; -} - -#endif diff --git a/Common/Render/Text/draw_text_qt.h b/Common/Render/Text/draw_text_qt.h deleted file mode 100644 index 0f566fd9d9..0000000000 --- a/Common/Render/Text/draw_text_qt.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "ppsspp_config.h" - -#include -#include "Common/Render/Text/draw_text.h" - -#if defined(USING_QT_UI) - -class QFont; - -class TextDrawerQt : public TextDrawer { -public: - TextDrawerQt(Draw::DrawContext *draw); - ~TextDrawerQt(); - - void SetOrCreateFont(const FontStyle &style) override; - bool DrawStringBitmap(std::vector &bitmapData, TextStringEntry &entry, Draw::DataFormat texFormat, std::string_view str, int align, bool fullColor) override; - -protected: - void MeasureStringInternal(std::string_view str, float *w, float *h) override; - bool SupportsColorEmoji() const override { return false; } - - void ClearFonts() override; - - std::map fontMap_; -}; - -#endif diff --git a/Common/Render/Text/draw_text_uwp.cpp b/Common/Render/Text/draw_text_uwp.cpp index ecaf551d12..17c533276c 100644 --- a/Common/Render/Text/draw_text_uwp.cpp +++ b/Common/Render/Text/draw_text_uwp.cpp @@ -11,7 +11,7 @@ #include "Common/StringUtils.h" #include "Common/File/Path.h" -#if defined(_WIN32) && !defined(USING_QT_UI) +#if defined(_WIN32) #include diff --git a/Common/Render/Text/draw_text_uwp.h b/Common/Render/Text/draw_text_uwp.h index 1f177257a2..459008f136 100644 --- a/Common/Render/Text/draw_text_uwp.h +++ b/Common/Render/Text/draw_text_uwp.h @@ -5,7 +5,7 @@ #include #include "Common/Render/Text/draw_text.h" -#if defined(_WIN32) && !defined(USING_QT_UI) && !defined(__LIBRETRO__) +#if defined(_WIN32) && !defined(__LIBRETRO__) #include #include diff --git a/Common/Render/Text/draw_text_win.cpp b/Common/Render/Text/draw_text_win.cpp index 05bcf044bb..8e2e9b8e07 100644 --- a/Common/Render/Text/draw_text_win.cpp +++ b/Common/Render/Text/draw_text_win.cpp @@ -10,7 +10,7 @@ #include "Common/Log.h" #include "Common/StringUtils.h" -#if defined(_WIN32) && !defined(USING_QT_UI) && !PPSSPP_PLATFORM(UWP) +#if defined(_WIN32) && !PPSSPP_PLATFORM(UWP) #define WIN32_LEAN_AND_MEAN #include diff --git a/Common/Render/Text/draw_text_win.h b/Common/Render/Text/draw_text_win.h index 9b004a251c..1e40528395 100644 --- a/Common/Render/Text/draw_text_win.h +++ b/Common/Render/Text/draw_text_win.h @@ -5,7 +5,7 @@ #include #include "Common/Render/Text/draw_text.h" -#if defined(_WIN32) && !defined(USING_QT_UI) && !PPSSPP_PLATFORM(UWP) +#if defined(_WIN32) && !PPSSPP_PLATFORM(UWP) struct TextDrawerContext; // Internal struct but all details in .cpp file (pimpl to avoid pulling in excessive headers here) diff --git a/Core/Config.cpp b/Core/Config.cpp index 1dd9dfdd21..8d06ca3f13 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -414,7 +414,7 @@ static const ConfigSetting cpuSettings[] = { static int DefaultInternalResolution() { // Auto on Windows and Linux, 2x on large screens and iOS, 1x elsewhere. -#if defined(USING_WIN_UI) || defined(USING_QT_UI) +#if defined(USING_WIN_UI) return 0; #elif PPSSPP_PLATFORM(IOS) return 2; @@ -430,7 +430,7 @@ static int DefaultInternalResolution() { } static int DefaultFastForwardMode() { -#if PPSSPP_PLATFORM(ANDROID) || defined(USING_QT_UI) || PPSSPP_PLATFORM(UWP) || PPSSPP_PLATFORM(IOS) +#if PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(UWP) || PPSSPP_PLATFORM(IOS) return (int)FastForwardMode::SKIP_FLIP; #else return (int)FastForwardMode::CONTINUOUS; @@ -1104,7 +1104,7 @@ static const ConfigSetting systemParamSettings[] = { ConfigSetting("ButtonPreference", SETTING(g_Config, iButtonPreference), PSP_SYSTEMPARAM_BUTTON_CROSS, CfgFlag::PER_GAME | CfgFlag::REPORT), ConfigSetting("LockParentalLevel", SETTING(g_Config, iLockParentalLevel), 0, CfgFlag::PER_GAME), ConfigSetting("WlanAdhocChannel", SETTING(g_Config, iWlanAdhocChannel), PSP_SYSTEMPARAM_ADHOC_CHANNEL_AUTOMATIC, CfgFlag::PER_GAME), -#if defined(USING_WIN_UI) || defined(USING_QT_UI) || PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(SWITCH) +#if defined(USING_WIN_UI) || PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(SWITCH) ConfigSetting("BypassOSKWithKeyboard", SETTING(g_Config, bBypassOSKWithKeyboard), false, CfgFlag::PER_GAME), #endif ConfigSetting("WlanPowerSave", SETTING(g_Config, bWlanPowerSave), (bool) PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF, CfgFlag::PER_GAME), diff --git a/Core/Debugger/WebSocket/GPUBufferSubscriber.cpp b/Core/Debugger/WebSocket/GPUBufferSubscriber.cpp index 972ac82334..483ec4e9b6 100644 --- a/Core/Debugger/WebSocket/GPUBufferSubscriber.cpp +++ b/Core/Debugger/WebSocket/GPUBufferSubscriber.cpp @@ -16,10 +16,8 @@ // https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/. #include -#ifndef USING_QT_UI #include #include -#endif #include "Common/Data/Encoding/Base64.h" #include "Common/StringUtils.h" #include "Core/Debugger/WebSocket/GPUBufferSubscriber.h" @@ -42,10 +40,6 @@ DebuggerSubscriber *WebSocketGPUBufferInit(DebuggerEventHandlerMap &map) { // Note: Calls req.Respond(). Other data can be added afterward. static bool StreamBufferToDataURI(DebuggerRequest &req, const GPUDebugBuffer &buf, bool isFramebuffer, bool includeAlpha, int stackWidth) { -#ifdef USING_QT_UI - req.Fail("Not supported on Qt yet, pull requests accepted"); - return false; -#else u8 *flipbuffer = nullptr; u32 w = (u32)-1; u32 h = (u32)-1; @@ -157,7 +151,6 @@ static bool StreamBufferToDataURI(DebuggerRequest &req, const GPUDebugBuffer &bu // End the string. req.ws->AddFragment(false, "\""); return true; -#endif } static std::string DescribeFormat(GPUDebugBufferFormat fmt) { diff --git a/Core/Dialog/PSPOskDialog.cpp b/Core/Dialog/PSPOskDialog.cpp index 8f51d9d121..87c65b768b 100755 --- a/Core/Dialog/PSPOskDialog.cpp +++ b/Core/Dialog/PSPOskDialog.cpp @@ -791,7 +791,7 @@ int PSPOskDialog::NativeKeyboard() { return SCE_ERROR_UTILITY_INVALID_STATUS; } -#if defined(USING_WIN_UI) || defined(USING_QT_UI) || PPSSPP_PLATFORM(ANDROID) +#if defined(USING_WIN_UI) || PPSSPP_PLATFORM(ANDROID) bool beginInputBox = false; if (nativeStatus_ == PSPOskNativeStatus::IDLE) { std::lock_guard guard(nativeMutex_); @@ -887,7 +887,7 @@ int PSPOskDialog::Update(int animSpeed) { int selectedRow = selectedChar / numKeyCols[currentKeyboard]; int selectedExtra = selectedChar % numKeyCols[currentKeyboard]; -#if defined(USING_WIN_UI) || defined(USING_QT_UI) || PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(SWITCH) +#if defined(USING_WIN_UI) || PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(SWITCH) // Windows: Fall back to the OSK/continue normally if we're in fullscreen. // The dialog box doesn't work right if in fullscreen. if (System_GetPropertyBool(SYSPROP_HAS_KEYBOARD)) { diff --git a/Core/HLE/sceUsbCam.cpp b/Core/HLE/sceUsbCam.cpp index d33552122a..0530a337c8 100644 --- a/Core/HLE/sceUsbCam.cpp +++ b/Core/HLE/sceUsbCam.cpp @@ -354,7 +354,7 @@ int Camera::startCapture() { void* resolution = static_cast(new std::vector({ width, height })); winCamera->sendMessage({ CAPTUREDEVICE_COMMAND::START, resolution }); } - #elif PPSSPP_PLATFORM(MAC) || PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(IOS) || defined(USING_QT_UI) + #elif PPSSPP_PLATFORM(MAC) || PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(IOS) char command[40] = {0}; snprintf(command, sizeof(command), "startVideo_%dx%d", width, height); System_CameraCommand(command); @@ -369,7 +369,7 @@ int Camera::stopCapture() { if (winCamera) { winCamera->sendMessage({ CAPTUREDEVICE_COMMAND::STOP, nullptr }); } - #elif PPSSPP_PLATFORM(MAC) || PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(IOS) || defined(USING_QT_UI) + #elif PPSSPP_PLATFORM(MAC) || PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(IOS) System_CameraCommand("stopVideo"); #else ERROR_LOG(Log::HLE, "%s not implemented", __FUNCTION__); diff --git a/Qt/NKCodeFromQt.h b/Qt/NKCodeFromQt.h deleted file mode 100644 index dfc67beb0d..0000000000 --- a/Qt/NKCodeFromQt.h +++ /dev/null @@ -1,106 +0,0 @@ -#pragma once - -#include "Common/Data/Collections/ConstMap.h" -#include "Common/Input/KeyCodes.h" -#include - -// TODO: Add any missing keys -static const std::map KeyMapRawQttoNative = InitConstMap - (Qt::Key_P, NKCODE_P) - (Qt::Key_O, NKCODE_O) - (Qt::Key_I, NKCODE_I) - (Qt::Key_U, NKCODE_U) - (Qt::Key_Y, NKCODE_Y) - (Qt::Key_T, NKCODE_T) - (Qt::Key_R, NKCODE_R) - (Qt::Key_E, NKCODE_E) - (Qt::Key_W, NKCODE_W) - (Qt::Key_Q, NKCODE_Q) - (Qt::Key_L, NKCODE_L) - (Qt::Key_K, NKCODE_K) - (Qt::Key_J, NKCODE_J) - (Qt::Key_H, NKCODE_H) - (Qt::Key_G, NKCODE_G) - (Qt::Key_F, NKCODE_F) - (Qt::Key_D, NKCODE_D) - (Qt::Key_S, NKCODE_S) - (Qt::Key_A, NKCODE_A) - (Qt::Key_M, NKCODE_M) - (Qt::Key_N, NKCODE_N) - (Qt::Key_B, NKCODE_B) - (Qt::Key_V, NKCODE_V) - (Qt::Key_C, NKCODE_C) - (Qt::Key_X, NKCODE_X) - (Qt::Key_Z, NKCODE_Z) - (Qt::Key_P + 0x20, NKCODE_P) - (Qt::Key_O + 0x20, NKCODE_O) - (Qt::Key_I + 0x20, NKCODE_I) - (Qt::Key_U + 0x20, NKCODE_U) - (Qt::Key_Y + 0x20, NKCODE_Y) - (Qt::Key_T + 0x20, NKCODE_T) - (Qt::Key_R + 0x20, NKCODE_R) - (Qt::Key_E + 0x20, NKCODE_E) - (Qt::Key_W + 0x20, NKCODE_W) - (Qt::Key_Q + 0x20, NKCODE_Q) - (Qt::Key_L + 0x20, NKCODE_L) - (Qt::Key_K + 0x20, NKCODE_K) - (Qt::Key_J + 0x20, NKCODE_J) - (Qt::Key_H + 0x20, NKCODE_H) - (Qt::Key_G + 0x20, NKCODE_G) - (Qt::Key_F + 0x20, NKCODE_F) - (Qt::Key_D + 0x20, NKCODE_D) - (Qt::Key_S + 0x20, NKCODE_S) - (Qt::Key_A + 0x20, NKCODE_A) - (Qt::Key_M + 0x20, NKCODE_M) - (Qt::Key_N + 0x20, NKCODE_N) - (Qt::Key_B + 0x20, NKCODE_B) - (Qt::Key_V + 0x20, NKCODE_V) - (Qt::Key_C + 0x20, NKCODE_C) - (Qt::Key_X + 0x20, NKCODE_X) - (Qt::Key_Z + 0x20, NKCODE_Z) - (Qt::Key_Comma, NKCODE_COMMA) - (Qt::Key_Period, NKCODE_PERIOD) - (Qt::Key_Alt, NKCODE_ALT_LEFT) - (Qt::Key_Shift, NKCODE_SHIFT_LEFT) - (Qt::Key_Tab, NKCODE_TAB) - (Qt::Key_Space, NKCODE_SPACE) - (Qt::Key_Return, NKCODE_ENTER) - (Qt::Key_Minus, NKCODE_MINUS) - (Qt::Key_Minus, NKCODE_PLUS) - (Qt::Key_Equal, NKCODE_EQUALS) - (Qt::Key_BracketLeft, NKCODE_LEFT_BRACKET) - (Qt::Key_BracketRight, NKCODE_RIGHT_BRACKET) - (Qt::Key_Backslash, NKCODE_BACKSLASH) - (Qt::Key_Semicolon, NKCODE_SEMICOLON) - (Qt::Key_Apostrophe, NKCODE_APOSTROPHE) - (Qt::Key_Slash, NKCODE_SLASH) - (Qt::Key_At, NKCODE_AT) - (Qt::Key_PageUp, NKCODE_PAGE_UP) - (Qt::Key_PageDown, NKCODE_PAGE_DOWN) - (Qt::Key_Escape, NKCODE_ESCAPE) - (Qt::Key_Delete, NKCODE_FORWARD_DEL) - (Qt::Key_Control, NKCODE_CTRL_LEFT) - (Qt::Key_CapsLock, NKCODE_CAPS_LOCK) - (Qt::Key_Home, NKCODE_MOVE_HOME) - (Qt::Key_End, NKCODE_MOVE_END) - (Qt::Key_Insert, NKCODE_INSERT) - (Qt::Key_Period, NKCODE_NUMPAD_DOT) - (Qt::Key_Enter, NKCODE_NUMPAD_ENTER) - (Qt::Key_QuoteLeft, NKCODE_GRAVE) - (Qt::Key_1, NKCODE_1) - (Qt::Key_2, NKCODE_2) - (Qt::Key_3, NKCODE_3) - (Qt::Key_4, NKCODE_4) - (Qt::Key_5, NKCODE_5) - (Qt::Key_6, NKCODE_6) - (Qt::Key_7, NKCODE_7) - (Qt::Key_8, NKCODE_8) - (Qt::Key_9, NKCODE_9) - (Qt::Key_0, NKCODE_0) - (Qt::Key_Left, NKCODE_DPAD_LEFT) - (Qt::Key_Up, NKCODE_DPAD_UP) - (Qt::Key_Right, NKCODE_DPAD_RIGHT) - (Qt::Key_Down, NKCODE_DPAD_DOWN) - (Qt::Key_Back, NKCODE_BACK) - (Qt::Key_Backspace, NKCODE_DEL); - diff --git a/Qt/PPSSPPQt.desktop b/Qt/PPSSPPQt.desktop deleted file mode 100644 index b6eab983f7..0000000000 --- a/Qt/PPSSPPQt.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Terminal=false -Name=PPSSPP -Categories=Game; -Exec=PPSSPPQt %f -Icon=ppsspp.png diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp deleted file mode 100644 index 2717fe5992..0000000000 --- a/Qt/QtMain.cpp +++ /dev/null @@ -1,1046 +0,0 @@ -/* - * Copyright (c) 2012 Sacha Refshauge - * - */ -// Qt 4.7+ / 5.0+ implementation of the framework. -// Currently supports: Android, Linux, Windows, Mac OSX - -#include "ppsspp_config.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "ext/glslang/glslang/Public/ShaderLang.h" - -#if QT_VERSION > QT_VERSION_CHECK(5, 0, 0) -#include -#ifdef QT_HAS_SYSTEMINFO -#include -#endif -#endif - -#ifdef SDL -#include "SDL/SDLJoystick.h" -#include -#include -#endif - -#include "Common/Audio/AudioBackend.h" -#include "Common/System/NativeApp.h" -#include "Common/System/Request.h" -#include "Common/GPU/OpenGL/GLFeatures.h" -#include "Common/Math/math_util.h" -#include "Common/Profiler/Profiler.h" - -#include "QtMain.h" -#include "Qt/mainwindow.h" -#include "Common/Data/Text/I18n.h" -#include "Common/Thread/ThreadUtil.h" -#include "Common/Data/Encoding/Utf8.h" -#include "Common/StringUtils.h" -#include "Common/TimeUtil.h" -#include "Common/Log/LogManager.h" - -#include "Core/CmdLine.h" -#include "Core/Config.h" -#include "Core/ConfigValues.h" -#include "Core/EmuThread.h" -#include "Core/HW/Camera.h" -#include "Core/Debugger/SymbolMap.h" - -#include -#include - -// AUDIO -#define AUDIO_FREQ 44100 -#define AUDIO_CHANNELS 2 -#define AUDIO_SAMPLES 2048 -#define AUDIO_SAMPLESIZE 16 -#define AUDIO_BUFFERS 5 - -MainUI *emugl = nullptr; -static float refreshRate = 60.f; -static int browseFileEvent = -1; -static int browseFolderEvent = -1; -static int inputBoxEvent = -1; - -QTCamera *qtcamera = nullptr; -MainWindow *g_mainWindow; - -#ifdef SDL -SDL_AudioSpec g_retFmt; -static int g_audioFramesPerBuffer = 0; - -static SDL_AudioDeviceID audioDev = 0; -static SDL_AudioStream *audioStream = nullptr; - -static void sdl_mixaudio_callback(void *userdata, SDL_AudioStream *stream, int additional_amount, int total_amount) { - if (additional_amount <= 0) { - return; - } - const int frames = additional_amount / (int)(sizeof(int16_t) * 2); - if (frames <= 0) { - return; - } - std::vector mixBuf(frames * 2); - NativeMix(mixBuf.data(), frames, AUDIO_FREQ, userdata); - SDL_PutAudioStreamData(stream, mixBuf.data(), (int)(mixBuf.size() * sizeof(int16_t))); -} - -static void InitSDLAudioDevice() { - SDL_AudioSpec fmt{}; - fmt.freq = AUDIO_FREQ; - fmt.format = SDL_AUDIO_S16; - fmt.channels = AUDIO_CHANNELS; - g_audioFramesPerBuffer = std::max(g_Config.iSDLAudioBufferSize, 128); - - SDL_AudioDeviceID chosenDevice = SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK; - if (!g_Config.sAudioDevice.empty()) { - int deviceCount = 0; - SDL_AudioDeviceID *devices = SDL_GetAudioPlaybackDevices(&deviceCount); - for (int i = 0; devices && i < deviceCount; ++i) { - const char *deviceName = SDL_GetAudioDeviceName(devices[i]); - if (deviceName && g_Config.sAudioDevice == deviceName) { - chosenDevice = devices[i]; - break; - } - } - if (devices) { - SDL_free(devices); - } - if (chosenDevice == SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK) { - WARN_LOG(Log::Audio, "Failed to find preferred audio device %s", g_Config.sAudioDevice.c_str()); - } - } - - audioStream = SDL_OpenAudioDeviceStream(chosenDevice, &fmt, sdl_mixaudio_callback, nullptr); - if (!audioStream && chosenDevice != SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK) { - audioStream = SDL_OpenAudioDeviceStream(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &fmt, sdl_mixaudio_callback, nullptr); - } - - if (!audioStream) { - ERROR_LOG(Log::Audio, "Failed to open audio: %s", SDL_GetError()); - audioDev = 0; - return; - } - - audioDev = SDL_GetAudioStreamDevice(audioStream); - if (!SDL_GetAudioDeviceFormat(audioDev, &g_retFmt, &g_audioFramesPerBuffer)) { - g_retFmt = fmt; - } - if (g_retFmt.format != fmt.format || g_retFmt.channels != fmt.channels) { - ERROR_LOG(Log::Audio, "Sound buffer format does not match requested format."); - ERROR_LOG(Log::Audio, "Output audio freq: %d (requested: %d)", g_retFmt.freq, fmt.freq); - ERROR_LOG(Log::Audio, "Output audio format: %d (requested: %d)", g_retFmt.format, fmt.format); - ERROR_LOG(Log::Audio, "Output audio channels: %d (requested: %d)", g_retFmt.channels, fmt.channels); - } - - if (!SDL_ResumeAudioStreamDevice(audioStream)) { - ERROR_LOG(Log::Audio, "Failed to start audio stream: %s", SDL_GetError()); - SDL_DestroyAudioStream(audioStream); - audioStream = nullptr; - audioDev = 0; - } -} - -static void StopSDLAudioDevice() { - if (audioStream) { - SDL_DestroyAudioStream(audioStream); - audioStream = nullptr; - } - audioDev = 0; -} -#endif - -std::string System_GetProperty(SystemProperty prop) { - switch (prop) { - case SYSPROP_NAME: -#if defined(__ANDROID__) - return "Qt:Android"; -#elif defined(Q_OS_LINUX) - return "Qt:Linux"; -#elif defined(_WIN32) - return "Qt:Windows"; -#elif defined(Q_OS_MAC) - return "Qt:macOS"; -#else - return "Qt"; -#endif - case SYSPROP_LANGREGION: - return QLocale::system().name().toStdString(); - case SYSPROP_CLIPBOARD_TEXT: - return QApplication::clipboard()->text().toStdString(); -#if defined(SDL) - case SYSPROP_AUDIO_DEVICE_LIST: - { - std::string result; - int count = 0; - SDL_AudioDeviceID *devices = SDL_GetAudioPlaybackDevices(&count); - for (int i = 0; devices && i < count; ++i) { - const char *name = SDL_GetAudioDeviceName(devices[i]); - if (!name) { - continue; - } - - if (result.empty()) { - result = name; - } else { - result.append(1, '\0'); - result.append(name); - } - } - if (devices) { - SDL_free(devices); - } - return result; - } -#endif - case SYSPROP_BUILD_VERSION: - return PPSSPP_GIT_VERSION; - default: - return ""; - } -} - -class MyViewfinder : public QAbstractVideoSurface { - Q_OBJECT -public: - QList supportedPixelFormats(QAbstractVideoBuffer::HandleType handleType) const; - bool present(const QVideoFrame &frame); -}; - -static int qtc_ideal_width; -static int qtc_ideal_height; -static QCamera *qt_camera; -static QAbstractVideoSurface *qt_viewfinder; - -int __qt_startCapture(int width, int height); -int __qt_stopCapture(); - -std::vector __qt_getDeviceList() { - std::vector deviceList; - const QList cameras = QCameraInfo::availableCameras(); - for (const QCameraInfo &cameraInfo : cameras) { - deviceList.push_back(cameraInfo.deviceName().toStdString() - + " (" + cameraInfo.description().toStdString() + ")"); - } - return deviceList; -} - -QList MyViewfinder::supportedPixelFormats(QAbstractVideoBuffer::HandleType handleType) const { - Q_UNUSED(handleType); - // Return the formats you will support - return QList() - << QVideoFrame::Format_RGB24 - << QVideoFrame::Format_YUYV - ; -} - -bool MyViewfinder::present(const QVideoFrame &frame) { -#ifdef USE_FFMPEG - if (frame.isValid()) { - QVideoFrame cloneFrame(frame); - cloneFrame.map(QAbstractVideoBuffer::ReadOnly); - - unsigned char *jpegData = nullptr; - int jpegLen = 0; - - QVideoFrame::PixelFormat frameFormat = cloneFrame.pixelFormat(); - if (frameFormat == QVideoFrame::Format_RGB24) { - convert_frame(cloneFrame.size().width(), cloneFrame.size().height(), - (unsigned char*)cloneFrame.bits(), AV_PIX_FMT_RGB24, - qtc_ideal_width, qtc_ideal_height, &jpegData, &jpegLen); - - } else if (frameFormat == QVideoFrame::Format_YUYV) { - convert_frame(cloneFrame.size().width(), cloneFrame.size().height(), - (unsigned char*)cloneFrame.bits(), AV_PIX_FMT_YUYV422, - qtc_ideal_width, qtc_ideal_height, &jpegData, &jpegLen); - } - - if (jpegData) { - Camera::pushCameraImage(jpegLen, jpegData); - free(jpegData); - jpegData = nullptr; - } - - cloneFrame.unmap(); - return true; - } -#endif //USE_FFMPEG - return false; -} - -int __qt_startCapture(int width, int height) { - if (qt_camera != nullptr) { - ERROR_LOG(Log::HLE, "camera already started"); - return -1; - } - - char selectedCamera[81]{}; - if (sscanf(g_Config.sCameraDevice.c_str(), "%80s ", &selectedCamera[0]) != 1) { - selectedCamera[0] = '\0'; - } - - const QList availableCameras = QCameraInfo::availableCameras(); - if (availableCameras.size() < 1) { - delete qt_camera; - qt_camera = nullptr; - ERROR_LOG(Log::HLE, "no camera found"); - return -1; - } - for (const QCameraInfo &cameraInfo : availableCameras) { - if (cameraInfo.deviceName() == selectedCamera) { - qt_camera = new QCamera(cameraInfo); - } - } - if (qt_camera == nullptr) { - qt_camera = new QCamera(); - if (qt_camera == nullptr) { - ERROR_LOG(Log::HLE, "cannot open camera"); - return -1; - } - } - - qtc_ideal_width = width; - qtc_ideal_height = height; - - qt_viewfinder = new MyViewfinder; - - QCameraViewfinderSettings viewfinderSettings = qt_camera->viewfinderSettings(); - viewfinderSettings.setResolution(640, 480); - viewfinderSettings.setMinimumFrameRate(15.0); - viewfinderSettings.setMaximumFrameRate(15.0); - - qt_camera->setViewfinderSettings(viewfinderSettings); - qt_camera->setViewfinder(qt_viewfinder); - qt_camera->start(); - - return 0; -} - -int __qt_stopCapture() { - if (qt_camera != nullptr) { - qt_camera->stop(); - qt_camera->unload(); - delete qt_camera; - delete qt_viewfinder; - qt_camera = nullptr; - } - return 0; -} - -std::vector System_GetCameraDeviceList() { - return __qt_getDeviceList(); -} - -std::vector System_GetPropertyStringVec(SystemProperty prop) { - std::vector result; - switch (prop) { - case SYSPROP_TEMP_DIRS: - if (getenv("TMPDIR") && strlen(getenv("TMPDIR")) != 0) - result.push_back(getenv("TMPDIR")); - if (getenv("TMP") && strlen(getenv("TMP")) != 0) - result.push_back(getenv("TMP")); - if (getenv("TEMP") && strlen(getenv("TEMP")) != 0) - result.push_back(getenv("TEMP")); - return result; - - default: - return result; - } -} - -int64_t System_GetPropertyInt(SystemProperty prop) { - switch (prop) { -#if defined(SDL) - case SYSPROP_AUDIO_SAMPLE_RATE: - return g_retFmt.freq; - case SYSPROP_AUDIO_FRAMES_PER_BUFFER: - return g_audioFramesPerBuffer; - case SYSPROP_KEYBOARD_LAYOUT: - { - // TODO: Use Qt APIs for detecting this - char q, w, y; - q = SDL_GetKeyFromScancode(SDL_SCANCODE_Q, SDL_KMOD_NONE, false); - w = SDL_GetKeyFromScancode(SDL_SCANCODE_W, SDL_KMOD_NONE, false); - y = SDL_GetKeyFromScancode(SDL_SCANCODE_Y, SDL_KMOD_NONE, false); - if (q == 'a' && w == 'z' && y == 'y') - return KEYBOARD_LAYOUT_AZERTY; - else if (q == 'q' && w == 'w' && y == 'z') - return KEYBOARD_LAYOUT_QWERTZ; - return KEYBOARD_LAYOUT_QWERTY; - } -#endif - case SYSPROP_DEVICE_TYPE: -#if defined(__ANDROID__) - return DEVICE_TYPE_MOBILE; -#elif defined(Q_OS_LINUX) - return DEVICE_TYPE_DESKTOP; -#elif defined(_WIN32) - return DEVICE_TYPE_DESKTOP; -#elif defined(Q_OS_MAC) - return DEVICE_TYPE_DESKTOP; -#else - return DEVICE_TYPE_DESKTOP; -#endif - case SYSPROP_DISPLAY_COUNT: - return QApplication::screens().size(); - default: - return -1; - } -} - -float System_GetPropertyFloat(SystemProperty prop) { - switch (prop) { - case SYSPROP_DISPLAY_REFRESH_RATE: - return refreshRate; - case SYSPROP_DISPLAY_LOGICAL_DPI: - return QApplication::primaryScreen()->logicalDotsPerInch(); - case SYSPROP_DISPLAY_DPI: - return QApplication::primaryScreen()->physicalDotsPerInch(); - case SYSPROP_DISPLAY_SAFE_INSET_LEFT: - case SYSPROP_DISPLAY_SAFE_INSET_RIGHT: - case SYSPROP_DISPLAY_SAFE_INSET_TOP: - case SYSPROP_DISPLAY_SAFE_INSET_BOTTOM: - return 0.0f; - default: - return -1; - } -} - -bool System_GetPropertyBool(SystemProperty prop) { - switch (prop) { - case SYSPROP_HAS_TEXT_CLIPBOARD: - return true; - case SYSPROP_HAS_BACK_BUTTON: - return true; - case SYSPROP_HAS_IMAGE_BROWSER: - case SYSPROP_HAS_FILE_BROWSER: - case SYSPROP_HAS_FOLDER_BROWSER: - case SYSPROP_HAS_OPEN_DIRECTORY: - case SYSPROP_HAS_TEXT_INPUT_DIALOG: - case SYSPROP_CAN_SHOW_FILE: - return true; - case SYSPROP_SUPPORTS_OPEN_FILE_IN_EDITOR: - return true; // FileUtil.cpp: OpenFileInEditor - case SYSPROP_APP_GOLD: -#ifdef GOLD - return true; -#else - return false; -#endif - case SYSPROP_CAN_JIT: - return true; - case SYSPROP_HAS_KEYBOARD: - return true; - case SYSPROP_CAN_GET_FREE_SPACE_FAST: - return true; - default: - return false; - } -} - -void System_Notify(SystemNotification notification) { - switch (notification) { - case SystemNotification::BOOT_DONE: - g_symbolMap->SortSymbols(); - g_mainWindow->Notify(MainWindowMsg::BOOT_DONE); - break; - case SystemNotification::SYMBOL_MAP_UPDATED: - if (g_symbolMap) - g_symbolMap->SortSymbols(); - break; - case SystemNotification::AUDIO_RESET_DEVICE: -#ifdef SDL - StopSDLAudioDevice(); - InitSDLAudioDevice(); -#endif - break; - default: - break; - } -} - -// TODO: Find a better version to pass parameters to HandleCustomEvent. -static std::string g_param1; -static std::string g_param2; -static int g_param3; -static int g_requestId; - -bool MainUI::HandleCustomEvent(QEvent *e) { - if (e->type() == browseFileEvent) { - BrowseFileType fileType = (BrowseFileType)g_param3; - const char *filter = "All files (*.*)"; - switch (fileType) { - case BrowseFileType::BOOTABLE: - filter = "PSP ROMs (*.iso *.cso *.chd *.pbp *.elf *.zip *.ppdmp)"; - break; - case BrowseFileType::IMAGE: - filter = "Pictures (*.jpg *.png)"; - break; - case BrowseFileType::INI: - filter = "INI files (*.ini)"; - break; - case BrowseFileType::DB: - filter = "DB files (*.db)"; - break; - case BrowseFileType::SOUND_EFFECT: - filter = "WAVE files (*.wav *.mp3)"; - break; - case BrowseFileType::ZIP: - filter = "ZIP files (*.zip)"; - break; - case BrowseFileType::ATRAC3: - filter = "AT3 files (*.at3)"; - break; - case BrowseFileType::ANY: - break; - case BrowseFileType::SYMBOL_MAP: - filter = "PPSSPP symbol map files (*.ppmap)"; - break; - case BrowseFileType::SYMBOL_MAP_NOCASH: - filter = "NoCash symbol map files (*.sym)"; - break; - } - - QString fileName = QFileDialog::getOpenFileName(nullptr, g_param1.c_str(), g_Config.currentDirectory.c_str(), filter); - if (QFile::exists(fileName)) { - g_requestManager.PostSystemSuccess(g_requestId, fileName.toStdString().c_str()); - } else { - g_requestManager.PostSystemFailure(g_requestId); - } - } else if (e->type() == browseFolderEvent) { - QString title = QString::fromStdString(g_param1); - QString fileName = QFileDialog::getExistingDirectory(nullptr, title, g_Config.currentDirectory.c_str()); - if (QDir(fileName).exists()) { - g_requestManager.PostSystemSuccess(g_requestId, fileName.toStdString().c_str()); - } else { - g_requestManager.PostSystemFailure(g_requestId); - } - } else if (e->type() == inputBoxEvent) { - QString title = QString::fromStdString(g_param1); - QString defaultValue = QString::fromStdString(g_param2); - QString text = emugl->InputBoxGetQString(title, defaultValue); - if (text.isEmpty()) { - g_requestManager.PostSystemFailure(g_requestId); - } else { - g_requestManager.PostSystemSuccess(g_requestId, text.toStdString().c_str()); - } - } else { - return false; - } - return true; -} - -bool System_SendDebugOutput(std::string_view data) { return false; } -void System_SendDebugScreenshot(const uint8_t *data, int width, int height) {} - -bool System_MakeRequest(SystemRequestType type, int requestId, const std::string ¶m1, const std::string ¶m2, int64_t param3, int64_t param4) { - switch (type) { - case SystemRequestType::EXIT_APP: - qApp->exit(0); - return true; - case SystemRequestType::RESTART_APP: - // Should find a way to properly restart the app. - qApp->exit(0); - return true; - case SystemRequestType::COPY_TO_CLIPBOARD: - QApplication::clipboard()->setText(param1.c_str()); - return true; - case SystemRequestType::SET_WINDOW_TITLE: - { - std::string title = std::string("PPSSPP ") + PPSSPP_GIT_VERSION; - if (!param1.empty()) - title += std::string(" - ") + param1; -#ifdef _DEBUG - title += " (debug)"; -#endif - g_mainWindow->SetWindowTitleAsync(title); - return true; - } - case SystemRequestType::INPUT_TEXT_MODAL: - { - g_requestId = requestId; - g_param1 = param1; - g_param2 = param2; - g_param3 = param3; - QCoreApplication::postEvent(emugl, new QEvent((QEvent::Type)inputBoxEvent)); - return true; - } - case SystemRequestType::BROWSE_FOR_IMAGE: - // Fall back to file browser. - return System_MakeRequest(SystemRequestType::BROWSE_FOR_FILE, requestId, param1, param2, (int)BrowseFileType::IMAGE, 0); - case SystemRequestType::BROWSE_FOR_FILE: - g_requestId = requestId; - g_param1 = param1; - g_param2 = param2; - g_param3 = param3; - QCoreApplication::postEvent(emugl, new QEvent((QEvent::Type)browseFileEvent)); - return true; - case SystemRequestType::BROWSE_FOR_FOLDER: - g_requestId = requestId; - g_param1 = param1; - g_param2 = param2; - QCoreApplication::postEvent(emugl, new QEvent((QEvent::Type)browseFolderEvent)); - return true; - case SystemRequestType::CAMERA_COMMAND: - if (!strncmp(param1.c_str(), "startVideo", 10)) { - int width = 0, height = 0; - sscanf(param1.c_str(), "startVideo_%dx%d", &width, &height); - emit(qtcamera->onStartCamera(width, height)); - } else if (param1 == "stopVideo") { - emit(qtcamera->onStopCamera()); - } - return true; - case SystemRequestType::SHOW_FILE_IN_FOLDER: - QDesktopServices::openUrl(QUrl::fromLocalFile(QString::fromUtf8(param1.c_str()))); - return true; - default: - return false; - } -} - -void System_Toast(std::string_view text) {} - -void System_AskForPermission(SystemPermission permission) {} -PermissionStatus System_GetPermissionStatus(SystemPermission permission) { return PERMISSION_STATUS_GRANTED; } - -void System_Vibrate(int length_ms) { - if (length_ms == -1 || length_ms == -3) - length_ms = 50; - else if (length_ms == -2) - length_ms = 25; -} - -void System_LaunchUrl(LaunchUrlType urlType, std::string_view url) { - QDesktopServices::openUrl(QUrl(std::string(url).c_str())); -} - -AudioBackend *System_CreateAudioBackend() { - // Use legacy mechanisms. - return nullptr; -} - -static int mainInternal(QApplication &a) { -#ifdef MOBILE_DEVICE - emugl = new MainUI(); - emugl->resize(g_display.pixel_xres, g_display.pixel_yres); - emugl->showFullScreen(); -#endif - EnableFZ(); - // Disable screensaver -#if defined(QT_HAS_SYSTEMINFO) - QScreenSaver ssObject(emugl); - ssObject.setScreenSaverEnabled(false); -#endif - -#ifdef SDL - SDLJoystick joy(true); - joy.registerEventHandler(); - SDL_Init(SDL_INIT_AUDIO); - InitSDLAudioDevice(); -#else - QScopedPointer audio(new MainAudio()); - audio->run(); -#endif - - browseFileEvent = QEvent::registerEventType(); - browseFolderEvent = QEvent::registerEventType(); - inputBoxEvent = QEvent::registerEventType(); - - int retval = a.exec(); - delete emugl; - return retval; -} - -MainUI::MainUI(QWidget *parent) - : QGLWidget(parent) { - setAttribute(Qt::WA_AcceptTouchEvents); -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) - setAttribute(Qt::WA_LockLandscapeOrientation); -#endif -#if defined(MOBILE_DEVICE) - acc = new QAccelerometer(this); - acc->start(); -#endif - setFocus(); - setFocusPolicy(Qt::StrongFocus); - startTimer(16); -} - -MainUI::~MainUI() { - INFO_LOG(Log::System, "MainUI::Destructor"); - if (graphicsContext->NeedsSeparateEmuThread()) { - EmuThread_Join(graphicsContext, emuThread_); - } -#if defined(MOBILE_DEVICE) - delete acc; -#endif - graphicsContext->ShutdownSurface(); - graphicsContext->ShutdownAPI(); - delete graphicsContext; - graphicsContext = nullptr; -} - -QString MainUI::InputBoxGetQString(QString title, QString defaultValue) { - bool ok; - QString text = QInputDialog::getText(this, title, title, QLineEdit::Normal, defaultValue, &ok); - if (!ok) - text = QString(); - return text; -} - -void MainUI::resizeGL(int w, int h) { - if (Native_UpdateScreenScale(w, h, UIScaleFactorToMultiplier(g_Config.iUIScaleFactor))) { - System_PostUIMessage(UIMessage::GPU_RENDER_RESIZED); - } - xscale = w / this->width(); - yscale = h / this->height(); - - PSP_CoreParameter().pixelWidth = g_display.pixel_xres; - PSP_CoreParameter().pixelHeight = g_display.pixel_yres; -} - -void MainUI::timerEvent(QTimerEvent *) { - updateGL(); - emit newFrame(); -} - -void MainUI::changeEvent(QEvent *e) { - QGLWidget::changeEvent(e); - if (e->type() == QEvent::WindowStateChange) - Native_NotifyWindowHidden(isMinimized()); -} - -bool MainUI::event(QEvent *e) { - TouchInput input; - QList touchPoints; - - switch (e->type()) { - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - touchPoints = static_cast(e)->touchPoints(); - foreach (const QTouchEvent::TouchPoint &touchPoint, touchPoints) { - switch (touchPoint.state()) { - case Qt::TouchPointStationary: - break; - case Qt::TouchPointPressed: - case Qt::TouchPointReleased: - input.x = touchPoint.pos().x() * g_display.dpi_scale_x * xscale; - input.y = touchPoint.pos().y() * g_display.dpi_scale_y * yscale; - input.flags = (touchPoint.state() == Qt::TouchPointPressed) ? TouchInputFlags::DOWN : TouchInputFlags::UP; - input.id = touchPoint.id(); - NativeTouch(input); - break; - case Qt::TouchPointMoved: - input.x = touchPoint.pos().x() * g_display.dpi_scale_x * xscale; - input.y = touchPoint.pos().y() * g_display.dpi_scale_y * yscale; - input.flags = TouchInputFlags::MOVE; - input.id = touchPoint.id(); - NativeTouch(input); - break; - default: - break; - } - } - break; - case QEvent::MouseButtonDblClick: - if (!g_Config.bShowTouchControls || GetUIState() != UISTATE_INGAME) - emit doubleClick(); - break; - case QEvent::MouseButtonPress: - case QEvent::MouseButtonRelease: - switch(((QMouseEvent*)e)->button()) { - case Qt::LeftButton: - input.x = ((QMouseEvent*)e)->pos().x() * g_display.dpi_scale_x * xscale; - input.y = ((QMouseEvent*)e)->pos().y() * g_display.dpi_scale_y * yscale; - input.flags = ((e->type() == QEvent::MouseButtonPress) ? TouchInputFlags::DOWN : TouchInputFlags::UP) | TouchInputFlags::MOUSE; - input.id = 0; - NativeTouch(input); - break; - case Qt::RightButton: - NativeKey(KeyInput(DEVICE_ID_MOUSE, NKCODE_EXT_MOUSEBUTTON_2, (e->type() == QEvent::MouseButtonPress) ? KeyInputFlags::DOWN : KeyInputFlags::UP)); - break; - case Qt::MiddleButton: - NativeKey(KeyInput(DEVICE_ID_MOUSE, NKCODE_EXT_MOUSEBUTTON_3, (e->type() == QEvent::MouseButtonPress) ? KeyInputFlags::DOWN : KeyInputFlags::UP)); - break; - case Qt::ExtraButton1: - NativeKey(KeyInput(DEVICE_ID_MOUSE, NKCODE_EXT_MOUSEBUTTON_4, (e->type() == QEvent::MouseButtonPress) ? KeyInputFlags::DOWN : KeyInputFlags::UP)); - break; - case Qt::ExtraButton2: - NativeKey(KeyInput(DEVICE_ID_MOUSE, NKCODE_EXT_MOUSEBUTTON_5, (e->type() == QEvent::MouseButtonPress) ? KeyInputFlags::DOWN : KeyInputFlags::UP)); - break; - default: - break; - } - break; - case QEvent::MouseMove: - input.x = ((QMouseEvent*)e)->pos().x() * g_display.dpi_scale_x * xscale; - input.y = ((QMouseEvent*)e)->pos().y() * g_display.dpi_scale_y * yscale; - input.flags = TouchInputFlags::MOVE | TouchInputFlags::MOUSE; - input.id = 0; - NativeTouch(input); - break; - case QEvent::Wheel: - { - const QPoint wheelDelta = ((QWheelEvent *)e)->angleDelta(); - const int delta = wheelDelta.y() != 0 ? wheelDelta.y() : wheelDelta.x(); - if (delta != 0) { - NativeKey(KeyInput(DEVICE_ID_MOUSE, delta < 0 ? NKCODE_EXT_MOUSEWHEEL_DOWN : NKCODE_EXT_MOUSEWHEEL_UP, KeyInputFlags::DOWN)); - } - } - break; - case QEvent::KeyPress: - { - auto qtKeycode = ((QKeyEvent*)e)->key(); - auto iter = KeyMapRawQttoNative.find(qtKeycode); - InputKeyCode nativeKeycode = NKCODE_UNKNOWN; - if (iter != KeyMapRawQttoNative.end()) { - nativeKeycode = iter->second; - NativeKey(KeyInput(DEVICE_ID_KEYBOARD, nativeKeycode, KeyInputFlags::DOWN)); - } - - // Also get the unicode value. - QString text = ((QKeyEvent*)e)->text(); - std::string str = text.toStdString(); - // Now, we don't want CHAR events for non-printable characters. Not quite sure how we'll best - // do that, but here's one attempt.... - switch (nativeKeycode) { - case NKCODE_DEL: - case NKCODE_FORWARD_DEL: - case NKCODE_TAB: - break; - default: - if (str.size()) { - int pos = 0; - int unicode = u8_nextchar(str.c_str(), &pos, str.size()); - NativeKey(KeyInput(DEVICE_ID_KEYBOARD, unicode)); - } - break; - } - } - break; - case QEvent::KeyRelease: - NativeKey(KeyInput(DEVICE_ID_KEYBOARD, KeyMapRawQttoNative.find(((QKeyEvent*)e)->key())->second, KeyInputFlags::UP)); - break; - - default: - // Can't switch on dynamic event types. - if (!HandleCustomEvent(e)) { - return QWidget::event(e); - } - } - e->accept(); - return true; -} - -void MainUI::initializeGL() { - if (g_Config.iGPUBackend != (int)GPUBackend::OPENGL) { - INFO_LOG(Log::System, "Only GL supported under Qt - switching."); - g_Config.iGPUBackend = (int)GPUBackend::OPENGL; - } - - bool useCoreContext = format().profile() == QGLFormat::CoreProfile; - - SetGLCoreContext(useCoreContext); - -#ifndef USING_GLES2 - // Some core profile drivers elide certain extensions from GL_EXTENSIONS/etc. - // glewExperimental allows us to force GLEW to search for the pointers anyway. - if (useCoreContext) { - glewExperimental = true; - } - glewInit(); - // Unfortunately, glew will generate an invalid enum error, ignore. - if (useCoreContext) { - glGetError(); - } -#endif - if (g_Config.iGPUBackend == (int)GPUBackend::OPENGL) { - // OpenGL uses a background thread to do the main processing and only renders on the gl thread. - INFO_LOG(Log::System, "Initializing GL graphics context"); - graphicsContext = new QtGLGraphicsContext(); - std::string errorMessage; - graphicsContext->InitAPI(nullptr, nullptr, &errorMessage); - graphicsContext->InitSurface(WINDOWSYSTEM_NONE, nullptr, nullptr, &errorMessage); - INFO_LOG(Log::System, "Using thread, starting emu thread"); - emuThread_ = EmuThread_Start(graphicsContext, new NativeApplication(), [this](GraphicsContext *graphicsContext){ - NativeFrame(graphicsContext); - updateAccelerometer(); - return true; - }); - } else { - INFO_LOG(Log::System, "Not using thread, backend=%d", (int)g_Config.iGPUBackend); - } -} - -void MainUI::paintGL() { -#ifdef SDL - SDL_PumpEvents(); -#endif - updateAccelerometer(); - if (graphicsContext->NeedsSeparateEmuThread()) { - graphicsContext->ThreadFrame(); - // Do the rest in EmuThreadFunc - } else { - NativeFrame(graphicsContext); - } -} - -void MainUI::updateAccelerometer() { -#if defined(MOBILE_DEVICE) - // TODO: Toggle it depending on whether it is enabled - QAccelerometerReading *reading = acc->reading(); - if (reading) { - NativeAccelerometer(reading->x(), reading->y(), reading->z()); - } -#endif -} - -#ifndef SDL - -MainAudio::~MainAudio() { - if (feed != nullptr) { - killTimer(timer); - feed->close(); - } - if (output) { - output->stop(); - delete output; - } - if (mixbuf) - free(mixbuf); -} - -void MainAudio::run() { - QAudioFormat fmt; - fmt.setSampleRate(AUDIO_FREQ); - fmt.setCodec("audio/pcm"); - fmt.setChannelCount(AUDIO_CHANNELS); - fmt.setSampleSize(AUDIO_SAMPLESIZE); - fmt.setByteOrder(QAudioFormat::LittleEndian); - fmt.setSampleType(QAudioFormat::SignedInt); - mixlen = sizeof(short)*AUDIO_BUFFERS*AUDIO_CHANNELS*AUDIO_SAMPLES; - mixbuf = (char*)malloc(mixlen); - output = new QAudioOutput(fmt); - output->setBufferSize(mixlen); - feed = output->start(); - if (feed != nullptr) { - // buffering has already done in the internal mixed buffer - // use a small interval to copy mixed audio stream from - // internal buffer to audio output buffer as soon as possible - // use 1 instead of 0 to prevent CPU exhausting - timer = startTimer(1); - } -} - -void MainAudio::timerEvent(QTimerEvent *) { - memset(mixbuf, 0, mixlen); - NativeMix((short *)mixbuf, AUDIO_BUFFERS * AUDIO_SAMPLES, AUDIO_FREQ); - feed->write(mixbuf, sizeof(short) * AUDIO_CHANNELS * frames); -} - -#endif - -void QTCamera::startCamera(int width, int height) { - __qt_startCapture(width, height); -} - -void QTCamera::stopCamera() { - __qt_stopCapture(); -} - -#ifndef SDL -Q_DECL_EXPORT -#endif -int main(int argc, char *argv[]) -{ - TimeInit(); - - g_logManager.EnableOutput(LogOutput::Stdio); - - CommandLineOptions cmdLineOptions; - CommandLineParseResult parseResult = cmdLineOptions.Parse(argc, (const char **)argv); - switch (parseResult) { - case CommandLineParseResult::Exit: - return 0; - case CommandLineParseResult::Error: - return 1; - default: - // Continue with launch. - break; - } - - // Ignore sigpipe. - if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { - perror("Unable to ignore SIGPIPE"); - } - - PROFILE_INIT(); - glslang::InitializeProcess(); - - // Qt would otherwise default to a 3.0 compatibility profile - // except on Nvidia, where Nvidia gives us the highest supported anyway - QGLFormat format; - format.setVersion(4, 6); - format.setProfile(QGLFormat::CoreProfile); - QGLFormat::setDefaultFormat(format); - - QApplication a(argc, argv); - QScreen* screen = a.primaryScreen(); - QSizeF res = screen->physicalSize(); - - if (res.width() < res.height()) - res.transpose(); - - // We assume physicalDotsPerInchY is the same as PerInchX. - float dpi_scale_x = screen->logicalDotsPerInchX() / screen->physicalDotsPerInchX(); - float dpi_scale_y = screen->logicalDotsPerInchY() / screen->physicalDotsPerInchY(); - g_display.Recalculate(res.width(), res.height(), dpi_scale_x, dpi_scale_y, UIScaleFactorToMultiplier(g_Config.iUIScaleFactor)); - - refreshRate = screen->refreshRate(); - - qtcamera = new QTCamera; - QObject::connect(qtcamera, SIGNAL(onStartCamera(int, int)), qtcamera, SLOT(startCamera(int, int))); - QObject::connect(qtcamera, SIGNAL(onStopCamera()), qtcamera, SLOT(stopCamera())); - - std::string savegame_dir = "."; - std::string external_dir = "."; -#if QT_VERSION > QT_VERSION_CHECK(5, 0, 0) - savegame_dir = QStandardPaths::writableLocation(QStandardPaths::HomeLocation).toStdString(); - external_dir = QStandardPaths::writableLocation(QStandardPaths::DataLocation).toStdString(); -#endif - savegame_dir += "/"; - external_dir += "/"; - - NativeInit(argc, (const char **)argv, cmdLineOptions, savegame_dir.c_str(), external_dir.c_str(), nullptr); - - g_mainWindow = new MainWindow(nullptr, g_Config.bFullScreen); - g_mainWindow->show(); - - // TODO: Support other backends than GL, like Vulkan, in the Qt backend. - g_Config.iGPUBackend = (int)GPUBackend::OPENGL; - - int ret = mainInternal(a); - INFO_LOG(Log::System, "Left mainInternal here."); - -#ifdef SDL - StopSDLAudioDevice(); -#endif - NativeShutdown(); - glslang::FinalizeProcess(); - return ret; -} - -#include "QtMain.moc" diff --git a/Qt/QtMain.h b/Qt/QtMain.h deleted file mode 100644 index a728c127e5..0000000000 --- a/Qt/QtMain.h +++ /dev/null @@ -1,187 +0,0 @@ -#ifndef QTMAIN_H -#define QTMAIN_H - -#include -#include -#include -#include "Common/GPU/OpenGL/GLSLProgram.h" -#include - -#ifndef SDL -#include -#include -#endif -#if defined(MOBILE_DEVICE) -#include -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) -QTM_USE_NAMESPACE -#endif -#endif - -#include -#include -#include - -#include "Common/System/Display.h" -#include "Common/TimeUtil.h" -#include "Common/File/VFS/VFS.h" -#include "Common/File/VFS/DirectoryReader.h" -#include "Common/GPU/OpenGL/GLCommon.h" -#include "Common/GPU/OpenGL/GLFeatures.h" -#include "Common/Input/InputState.h" -#include "Common/Input/KeyCodes.h" -#include "Common/GPU/thin3d.h" -#include "Common/Net/Resolve.h" -#include "NKCodeFromQt.h" - -#include "Common/GPU/GraphicsContext.h" -#include "Core/Core.h" -#include "Core/Config.h" -#include "Core/ConfigValues.h" -#include "Core/System.h" -#include "Common/GPU/thin3d_create.h" -#include "Common/GPU/OpenGL/GLRenderManager.h" - -// Input -void SimulateGamepad(); - -class QtGLGraphicsContext : public GraphicsContext { -public: - bool InitAPI(void *wnd, std::string *deviceName, std::string *errorMessage) override { - CheckGLExtensions(); - SetGPUBackend(GPUBackend::OPENGL); - // Not used in this context. - return true; - } - - bool InitSurface(WindowSystem winsys, void *data1, void *data2, std::string *errorMessage) override { - // Not used in this context. - draw_ = Draw::T3DCreateGLContext(false); - renderManager_ = (GLRenderManager *)draw_->GetNativeObject(Draw::NativeObject::RENDER_MANAGER); - renderManager_->SetInflightFrames(g_Config.iInflightFrames); - bool success = draw_->CreatePresets(); - _assert_msg_(success, "Failed to compile preset shaders"); - return true; - } - - bool NeedsSeparateEmuThread() const override { return true; } - - void ShutdownSurface() override { - delete draw_; - draw_ = nullptr; - renderManager_ = nullptr; - } - void Resize() override {} - - Draw::DrawContext *GetDrawContext() override { - return draw_; - } - - void ThreadStart() override { - renderManager_->ThreadStart(draw_); - } - - bool ThreadFrame() override { - return renderManager_->ThreadFrame(); - } - - void ThreadEnd() override { - renderManager_->ThreadEnd(); - } - - void NotifyEmuThreadExit() override { - renderManager_->NotifyEmuThreadExit(); - } - -private: - Draw::DrawContext *draw_ = nullptr; - GLRenderManager *renderManager_ = nullptr; -}; - -enum class EmuThreadState { - DISABLED, - START_REQUESTED, - RUNNING, - QUIT_REQUESTED, - STOPPED, -}; - - -// GUI, thread manager -class MainUI : public QGLWidget { - Q_OBJECT -public: - explicit MainUI(QWidget *parent = 0); - ~MainUI(); - - void resizeGL(int w, int h); - -public slots: - QString InputBoxGetQString(QString title, QString defaultValue); - -signals: - void doubleClick(); - void newFrame(); - -protected: - void timerEvent(QTimerEvent *); - void changeEvent(QEvent *e); - bool event(QEvent *e); - - void initializeGL(); - void paintGL(); - - void updateAccelerometer(); - -private: - bool HandleCustomEvent(QEvent *e); - QtGLGraphicsContext *graphicsContext; - - float xscale, yscale; -#if defined(MOBILE_DEVICE) - QAccelerometer* acc; -#endif - - std::thread emuThread_; -}; - -class QTCamera : public QObject { - Q_OBJECT -public: - QTCamera() {} - ~QTCamera() {}; - -signals: - void onStartCamera(int width, int height); - void onStopCamera(); - -public slots: - void startCamera(int width, int height); - void stopCamera(); -}; - -extern MainUI* emugl; - -#ifndef SDL - -// AUDIO -class MainAudio : public QObject { - Q_OBJECT -public: - MainAudio() {} - ~MainAudio(); -public slots: - void run(); -protected: - void timerEvent(QTimerEvent *); -private: - QIODevice* feed; - QAudioOutput* output; - int mixlen; - char* mixbuf; - int timer; -}; - -#endif //SDL - -#endif diff --git a/Qt/languages/ppsspp_de.ts b/Qt/languages/ppsspp_de.ts deleted file mode 100644 index e2da0333a7..0000000000 --- a/Qt/languages/ppsspp_de.ts +++ /dev/null @@ -1,1077 +0,0 @@ - - - - - Controls - - Controls - Controls window title - Steuerung - - - - CtrlDisAsmView - - - Copy &address - &Adresse kopieren - - - - Copy instruction (&hex) - Anweisung kopieren (&Hex) - - - - Copy instruction (&disasm) - Anweisung kopieren (&Disasm) - - - - &Run to here - Bis hier &ausführen - - - - &Set Next Statement - Nächste Anweisung &festlegen - - - - &Toggle breakpoint - Hal&tepunkt umschalten - - - - &Follow branch - Zweig &folgen - - - - Go to in &Memory View - In &Speicheranzeige dazu gehen - - - - &Rename function... - Funktion &umbenennen... - - - - New function name - Neuer Funktionsname - - - - New function name: - Neuer Funktionsname: - - - - Warning - Warnung - - - - No symbol selected - Kein Symbol ausgewählt - - - - CtrlMemView - - - Go to in &disasm - In &Disasm dazu gehen - - - - &Copy value - Wert &kopieren - - - - C&hange value - Wert ä&ndern - - - - Dump... - Speicherauszug... - - - - Set new value - Neuen Wert festlegen - - - - Set new value: - Neuen Wert festlegen: - - - - CtrlRegisterList - - - Go to in &memory view - In &Speicheranzeige dazu gehen - - - - Go to in &disasm - In &Disasm dazu gehen - - - - &Copy value - Wert &kopieren - - - - C&hange... - Ä&ndern... - - - - Set new value - Neuen Wert festlegen - - - - Set new value: - Neuen Wert festlegen: - - - - Debugger_Disasm - - - Disassembler - Window title - Disassembler - - - - Ctr: - Ctr: - - - - &Go to - &Gehe zu - - - - &PC - &PC - - - - &LR - &LR - - - - Show VFPU - Zeige VFPU - - - - Regs - Reg. - - - - Funcs - Funk. - - - - &Go - &Los - - - - Stop - Stopp - - - - Step &Into - Schritt &hinein - - - - Step &Over - Schritt &über - - - - S&kip - &Überspringen - - - - Next &HLE - Nächste &HLE - - - - Breakpoints - Haltepunkte - - - - Address - Adresse - - - - Clear All - Alles löschen - - - - Callstack - Aufrufstapel - - - - Display Lists - Listen anzeigen - - - - - Id - Kennung - - - - - Status - Status - - - - Start Address - Startadresse - - - - Current Address - Aktuelle Adresse - - - - Threads - Threads - - - - Name - Name - - - - Current PC - Aktueller PC - - - - Entry point - Einsprungpunkt - - - - Remove breakpoint - Haltepunkt entfernen - - - - Go to entry point - Zum Einsprungpunkt gehen - - - - Change status - Status ändern - - - - Running - Läuft - - - - Wait - Warten - - - - Suspend - Unterbrechen - - - - Debugger_DisplayList - - - Dialog - Dialog - - - - DisplayList - - - - - Id - Kennung - - - - Status - Status - - - - Start Address - Startadresse - - - - Current Address - Aktuelle Adresse - - - - Run - Start - - - - Stop - Stopp - - - - Next DL - Nächste DL - - - - Commands - Befehle - - - - Step - Schritt - - - - Next Draw - - - - - Goto PC - Zu PC gehen - - - - Textures - Texturen - - - - - Address - Adresse - - - - - Width - Breite - - - - - Height - Höhe - - - - - Format - Format - - - - Vertex Buffer - Vertexpuffer - - - - Coord Type - Koordinatentyp - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - Hat Bedeutung - - - - Has Position - Hat Position - - - - Has Normal - Hat Normal - - - - Has Color - Hat Farbe - - - - Has UV - Hat UV - - - - Values - Werte - - - - - Next 20 - Nächste 20 - - - - Index Buffer - Indexpuffer - - - - Idx - Idx - - - - Value - Wert - - - - Framebuffer - Bildspeicher - - - - VAddress - - - - - Display : - Anzeige : - - - - Color - Farbe - - - - Depth - Tiefe - - - - Zoom- - Zoom- - - - - Zoom+ - Zoom+ - - - - Run to here - Bis hier ausführen - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - Dialog - - - - Goto: - Gehe zu: - - - - Mode - Modus - - - - Normal - Normal - - - - Symbols - Symbole - - - - Memory Viewer - %1 - Speicheranzeige - %1 - - - - Debugger_MemoryTex - - - Dialog - Dialog - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - Lesen - - - - Debugger_VFPU - - - VFPU - VFPU - - - - Float - Fließ - - - - HalfFloat - HalbFließ - - - - Hex - Hex - - - - Bytes - Bytes - - - - Shorts - - - - - Ints - - - - - MainWindow - - PPSSPP - PPSSPP - - - - &File - &Datei - - - - Quickload State - Spielstand schnellladen - - - - Quicksave State - Spielstand schnellspeichern - - - - &Emulation - &Emulation - - - - Re&set - Zurück&setzen - - - - Run on &load - Beim &Laden ausführen - - - - Load Map File... - Abbildungsdatei laden... - - - - Save Map File... - Abbildungsdatei speichern... - - - - Reset Symbol Table - Symboltabelle zurücksetzen - - - - Dump next frame to log - Speicherauszug des nächsten Bildes protokollieren - - - - Disassembly - Disassemblierung - - - - Display List... - Liste anzeigen... - - - - Log Console - Protokollkonsole - - - - Memory View - Speicheranzeige - - - - Memory View Texture - Speicheranzeigetextur - - - - &Options - &Optionen - - - - &CPU Dynarec - &CPU Dynarec - - - - &Vertex Decoder Dynarec - - - - - Fast &Memory (unstable) - Schneller &Speicher (instabil) - - - &Ignore illegal reads/writes - &Ignoriere illegales lesen/schreiben> - - - - &Stretch to Display - Auf Bildschirm &strecken - - - - &Vertex Cache - &Vertex Cache - - - - &Frameskip - V&ollbildübersprung - - - - &Audio - &Audio - - - - &Fullscreen - &Vollbild - - - - &Show debug statistics - Debug-Statistiken &anzeigen - - - - &Show FPS - FPS &anzeigen - - - G3D - G3D - - - HLE - HLE - - - - &Go to official website - Zur offiziellen Webseite &gehen - - - Default - Standard - - - - &Language - &Sprache - - - - &Video - &Video - - - &Anisotropic filtering - &Anisotrope Filterung - - - &Zoom - &Zoom - - - Co&ntrols - Ta&stenbelegung - - - - &Core - &Kern - - - - &Help - &Hilfe - - - - &Open... - &Öffnen... - - - - &Close - &Schließen - - - Quickload state - Spielstand schnellladen - - - F4 - F4 - - - Quicksave state - Spielstand schnellspeichern - - - F2 - F2 - - - - &Load State File... - Spielstanddatei &laden... - - - - &Save State File... - Spielstanddatei &speichern... - - - - E&xit - &Beenden - - - - &Run - Ausfüh&ren - - - F7 - F7 - - - - &Pause - &Pause - - - F8 - F8 - - - &Slightly Faster Interpreter - &Etwas schnellerer Interpreter - - - &Dynarec - &Dynarec - - - Load &Map File... - &Abbildungsdatei laden... - - - &Save Map File... - Abbildungsdatei &speichern... - - - &Reset Symbol Table - Symboltabelle &zurücksetzen - - - Ctrl+D - Strg+D - - - &Log Console - &Protokollkonsole - - - Ctrl+L - Strg+L - - - Ctrl+M - Strg+M - - - &Keyboard - &Tastatur - - - &Toggle fullscreen - Vollbild &umschalten - - - Show &debug statistics - &Debug-Statistiken anzeigen - - - &Gamepad - &Gamepad - - - Run on loa&d - Beim La&den ausführen - - - Show &FPS counter - &FPS-Zähler anzeigen - - - S&tretch to display - Auf Bildschirm s&trecken - - - &Sound emulation - &Tonemulation - - - F11 - F11 - - - - &Buffered Rendering - &Gepuffertes Rendern - - - F5 - F5 - - - - &Hardware Transform - &Hardware-Transformation - - - F6 - F6 - - - - &Linear Filtering - &Lineare Filterung - - - Screen &1x - Bildschirm &1x - - - Ctrl+1 - Strg+1 - - - Screen &2x - Bildschirm &2x - - - Ctrl+2 - Strg+2 - - - Screen &3x - Bildschirm &3x - - - Ctrl+3 - Strg+3 - - - Screen &4x - Bildschirm &4x - - - Ctrl+4 - Strg+4 - - - &Fast Memory (dynarec, unstable) - &Schneller Speicher (dynarec, instabil) - - - &Go to http://www.ppsspp.org/ - Zu http://www.ppsspp.org/ &gehen - - - - &About PPSSPP... - &Über PPSSPP... - - - &Use VBO - VBO &verwenden - - - - De&bug - De&buggen - - - - &Ignore Illegal reads/writes - Illegales Lesen/Schreiben &ignorieren - - - - &Anisotropic Filtering - &Anisotrope Filterung - - - - &Screen Size - &Bildschirmgröße - - - - Lo&g levels - Protokollierun&gsstufen - - - diff --git a/Qt/languages/ppsspp_en.ts b/Qt/languages/ppsspp_en.ts deleted file mode 100644 index 9c8c5919b8..0000000000 --- a/Qt/languages/ppsspp_en.ts +++ /dev/null @@ -1,889 +0,0 @@ - - - - - CtrlDisAsmView - - - Copy &address - - - - - Copy instruction (&hex) - - - - - Copy instruction (&disasm) - - - - - &Run to here - - - - - &Set Next Statement - - - - - &Toggle breakpoint - - - - - &Follow branch - - - - - Go to in &Memory View - - - - - &Rename function... - - - - - New function name - - - - - New function name: - - - - - Warning - - - - - No symbol selected - - - - - CtrlMemView - - - Go to in &disasm - - - - - &Copy value - - - - - C&hange value - - - - - Dump... - - - - - Set new value - - - - - Set new value: - - - - - CtrlRegisterList - - - Go to in &memory view - - - - - Go to in &disasm - - - - - &Copy value - - - - - C&hange... - - - - - Set new value - - - - - Set new value: - - - - - Debugger_Disasm - - - Disassembler - Window title - - - - - Ctr: - - - - - &Go to - - - - - &PC - - - - - &LR - - - - - Show VFPU - - - - - Regs - - - - - Funcs - - - - - &Go - - - - - Stop - - - - - Step &Into - - - - - Step &Over - - - - - S&kip - - - - - Next &HLE - - - - - Breakpoints - - - - - Address - - - - - Clear All - - - - - Callstack - - - - - Display Lists - - - - - - Id - - - - - - Status - - - - - Start Address - - - - - Current Address - - - - - Threads - - - - - Name - - - - - Current PC - - - - - Entry point - - - - - Remove breakpoint - - - - - Go to entry point - - - - - Change status - - - - - Running - - - - - Wait - - - - - Suspend - - - - - Debugger_DisplayList - - - Dialog - - - - - DisplayList - - - - - Id - - - - - Status - - - - - Start Address - - - - - Current Address - - - - - Run - - - - - Stop - - - - - Next DL - - - - - Commands - - - - - Step - - - - - Next Draw - - - - - Goto PC - - - - - Textures - - - - - - Address - - - - - - Width - - - - - - Height - - - - - - Format - - - - - Vertex Buffer - - - - - Coord Type - - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - - - - - Has Position - - - - - Has Normal - - - - - Has Color - - - - - Has UV - - - - - Values - - - - - - Next 20 - - - - - Index Buffer - - - - - Idx - - - - - Value - - - - - Framebuffer - - - - - VAddress - - - - - Display : - - - - - Color - - - - - Depth - - - - - Zoom- - - - - - Zoom+ - - - - - Run to here - - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - - - - - Goto: - - - - - Mode - - - - - Normal - - - - - Symbols - - - - - Memory Viewer - %1 - - - - - Debugger_MemoryTex - - - Dialog - - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - - - - - Debugger_VFPU - - - VFPU - - - - - Float - - - - - HalfFloat - - - - - Hex - - - - - Bytes - - - - - Shorts - - - - - Ints - - - - - MainWindow - - - &File - - - - - &Emulation - - - - - Run on &load - - - - - &Options - - - - - &CPU Dynarec - - - - - &Vertex Decoder Dynarec - - - - - &Language - - - - - &Video - - - - - &Core - - - - - &Ignore Illegal reads/writes - - - - - &Help - - - - - De&bug - - - - - &Open... - - - - - &Close - - - - - Quickload State - - - - - Quicksave State - - - - - &Load State File... - - - - - &Save State File... - - - - - E&xit - - - - - &Run - - - - - &Pause - - - - - Re&set - - - - - Load Map File... - - - - - Save Map File... - - - - - Reset Symbol Table - - - - - Dump next frame to log - - - - - Disassembly - - - - - Display List... - - - - - Log Console - - - - - Memory View - - - - - Memory View Texture - - - - - Fast &Memory (unstable) - - - - - &Anisotropic Filtering - - - - - &Buffered Rendering - - - - - &Linear Filtering - - - - - &Screen Size - - - - - &Stretch to Display - - - - - &Hardware Transform - - - - - &Vertex Cache - - - - - &Frameskip - - - - - &Audio - - - - - &Fullscreen - - - - - &Show debug statistics - - - - - &Show FPS - - - - - Lo&g levels - - - - - &Go to official website - - - - - &About PPSSPP... - - - - diff --git a/Qt/languages/ppsspp_fr.ts b/Qt/languages/ppsspp_fr.ts deleted file mode 100644 index b7b4901c94..0000000000 --- a/Qt/languages/ppsspp_fr.ts +++ /dev/null @@ -1,1130 +0,0 @@ - - - - - Controls - - Controls - Controls window title - Contrôles - - - - CtrlDisAsmView - - - Copy &address - - - - - Copy instruction (&hex) - - - - - Copy instruction (&disasm) - - - - - &Run to here - - - - - &Set Next Statement - - - - - &Toggle breakpoint - - - - - &Follow branch - - - - - Go to in &Memory View - - - - - &Rename function... - - - - - New function name - - - - - New function name: - - - - - Warning - Avertissement - - - - No symbol selected - - - - - CtrlMemView - - - Go to in &disasm - - - - - &Copy value - - - - - C&hange value - - - - - Dump... - - - - - Set new value - - - - - Set new value: - - - - - CtrlRegisterList - - - Go to in &memory view - - - - - Go to in &disasm - - - - - &Copy value - - - - - C&hange... - - - - - Set new value - - - - - Set new value: - - - - - Debugger_Disasm - - - Disassembler - Window title - - - - - Ctr: - - - - - &Go to - - - - - &PC - - - - - &LR - - - - - Show VFPU - - - - - Regs - - - - - Funcs - - - - - &Go - - - - - Stop - - - - - Step &Into - - - - - Step &Over - - - - - S&kip - - - - - Next &HLE - - - - - Breakpoints - - - - - Address - - - - - Clear All - - - - - Callstack - - - - - Display Lists - - - - - - Id - - - - - - Status - - - - - Start Address - - - - - Current Address - - - - - Threads - - - - - Name - - - - - Current PC - - - - - Entry point - - - - - Remove breakpoint - - - - - Go to entry point - - - - - Change status - - - - - Running - - - - - Wait - - - - - Suspend - - - - - Debugger_DisplayList - - - Dialog - - - - - DisplayList - - - - - Id - - - - - Status - - - - - Start Address - - - - - Current Address - - - - - Run - - - - - Stop - - - - - Next DL - - - - - Commands - - - - - Step - - - - - Next Draw - - - - - Goto PC - - - - - Textures - - - - - - Address - - - - - - Width - - - - - - Height - - - - - - Format - - - - - Vertex Buffer - - - - - Coord Type - - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - - - - - Has Position - - - - - Has Normal - - - - - Has Color - - - - - Has UV - - - - - Values - - - - - - Next 20 - - - - - Index Buffer - - - - - Idx - - - - - Value - - - - - Framebuffer - - - - - VAddress - - - - - Display : - - - - - Color - - - - - Depth - - - - - Zoom- - - - - - Zoom+ - - - - - Run to here - - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - - - - - Goto: - - - - - Mode - - - - - Normal - - - - - Symbols - - - - - Memory Viewer - %1 - - - - - Debugger_MemoryTex - - - Dialog - - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - - - - - Debugger_VFPU - - - VFPU - - - - - Float - - - - - HalfFloat - - - - - Hex - - - - - Bytes - - - - - Shorts - - - - - Ints - - - - - MainWindow - - PPSSPP - PPSSPP - - - - &File - &Fichier - - - - Quickload State - - - - - Quicksave State - - - - - &Emulation - &Emulation - - - Debu&g - Debu&g - - - - &Options - &Options - - - G3D - G3D - - - HLE - HLE - - - Default - Défaut - - - Lo&g Levels - Op&tions du journal - - - - &Language - &Langue - - - - &Video - &Video - - - &Anisotropic filtering - &Filtrage anisotrope - - - &Zoom - &Zoom - - - Co&ntrols - Co&ntrôles - - - - &Core - &Emulation - - - - &Ignore Illegal reads/writes - - - - - &Help - &Aide - - - - &Open... - &Ouvrir... - - - - &Close - &Fermer - - - - - - - - - Quickload state - Chargement rapide - - - F4 - F4 - - - Quicksave state - Sauvegarde rapide - - - F2 - F2 - - - - &Load State File... - &Charger... - - - - &Save State File... - &Sauvegarder... - - - - E&xit - &Quitter - - - - &Run - &Démarrer - - - F7 - F7 - - - - &Pause - &Pause - - - F8 - F8 - - - R&eset - R&eset - - - &Interpreter - &Interpreteur - - - &Slightly Faster Interpreter - Could delete the "un peu" which means slightly but takes a lot of space - &Interpreteur un peu plus rapide - - - &Dynarec - &DRC - - - Ctrl+D - Ctrl+D - - - &Log Console - &Journal d'événements - - - Ctrl+L - Ctrl+L - - - Ctrl+M - Ctrl+M - - - &Keyboard - &Clavier - - - &Toggle fullscreen - &Plein écran - - - Show &debug statistics - Afficher &les statistiques de débogage - - - I&gnore illegal reads/writes - I&gnorer les écritures/lectures illégales - - - &Gamepad - &Pad - - - Run on loa&d - Lancer au cha&rgement - - - Show &FPS counter - Afficher &les FPS - - - S&tretch to display - A&dapter à l'écran - - - &Sound emulation - &Son - - - F11 - F11 - - - - &Buffered Rendering - &Rendu Tampon - - - F5 - F5 - - - - &Hardware Transform - &Hardware Transform - - - F6 - F6 - - - - &Linear Filtering - &Filtrage Linéaire - - - &Wireframe (experimental) - &Rendu en fil de fer (expérimental) - - - Screen &1x - &1x - - - Ctrl+1 - Ctrl+1 - - - Screen &2x - &2x - - - Ctrl+2 - Ctrl+2 - - - Screen &3x - &3x - - - Ctrl+3 - Ctrl+3 - - - Screen &4x - &4x - - - Ctrl+4 - Ctrl+4 - - - &Fast Memory (dynarec, unstable) - &Mémoire Rapide (DRC, instable) - - - &Go to http://www.ppsspp.org/ - &Aller à http://www.ppsspp.org/ - - - - &About PPSSPP... - &A propos de PPSSPP... - - - &Use VBO - &Utiliser les VBO - - - - Re&set - - - - - Run on &load - - - - - De&bug - - - - - Load Map File... - - - - - Save Map File... - - - - - Reset Symbol Table - - - - - Dump next frame to log - - - - - Disassembly - - - - - Display List... - - - - - Log Console - - - - - Memory View - - - - - Memory View Texture - - - - - &CPU Dynarec - - - - - &Vertex Decoder Dynarec - - - - - Fast &Memory (unstable) - - - - - &Anisotropic Filtering - - - - - &Screen Size - - - - - &Stretch to Display - - - - - &Vertex Cache - &Cache du Vertex - - - - &Frameskip - - - - - &Audio - - - - - &Fullscreen - - - - - &Show debug statistics - - - - - &Show FPS - - - - - Lo&g levels - - - - Debug - Débogage - - - Warning - Avertissement - - - Error - Erreur - - - Info - Informations - - - - &Go to official website - - - - Simple 2xAA - 2x AA - - - Off - Off - - - 2x - 2x - - - 4x - 4x - - - 8x - 8x - - - 16x - 16x - - - diff --git a/Qt/languages/ppsspp_gr.ts b/Qt/languages/ppsspp_gr.ts deleted file mode 100644 index 4e8109f4dc..0000000000 --- a/Qt/languages/ppsspp_gr.ts +++ /dev/null @@ -1,1057 +0,0 @@ - - - - - Controls - - Controls - Controls window title - Τίτλος παραθύρου χειρισμών - - - - CtrlDisAsmView - - - Copy &address - Αντιγραφή &address - - - - Copy instruction (&hex) - Αντιγραφή οδηγίας (&hex) - - - - Copy instruction (&disasm) - Αντιγραφή οδηγίας (&disasm) - - - - &Run to here - &Τρέξιμο ως εδώ - - - - &Set Next Statement - &Ορισμός Επόμενη Κατάστασης - - - - &Toggle breakpoint - - - - - &Follow branch - &Ακολούθηση κλάδου - - - - Go to in &Memory View - Μετάβαση σε &Προβολέα Μνήμης - - - - &Rename function... - &Μετονομασία λειτουργίας... - - - - New function name - Νέο όνομα λειτουργίας - - - - New function name: - Νέο όνομα λειτουργίας: - - - - Warning - Προειδοποίηση - - - - No symbol selected - - - - - CtrlMemView - - - Go to in &disasm - Μετάβαση σε &disasm - - - - &Copy value - &Αντιγραφή τιμής - - - - C&hange value - - - - - Dump... - Αποτύπωση... - - - - Set new value - Ορισμός νέας τιμής - - - - Set new value: - Ορισμός νέας τιμής: - - - - CtrlRegisterList - - - Go to in &memory view - Μετάβαση σε &προβολής μνήμης - - - - Go to in &disasm - Μετάβαση σε &disasm - - - - &Copy value - &Αντιγραφή τιμής - - - - C&hange... - Α&λλαγή... - - - - Set new value - Ορισμός νέας τιμής - - - - Set new value: - Ορισμός νέας τιμής: - - - - Debugger_Disasm - - - Disassembler - Window title - Τίτλος παραθύρου - - - - Ctr: - - - - - &Go to - &Μετάβαση σε - - - - &PC - - - - - &LR - - - - - Show VFPU - Εμφάνιση VFPU - - - - Regs - - - - - Funcs - - - - - &Go - &Ξεκίνημα - - - - Stop - Σταμάτημα - - - - Step &Into - Μεταπήδηση &σε - - - - Step &Over - Μεταπήδηση &Πάνω από - - - - S&kip - Α&γνόηση - - - - Next &HLE - Επόμενο &ΕΥΕ (HLE) - - - - Breakpoints - - - - - Address - Διεύθυνση - - - - Clear All - Εκκαθάριση Όλων - - - - Callstack - - - - - Display Lists - Λίστες Απεικόνισης - - - - - Id - - - - - - Status - Κατάσταση - - - - Start Address - Αρχική Διεύθυνση - - - - Current Address - Τρέχουσα Διεύθυνση - - - - Threads - Νήματα - - - - Name - Όνομα - - - - Current PC - Τρέχον PC - - - - Entry point - Σημείο έναρξης - - - - Remove breakpoint - Αφαίρεση σημείου διακοπής - - - - Go to entry point - Μετάβαση στο σημείο εισόδου - - - - Change status - - - - - Running - Σε λειτουργία - - - - Wait - Αναμονή - - - - Suspend - Αναστολή - - - - Debugger_DisplayList - - - Dialog - Διάλογος - - - - DisplayList - - - - - Id - - - - - Status - Κατάσταση - - - - Start Address - Αρχική Διεύθυνση - - - - Current Address - Τρέχουσα Διεύθυνση - - - - Run - Εκκίνηση - - - - Stop - Σταμάτημα - - - - Next DL - - - - - Commands - - - - - Step - Βήμα - - - - Next Draw - - - - - Goto PC - - - - - Textures - - - - - - Address - Διεύθυνση - - - - - Width - - - - - - Height - - - - - - Format - - - - - Vertex Buffer - - - - - Coord Type - - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - - - - - Has Position - - - - - Has Normal - - - - - Has Color - - - - - Has UV - - - - - Values - - - - - - Next 20 - - - - - Index Buffer - - - - - Idx - - - - - Value - - - - - Framebuffer - - - - - VAddress - - - - - Display : - - - - - Color - - - - - Depth - - - - - Zoom- - - - - - Zoom+ - - - - - Run to here - - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - Διάλογος - - - - Goto: - Μετάβαση σε: - - - - Mode - Λειτουργία - - - - Normal - Κανονικό - - - - Symbols - Σύμβολα - - - - Memory Viewer - %1 - Προβολέας Μνήμης - %1 - - - - Debugger_MemoryTex - - - Dialog - Διάλογος - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - - - - - Debugger_VFPU - - - VFPU - - - - - Float - - - - - HalfFloat - - - - - Hex - Δεκαεξαδικό - - - - Bytes - - - - - Shorts - - - - - Ints - - - - - MainWindow - - - &File - &Αρχείο - - - - Quickload State - - - - - Quicksave State - - - - - &Emulation - &Εξομοίωση - - - Debu&g - Αποσφαλμάτωσ&η - - - - &Options - &Επιλογές - - - HLE - ΕΥΕ(HLE) - - - Default - Προεπιλογή - - - Lo&g Levels - Επ&ίπεδα Καταγραφικού - - - - &Language - &Γλώσσα - - - - &Video - &Βίντεο - - - &Anisotropic filtering - &Ανισοτροπικό φιτράρισμα - - - &Zoom - &Μεγένθυση - - - Co&ntrols - Χε&ιριστήρια - - - - &Core - &Πυρήνας - - - - &CPU Dynarec - - - - - &Vertex Decoder Dynarec - - - - - &Ignore Illegal reads/writes - - - - - &Help - &Βοήθεια - - - - &Open... - &’νοιγμα... - - - - &Close - &Κλείσιμο - - - Quickload state - Γρήγορη Φόρτωση - - - Quicksave state - Γρήγορη Αποθήκευση - - - - &Load State File... - &Φόρτωση Σημείου Αποθήκευσης... - - - - &Save State File... - &Αποθήκευση Σημείου Αποθήκευσης... - - - - E&xit - Έ&ξοδος - - - - &Run - &Εκκίνηση - - - - &Pause - &Παύση - - - R&eset - Ε&πανεκκίνηση - - - Load &Map File... - Φόρτωση &Αρχείου Χάρτη... - - - &Save Map File... - &Αποθήκευση Αρχείου Χάρτη... - - - &Reset Symbol Table - &Επαναφορά Πίνακα Συμβόλων - - - &Disassembly - &Αποσυναρμολόγηση - - - &Log Console - &Κονσόλα Καταγραφέα - - - Memory &View... - Εμφάνιση &Μνήμης... - - - &Keyboard - &Πληκτρολόγιο - - - &Toggle fullscreen - &Μετάβαση σε πλήρη οθόνη - - - Show &debug statistics - Εμφάνιση &στατιστικών αποσφαλμάτωσης - - - I&gnore illegal reads/writes - Α&γνόηση αθέμιτων αναγνώσεων - - - &Gamepad - &Χειριστήριο - - - Run on loa&d - Εκκίνηση στην έναρξ&η - - - Show &FPS counter - Εμφάνιση μετρητή &FPS - - - S&tretch to display - Ε&πέκταση στην οθόνη - - - &Sound emulation - &Εξομοίωση ήχου - - - - &Buffered Rendering - &Buffered Απεικόνιση - - - - &Hardware Transform - Hardware Μετασχηματισμός - - - - &Linear Filtering - Γραμμικό φιλτράρισμα - - - &Wireframe (experimental) - Γράφημα Πλέγματος - - - &Display Raw Framebuffer - &Εμφάνιση Ακατέργαστου Framebuffer - - - Screen &1x - Οθόνη &1x - - - Screen &2x - Οθόνη &2x - - - Screen &3x - Οθόνη &3x - - - Screen &4x - Οθόνη &4x - - - &Fast Memory (dynarec, unstable) - &Γρήγορη Μνήμη (dynarec, ασταθής) - - - &Go to http://www.ppsspp.org/ - &Μετάβαση σε http://www.ppsspp.org/ - - - - &About PPSSPP... - &Περί του PPSSPP... - - - &Use VBO - &Χρήση VBO - - - - Re&set - - - - - Run on &load - - - - - De&bug - - - - - Load Map File... - - - - - Save Map File... - - - - - Reset Symbol Table - - - - - Dump next frame to log - - - - - Disassembly - - - - - Display List... - - - - - Log Console - - - - - Memory View - - - - - Memory View Texture - - - - - Fast &Memory (unstable) - - - - - &Anisotropic Filtering - - - - - &Screen Size - - - - - &Stretch to Display - - - - - &Vertex Cache - &Προσορηνή Μνήμη Κορυφών - - - - &Frameskip - - - - - &Audio - - - - - &Fullscreen - - - - - &Show debug statistics - - - - - &Show FPS - - - - - Lo&g levels - - - - Debug - Αποσφαλμάτωση - - - Warning - Προειδοποίηση - - - Error - Σφάλμα - - - Info - Πληροφορίες - - - - &Go to official website - - - - D&ump next frame to log - Ε&ξαγωγή επόμενου καρέ στον καταγραφέα - - - Memory View Texture... - Προβολή Μνήμης Υφών... - - - diff --git a/Qt/languages/ppsspp_hu.ts b/Qt/languages/ppsspp_hu.ts deleted file mode 100644 index 8d487164b8..0000000000 --- a/Qt/languages/ppsspp_hu.ts +++ /dev/null @@ -1,1057 +0,0 @@ - - - - - Controls - - Controls - Controls window title - Írányítás - - - - CtrlDisAsmView - - - Copy &address - Cím másolása - - - - Copy instruction (&hex) - - - - - Copy instruction (&disasm) - - - - - &Run to here - - - - - &Set Next Statement - - - - - &Toggle breakpoint - - - - - &Follow branch - - - - - Go to in &Memory View - - - - - &Rename function... - - - - - New function name - - - - - New function name: - - - - - Warning - Figyelmeztetés - - - - No symbol selected - - - - - CtrlMemView - - - Go to in &disasm - - - - - &Copy value - - - - - C&hange value - - - - - Dump... - - - - - Set new value - - - - - Set new value: - - - - - CtrlRegisterList - - - Go to in &memory view - - - - - Go to in &disasm - - - - - &Copy value - - - - - C&hange... - - - - - Set new value - - - - - Set new value: - - - - - Debugger_Disasm - - - Disassembler - Window title - - - - - Ctr: - - - - - &Go to - - - - - &PC - - - - - &LR - - - - - Show VFPU - - - - - Regs - - - - - Funcs - - - - - &Go - - - - - Stop - - - - - Step &Into - - - - - Step &Over - - - - - S&kip - - - - - Next &HLE - - - - - Breakpoints - - - - - Address - - - - - Clear All - - - - - Callstack - - - - - Display Lists - - - - - - Id - - - - - - Status - - - - - Start Address - - - - - Current Address - - - - - Threads - - - - - Name - - - - - Current PC - - - - - Entry point - - - - - Remove breakpoint - - - - - Go to entry point - - - - - Change status - - - - - Running - - - - - Wait - - - - - Suspend - - - - - Debugger_DisplayList - - - Dialog - - - - - DisplayList - - - - - Id - - - - - Status - - - - - Start Address - - - - - Current Address - - - - - Run - - - - - Stop - - - - - Next DL - - - - - Commands - - - - - Step - - - - - Next Draw - - - - - Goto PC - - - - - Textures - - - - - - Address - - - - - - Width - - - - - - Height - - - - - - Format - - - - - Vertex Buffer - - - - - Coord Type - - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - - - - - Has Position - - - - - Has Normal - - - - - Has Color - - - - - Has UV - - - - - Values - - - - - - Next 20 - - - - - Index Buffer - - - - - Idx - - - - - Value - - - - - Framebuffer - - - - - VAddress - - - - - Display : - - - - - Color - - - - - Depth - - - - - Zoom- - - - - - Zoom+ - - - - - Run to here - - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - - - - - Goto: - - - - - Mode - - - - - Normal - - - - - Symbols - - - - - Memory Viewer - %1 - - - - - Debugger_MemoryTex - - - Dialog - - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - - - - - Debugger_VFPU - - - VFPU - - - - - Float - - - - - HalfFloat - - - - - Hex - - - - - Bytes - - - - - Shorts - - - - - Ints - - - - - MainWindow - - PPSSPP - PPSSPP - - - - &File - Fájl - - - - Quickload State - - - - - Quicksave State - - - - - &Emulation - Emuláció - - - - Re&set - - - - - Run on &load - - - - - Load Map File... - - - - - Save Map File... - - - - - Reset Symbol Table - - - - - Dump next frame to log - - - - - Disassembly - - - - - Display List... - - - - - Log Console - - - - - Memory View - - - - - Memory View Texture - - - - - &Options - Beállítások - - - - &CPU Dynarec - - - - - &Vertex Decoder Dynarec - - - - - Fast &Memory (unstable) - - - - - &Stretch to Display - - - - - &Vertex Cache - - - - - &Frameskip - - - - - &Audio - - - - - &Fullscreen - - - - - &Show debug statistics - - - - - &Show FPS - - - - - &Go to official website - - - - Default - Alapértelmezett - - - Lo&g Levels - Log szint - - - - &Language - Nyelv - - - - &Video - Videó - - - &Anisotropic filtering - Anizotróp szűrés - - - &Zoom - Nagyítás - - - Co&ntrols - Irányítás - - - - &Core - Központi - - - - &Help - Segítség - - - - &Open... - Megnyitás... - - - - &Close - Bezárás - - - - - - - - - Quickload state - Állás gyorsbetöltése - - - F4 - F4 - - - Quicksave state - Állás gyorsmentése - - - F2 - F2 - - - - &Load State File... - Állás betöltése... - - - - &Save State File... - Állás mentése... - - - - E&xit - Kilépés - - - - &Run - Futtatás - - - F7 - F7 - - - - &Pause - Szüneteltetés - - - F8 - F8 - - - R&eset - Újraindítás - - - &Interpreter - Interpreter - - - &Dynarec - Dynarec - - - Load &Map File... - Map fájl betöltése... - - - &Save Map File... - Map fájl mentése... - - - Ctrl+D - Ctrl+D - - - &Log Console - Log Konzol - - - Ctrl+L - Ctrl+L - - - Ctrl+M - Ctrl+M - - - &Keyboard - Billentyűzet - - - &Toggle fullscreen - Teljesképernyőre váltás - - - I&gnore illegal reads/writes - Illegális olvasások/írások mellőzése - - - &Gamepad - Játékvezérlő - - - Run on loa&d - Futtatás betöltéskor - - - Show &FPS counter - FPS számláló mutatása - - - S&tretch to display - Kép nyújtása - - - &Sound emulation - Hang emuláció - - - - &Buffered Rendering - Pufferelt Renderelés - - - - &Hardware Transform - Hardveres Átváltoztatás - - - F6 - F6 - - - - &Linear Filtering - Lineáris Szűrés - - - &Fast Memory (dynarec, unstable) - Gyors Memória (dynarec, instabil) - - - &Go to http://www.ppsspp.org/ - Ugrás a honlapra http//www.ppsspp.org/ - - - - &About PPSSPP... - PPSSPP Névjegye - - - &Use VBO - VBO Használata - - - - De&bug - - - - - &Ignore Illegal reads/writes - - - - - &Anisotropic Filtering - - - - - &Screen Size - - - - - Lo&g levels - - - - Warning - Figyelmeztetés - - - Error - Hiba - - - Info - Infó - - - Off - Ki - - - Frameskip - Frameskip - - - You need to compile with SDL to have Gamepad support. - SDL-t kell használnod fordításnál Játékvezérlő támogatásért. - - - diff --git a/Qt/languages/ppsspp_id.ts b/Qt/languages/ppsspp_id.ts deleted file mode 100644 index 9f8c33db73..0000000000 --- a/Qt/languages/ppsspp_id.ts +++ /dev/null @@ -1,905 +0,0 @@ - - - - - CtrlDisAsmView - - - Copy &address - - - - - Copy instruction (&hex) - - - - - Copy instruction (&disasm) - - - - - &Run to here - - - - - &Set Next Statement - - - - - &Toggle breakpoint - - - - - &Follow branch - - - - - Go to in &Memory View - - - - - &Rename function... - - - - - New function name - - - - - New function name: - - - - - Warning - Peringatan - - - - No symbol selected - - - - - CtrlMemView - - - Go to in &disasm - - - - - &Copy value - - - - - C&hange value - - - - - Dump... - - - - - Set new value - - - - - Set new value: - - - - - CtrlRegisterList - - - Go to in &memory view - - - - - Go to in &disasm - - - - - &Copy value - - - - - C&hange... - - - - - Set new value - - - - - Set new value: - - - - - Debugger_Disasm - - - Disassembler - Window title - - - - - Ctr: - - - - - &Go to - - - - - &PC - - - - - &LR - - - - - Show VFPU - - - - - Regs - - - - - Funcs - - - - - &Go - - - - - Stop - - - - - Step &Into - - - - - Step &Over - - - - - S&kip - - - - - Next &HLE - - - - - Breakpoints - - - - - Address - - - - - Clear All - - - - - Callstack - - - - - Display Lists - - - - - - Id - - - - - - Status - - - - - Start Address - - - - - Current Address - - - - - Threads - - - - - Name - - - - - Current PC - - - - - Entry point - - - - - Remove breakpoint - - - - - Go to entry point - - - - - Change status - - - - - Running - - - - - Wait - - - - - Suspend - - - - - Debugger_DisplayList - - - Dialog - - - - - DisplayList - - - - - Id - - - - - Status - - - - - Start Address - - - - - Current Address - - - - - Run - - - - - Stop - - - - - Next DL - - - - - Commands - - - - - Step - - - - - Next Draw - - - - - Goto PC - - - - - Textures - - - - - - Address - - - - - - Width - - - - - - Height - - - - - - Format - - - - - Vertex Buffer - - - - - Coord Type - - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - - - - - Has Position - - - - - Has Normal - - - - - Has Color - - - - - Has UV - - - - - Values - - - - - - Next 20 - - - - - Index Buffer - - - - - Idx - - - - - Value - - - - - Framebuffer - - - - - VAddress - - - - - Display : - - - - - Color - - - - - Depth - - - - - Zoom- - - - - - Zoom+ - - - - - Run to here - - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - - - - - Goto: - - - - - Mode - - - - - Normal - - - - - Symbols - - - - - Memory Viewer - %1 - - - - - Debugger_MemoryTex - - - Dialog - - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - - - - - Debugger_VFPU - - - VFPU - - - - - Float - - - - - HalfFloat - - - - - Hex - - - - - Bytes - - - - - Shorts - - - - - Ints - - - - - MainWindow - - - &File - - - - - &Emulation - - - - - Run on &load - - - - - &Options - - - - - &CPU Dynarec - - - - - &Vertex Decoder Dynarec - - - - - &Language - - - - - &Video - - - - - &Core - - - - - &Ignore Illegal reads/writes - - - - - &Help - - - - - De&bug - - - - - &Open... - - - - - &Close - - - - - Quickload State - - - - - Quicksave State - - - - - &Load State File... - - - - - &Save State File... - - - - - E&xit - - - - - &Run - - - - - &Pause - - - - - Re&set - - - - - Load Map File... - - - - - Save Map File... - - - - - Reset Symbol Table - - - - - Dump next frame to log - - - - - Disassembly - - - - - Display List... - - - - - Log Console - - - - - Memory View - - - - - Memory View Texture - - - - - Fast &Memory (unstable) - - - - - &Anisotropic Filtering - - - - - &Buffered Rendering - - - - - &Linear Filtering - - - - - &Screen Size - - - - - &Stretch to Display - - - - - &Hardware Transform - - - - - &Vertex Cache - - - - - &Frameskip - - - - - &Audio - - - - - &Fullscreen - - - - - &Show debug statistics - - - - - &Show FPS - - - - - Lo&g levels - - - - Warning - Peringatan - - - Error - Galat - - - Info - Informasi - - - - &Go to official website - - - - - &About PPSSPP... - - - - Off - Mati - - - diff --git a/Qt/languages/ppsspp_it.ts b/Qt/languages/ppsspp_it.ts deleted file mode 100644 index 94a53d885a..0000000000 --- a/Qt/languages/ppsspp_it.ts +++ /dev/null @@ -1,889 +0,0 @@ - - - - - CtrlDisAsmView - - - Copy &address - Copia &indirizzo - - - - Copy instruction (&hex) - Copia istruzione (&esa) - - - - Copy instruction (&disasm) - Copia istruzione (&disass) - - - - &Run to here - &Esegui fino a qui - - - - &Set Next Statement - &Imposta Istruzione Successiva - - - - &Toggle breakpoint - &Attiva/disattiva breakpoint - - - - &Follow branch - &Segui ramo - - - - Go to in &Memory View - Vai a in &Vista Memoria - - - - &Rename function... - &Rinomina funzione... - - - - New function name - Nuovo nome funzione - - - - New function name: - Nuovo nome funzione: - - - - Warning - Avviso - - - - No symbol selected - Nessun simbolo selezionato - - - - CtrlMemView - - - Go to in &disasm - Vai a in &disass - - - - &Copy value - &Copia valore - - - - C&hange value - C&ambia valore - - - - Dump... - Scarica... - - - - Set new value - Imposta nuovo valore - - - - Set new value: - Imposta nuovo valore: - - - - CtrlRegisterList - - - Go to in &memory view - Vai a in &vista memoria - - - - Go to in &disasm - Vai a in &disass - - - - &Copy value - &Copia valore - - - - C&hange... - C&ambia... - - - - Set new value - Imposta nuovo valore - - - - Set new value: - Imposta nuovo valore: - - - - Debugger_Disasm - - - Disassembler - Window title - Disassemblatore - - - - Ctr: - Ctr: - - - - &Go to - &Vai a - - - - &PC - &PC - - - - &LR - &LR - - - - Show VFPU - Mostra VFPU - - - - Regs - Reg - - - - Funcs - Funz - - - - &Go - &Vai - - - - Stop - Arresta - - - - Step &Into - Entra &In - - - - Step &Over - Passa &Oltre - - - - S&kip - S&alta - - - - Next &HLE - Prossima &HLE - - - - Breakpoints - Breakpoint - - - - Address - Indirizzo - - - - Clear All - Pulisci Tutto - - - - Callstack - Callstack - - - - Display Lists - Mostra Liste - - - - - Id - Id - - - - - Status - Stato - - - - Start Address - Indirizzo di Avvio - - - - Current Address - Indirizzo Attuale - - - - Threads - Thread - - - - Name - Nome - - - - Current PC - PC Attuale - - - - Entry point - Punto d'ingresso - - - - Remove breakpoint - Rimuovi breakpoint - - - - Go to entry point - Vai a punto d'ingresso - - - - Change status - Cambia stato - - - - Running - In esecuzione - - - - Wait - Attenti - - - - Suspend - Sospendi - - - - Debugger_DisplayList - - - Dialog - Dialogo - - - - DisplayList - MostraLista - - - - Id - Id - - - - Status - Stato - - - - Start Address - Indirizzo di Avvio - - - - Current Address - Indirizzo Attuale - - - - Run - Esegui - - - - Stop - Arresta - - - - Next DL - Prossima DL - - - - Commands - Comandi - - - - Step - Passa - - - - Next Draw - Prossimo Disegno - - - - Goto PC - Vaia PC - - - - Textures - Texture - - - - - Address - Indirizzo - - - - - Width - Larghezza - - - - - Height - Altezza - - - - - Format - Formato - - - - Vertex Buffer - Buffer Vertici - - - - Coord Type - Tipo Coord - - - - Number Morph - Numero Morf - - - - Number Weights - Numero Pesi - - - - Has Weight - Ha Peso - - - - Has Position - Ha Posizione - - - - Has Normal - Ha Normale - - - - Has Color - Ha Colore - - - - Has UV - Ha UV - - - - Values - Valori - - - - - Next 20 - Prossimi 20 - - - - Index Buffer - Buffer Indici - - - - Idx - Idx - - - - Value - Valore - - - - Framebuffer - Buffer fotogrammi - - - - VAddress - IndirizzoV - - - - Display : - Mostra : - - - - Color - Colore - - - - Depth - Profondità - - - - Zoom- - Zoom- - - - - Zoom+ - Zoom+ - - - - Run to here - Esegui fino a qui - - - - Run to draw using this texture - Esegui fino a disegno usando questa texture - - - - Debugger_Memory - - - Dialog - Dialogo - - - - Goto: - Vaia: - - - - Mode - Modalità - - - - Normal - Normale - - - - Symbols - Simboli - - - - Memory Viewer - %1 - Visualizzatore Memoria - %1 - - - - Debugger_MemoryTex - - - Dialog - Dialogo - - - - TexAddr - IndTex - - - - TexBufWidth0 - LarghBufTex0 - - - - TexFormat - FormTex - - - - TexSize - DimTex - - - - ClutFormat - FormClut - - - - ClutAddr - IndClut - - - - ClutAddrUpper - IndSupClut - - - - LoadClut - CarClut - - - - TexMode - ModTex - - - - Read - Leggi - - - - Debugger_VFPU - - - VFPU - VFPU - - - - Float - Virgola Mobile - - - - HalfFloat - Virgola Mobile a Precisione Singola - - - - Hex - Esa - - - - Bytes - Byte - - - - Shorts - Brevi - - - - Ints - Int - - - - MainWindow - - - &File - &File - - - - &Emulation - &Emulazione - - - - Run on &load - Esegui al &caricamento - - - - &Options - &Opzioni - - - - &CPU Dynarec - &Dynarec CPU - - - - &Vertex Decoder Dynarec - &Dynarec Decodificatore Vertici - - - - &Language - &Lingua - - - - &Video - &Video - - - - &Core - &Core - - - - &Ignore Illegal reads/writes - &Ignora letture/scritture Illegali - - - - &Help - &Aiuto - - - - De&bug - De&bug - - - - &Open... - &Apri... - - - - &Close - &Chiudi - - - - Quickload State - Caricamento rapido Stato - - - - Quicksave State - Salvataggio rapido Stato - - - - &Load State File... - &Carica File di Stato... - - - - &Save State File... - &Salva File di Stato... - - - - E&xit - E&sci - - - - &Run - &Esegui - - - - &Pause - &Pausa - - - - Re&set - Re&imposta - - - - Load Map File... - Carica File Mappa... - - - - Save Map File... - Salva File Mappa... - - - - Reset Symbol Table - Reimposta Tabella Simboli - - - - Dump next frame to log - Scarica prossimo fotogramma nel registro - - - - Disassembly - Disassemblaggio - - - - Display List... - Mostra Lista... - - - - Log Console - Registro Console - - - - Memory View - Vista Memoria - - - - Memory View Texture - Texture Vista Memoria - - - - Fast &Memory (unstable) - &Memoria Veloce (instabile) - - - - &Anisotropic Filtering - &Filtraggio Anisotropico - - - - &Buffered Rendering - &Rendering Bufferato - - - - &Linear Filtering - &Filtraggio Lineare - - - - &Screen Size - &Dimensione Schermo - - - - &Stretch to Display - &Estendi sullo Schermo - - - - &Hardware Transform - &Trasformazione Hardware - - - - &Vertex Cache - &Cache Vertici - - - - &Frameskip - &Salta fotogramma - - - - &Audio - &Audio - - - - &Fullscreen - &Schermo Intero - - - - &Show debug statistics - &Mostra statistiche di debug - - - - &Show FPS - &Mostra FPS - - - - Lo&g levels - Livelli di re&gistro - - - - &Go to official website - &Vai al sito ufficiale - - - - &About PPSSPP... - &Su PPSSPP... - - - diff --git a/Qt/languages/ppsspp_pl.ts b/Qt/languages/ppsspp_pl.ts deleted file mode 100644 index daea98cc27..0000000000 --- a/Qt/languages/ppsspp_pl.ts +++ /dev/null @@ -1,1145 +0,0 @@ - - - - - Controls - - Controls - Controls window title - Układ klawiszy - - - - CtrlDisAsmView - - - Copy &address - Kopiuj &adres - - - - Copy instruction (&hex) - Kopiuj instrukcję (&hex) - - - - Copy instruction (&disasm) - Kopiuj instrukcję (&deasm) - - - - &Run to here - &Uruchom do tego miejsca - - - - &Set Next Statement - U&staw następny rozkaz - - - - &Toggle breakpoint - Ustaw &breakpoint - - - - &Follow branch - - - - - Go to in &Memory View - Przejdź do widoku &pamięci - - - - &Rename function... - &Zmień nazwę funkcji... - - - - New function name - Nowa nazwa funkcji - - - - New function name: - Nowa nazwa funkcji: - - - - Warning - Ostrzeżenia - - - - No symbol selected - - - - - CtrlMemView - - - Go to in &disasm - &Przejdź do deasemblera - - - - &Copy value - &Kopiuj wartość - - - - C&hange value - - - - - Dump... - Zrzut... - - - - Set new value - Ustaw nową wartość - - - - Set new value: - Ustaw nową wartość: - - - - CtrlRegisterList - - - Go to in &memory view - Przejdź do widoku &pamięci - - - - Go to in &disasm - Przejdź do &deasemblera - - - - &Copy value - &Kopiuj wartość - - - - C&hange... - &Zmień... - - - - Set new value - Ustaw nową wartość - - - - Set new value: - Ustaw nową wartość: - - - - Debugger_Disasm - - - Disassembler - Window title - Deasembler - - - - Ctr: - - - - - &Go to - P&rzejdź do - - - - &PC - P&C - - - - &LR - &LR - - - - Show VFPU - Pokaż VFPU - - - - Regs - Rejestry - - - - Funcs - Funkcje - - - - &Go - &Przejdź - - - - Stop - Stop - - - - Step &Into - Wskocz do &wnętrza - - - - Step &Over - Wyskocz na &zewnątrz - - - - S&kip - P&omiń - - - - Next &HLE - Następne &HLE - - - - Breakpoints - Breakpointy - - - - Address - Adres - - - - Clear All - Wyczyść wszystko - - - - Callstack - Stos wywołań - - - - Display Lists - - - - - - Id - Id - - - - - Status - Status - - - - Start Address - Początkowy adres - - - - Current Address - Obecny adres - - - Run - Uruchom - - - Step - Krok - - - - Threads - Wątki - - - - Name - Nazwa - - - - Current PC - Obecny PC - - - - Entry point - Punkt wejścia - - - - Remove breakpoint - Usuń breakpoint - - - - Go to entry point - Przejdź do punktu wejścia - - - - Change status - - - - - Running - Działający - - - - Wait - Czekający - - - - Suspend - Uśpiony - - - Show code - Pokaż kod - - - - Debugger_DisplayList - - - Dialog - Widok pamięci - - - - DisplayList - - - - - Id - Id - - - - Status - Status - - - - Start Address - Początkowy adres - - - - Current Address - Obecny adres - - - - Run - Uruchom - - - - Stop - Stop - - - - Next DL - - - - - Commands - - - - - Step - Krok - - - - Next Draw - - - - - Goto PC - - - - - Textures - - - - - - Address - Adres - - - - - Width - - - - - - Height - - - - - - Format - - - - - Vertex Buffer - - - - - Coord Type - - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - - - - - Has Position - - - - - Has Normal - - - - - Has Color - - - - - Has UV - - - - - Values - - - - - - Next 20 - - - - - Index Buffer - - - - - Idx - - - - - Value - - - - - Framebuffer - - - - - VAddress - - - - - Display : - - - - - Color - - - - - Depth - - - - - Zoom- - - - - - Zoom+ - - - - - Run to here - - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - Widok pamięci - - - - Goto: - Przejdź do: - - - - Mode - Tryb - - - - Normal - Normalny - - - - Symbols - Symboliczny - - - - Memory Viewer - %1 - Widok pamięci - %1 - - - - Debugger_MemoryTex - - - Dialog - Widok pamięci - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - - - - - Debugger_VFPU - - - VFPU - VFPU - - - - Float - - - - - HalfFloat - - - - - Hex - - - - - Bytes - - - - - Shorts - - - - - Ints - - - - - MainWindow - - PPSSPP - PPSSPP - - - - &File - &Plik - - - - Quickload State - - - - - Quicksave State - - - - - &Emulation - &Emulacja - - - Debu&g - &Debugger - - - - &Options - &Opcje - - - G3D - G3D - - - HLE - HLE - - - Default - Domyślne - - - Lo&g Levels - &Poziomy logowania - - - - &Language - &Język - - - - &Video - &Wideo - - - &Anisotropic filtering - &Filtrowanie anizotropowe - - - &Zoom - &Powiększenie - - - Co&ntrols - S&terowanie - - - - &Core - Jądr&o - - - - &Ignore Illegal reads/writes - - - - - &Help - Pomo&c - - - - &Open... - &Otwórz... - - - - &Close - &Zamknij - - - Quickload state - Wczytaj stan - - - F4 - F4 - - - Quicksave state - Zapisz stan - - - F2 - F2 - - - - &Load State File... - &Wczytaj plik stanu... - - - - &Save State File... - &Zapisz plik stanu... - - - - E&xit - Wyj&dź - - - - &Run - &Uruchom - - - F7 - F7 - - - - &Pause - &Pauza - - - F8 - F8 - - - R&eset - &Reset - - - &Interpreter - &Interpreter - - - &Slightly Faster Interpreter - &Szybszy interpreter - - - &Dynarec - R&ekompilacja (Dynarec) - - - Load &Map File... - &Wczytaj plik mapy... - - - &Save Map File... - &Zapisz plik mapy... - - - &Reset Symbol Table - Zresetuj &tablicę symboli - - - &Disassembly - &Deasembler - - - Ctrl+D - Ctrl+D - - - &Log Console - &Konsola logowania - - - Ctrl+L - Ctrl+L - - - Memory &View... - Widok &pamięci... - - - Ctrl+M - Ctrl+M - - - &Keyboard - &Klawiatura - - - &Toggle fullscreen - Pełny &ekran - - - Show &debug statistics - Pokaż &statystyki - - - I&gnore illegal reads/writes - I&gnoruj błędne odczyty/zapisy - - - &Gamepad - &Pad - - - Run on loa&d - Uruchom po &załadowaniu - - - Show &FPS counter - Pokaż licznik &FPS - - - S&tretch to display - &Rozciągnij obraz - - - &Sound emulation - &Emulacja dźwięku - - - F11 - F11 - - - - &Buffered Rendering - &Buforowane renderowanie - - - F5 - F5 - - - - &Hardware Transform - Sprzętowa &transformacja - - - F6 - F6 - - - - &Linear Filtering - Filtrowanie &liniowe - - - &Wireframe (experimental) - &Widok siatki (eksperymentalny) - - - &Display Raw Framebuffer - Wyświetl &surowy framebuffer - - - Screen &1x - &1x - - - Ctrl+1 - Ctrl+1 - - - Screen &2x - &2x - - - Ctrl+2 - Ctrl+2 - - - Screen &3x - &3x - - - Ctrl+3 - Ctrl+3 - - - Screen &4x - &4x - - - Ctrl+4 - Ctrl+4 - - - &Fast Memory (dynarec, unstable) - S&zybka pamięć (wymagany Dynarec, niestabilne) - - - &Go to http://www.ppsspp.org/ - &Idź do http://www.ppsspp.org - - - - &About PPSSPP... - &O PPSSPP... - - - &Use VBO - Użyj &VBO - - - - Re&set - - - - - Run on &load - - - - - De&bug - - - - - Load Map File... - - - - - Save Map File... - - - - - Reset Symbol Table - - - - - Dump next frame to log - - - - - Disassembly - - - - - Display List... - - - - - Log Console - - - - - Memory View - - - - - Memory View Texture - - - - - &CPU Dynarec - - - - - &Vertex Decoder Dynarec - - - - - Fast &Memory (unstable) - - - - - &Anisotropic Filtering - - - - - &Screen Size - - - - - &Stretch to Display - - - - - &Vertex Cache - &Cache wierzchołków - - - - &Frameskip - - - - - &Audio - - - - - &Fullscreen - - - - - &Show debug statistics - - - - - &Show FPS - - - - - Lo&g levels - - - - Debug - Debug - - - Warning - Ostrzeżenia - - - Error - Błędy - - - Info - Info - - - - &Go to official website - - - - D&ump next frame to log - Z&rzuć następną ramkę do logu - - - Off - Wyłączone - - - diff --git a/Qt/languages/ppsspp_pt-br.ts b/Qt/languages/ppsspp_pt-br.ts deleted file mode 100644 index 4eef7fca58..0000000000 --- a/Qt/languages/ppsspp_pt-br.ts +++ /dev/null @@ -1,1069 +0,0 @@ - - - - - Controls - - Controls - Controls window title - Controles - - - - CtrlDisAsmView - - - Copy &address - Copiar &endereço - - - - Copy instruction (&hex) - Copiar instrução (&hex) - - - - Copy instruction (&disasm) - Copiar instrução (&disam) - - - - &Run to here - &Rodar aqui - - - - &Set Next Statement - - - - - &Toggle breakpoint - &Ativar breakpoint - - - - &Follow branch - &Seguir caminho - - - - Go to in &Memory View - Vá para o Visualizador de &Memória - - - - &Rename function... - &Renomear função... - - - - New function name - Novo nome de função - - - - New function name: - Novo nome de função: - - - - Warning - Atenção - - - - No symbol selected - - - - - CtrlMemView - - - Go to in &disasm - Vá para &disasm - - - - &Copy value - &Copiar valor - - - - C&hange value - - - - - Dump... - Despejar... - - - - Set new value - Setar novo valor - - - - Set new value: - Setar novo valor: - - - - CtrlRegisterList - - - Go to in &memory view - Vá para o visualizador de &memória - - - - Go to in &disasm - Vá para o &disasm - - - - &Copy value - &Copiar valor - - - - C&hange... - &Trocar... - - - - Set new value - Setar novo valor - - - - Set new value: - Setar novo valor: - - - - Debugger_Disasm - - - Disassembler - Window title - - - - - Ctr: - - - - - &Go to - &Vá para - - - - &PC - - - - - &LR - - - - - Show VFPU - Mostrar VFPU - - - - Regs - - - - - Funcs - - - - - &Go - &Ir - - - - Stop - Parar - - - - Step &Into - - - - - Step &Over - - - - - S&kip - P&ular - - - - Next &HLE - Próximo &HLE - - - - Breakpoints - - - - - Address - Endereços - - - - Clear All - Limpar Tudo - - - - Callstack - - - - - Display Lists - Mostrar Listas - - - - - Id - - - - - - Status - Estado - - - - Start Address - Endereço inicial - - - - Current Address - Endereço atual - - - Run - Rodar - - - Step - Passo - - - - Threads - - - - - Name - Nome - - - - Current PC - PC corrente - - - - Entry point - Ponto de entrada - - - - Remove breakpoint - Remover breakpoint - - - - Go to entry point - Ir para ponto de entrada - - - - Change status - - - - - Running - Rodando - - - - Wait - Esperando - - - - Suspend - Suspenso - - - Show code - Mostrar código - - - - Debugger_DisplayList - - - Dialog - Diálogo - - - - DisplayList - - - - - Id - - - - - Status - Estado - - - - Start Address - Endereço inicial - - - - Current Address - Endereço atual - - - - Run - Rodar - - - - Stop - Parar - - - - Next DL - - - - - Commands - - - - - Step - Passo - - - - Next Draw - - - - - Goto PC - - - - - Textures - - - - - - Address - Endereços - - - - - Width - - - - - - Height - - - - - - Format - - - - - Vertex Buffer - - - - - Coord Type - - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - - - - - Has Position - - - - - Has Normal - - - - - Has Color - - - - - Has UV - - - - - Values - - - - - - Next 20 - - - - - Index Buffer - - - - - Idx - - - - - Value - - - - - Framebuffer - - - - - VAddress - - - - - Display : - - - - - Color - - - - - Depth - - - - - Zoom- - - - - - Zoom+ - - - - - Run to here - - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - Diálogo - - - - Goto: - Vá para: - - - - Mode - Modo - - - - Normal - - - - - Symbols - Símbolos - - - - Memory Viewer - %1 - Visualizador de Memória - %1 - - - - Debugger_MemoryTex - - - Dialog - Diálogo - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - - - - - Debugger_VFPU - - - VFPU - - - - - Float - - - - - HalfFloat - - - - - Hex - - - - - Bytes - - - - - Shorts - - - - - Ints - - - - - MainWindow - - - &File - &Arquivo - - - - Quickload State - - - - - Quicksave State - - - - - &Emulation - &Emulação - - - - Re&set - - - - - Run on &load - - - - - Load Map File... - - - - - Save Map File... - - - - - Reset Symbol Table - - - - - Dump next frame to log - - - - - Disassembly - - - - - Display List... - - - - - Log Console - - - - - Memory View - - - - - Memory View Texture - - - - - &Options - &Opções - - - - &CPU Dynarec - - - - - &Vertex Decoder Dynarec - - - - - Fast &Memory (unstable) - - - - - &Stretch to Display - - - - - &Vertex Cache - Cache de &Vértices - - - - &Frameskip - - - - - &Audio - - - - - &Fullscreen - - - - - &Show debug statistics - - - - - &Show FPS - - - - - &Go to official website - - - - Default - Padrão - - - Lo&g Levels - Nível de Lo&g - - - - &Language - &Linguagem - - - - &Video - &Vídeo - - - &Anisotropic filtering - Filtragem &Anisotrópica - - - Co&ntrols - Co&ntroles - - - - &Core - &Núcleo - - - - &Help - Aj&uda - - - - &Open... - &Abrir... - - - - &Close - &Fechar - - - Quickload state - Carregar estado rápido - - - Quicksave state - Salvar estado rápido - - - - &Load State File... - &Carregar estado do arquivo... - - - - &Save State File... - &Salvar estado no arquivo... - - - - E&xit - Sai&r - - - - &Run - &Rodar - - - - &Pause - &Pausar - - - R&eset - R&esetar - - - &Interpreter - &Interpretador - - - &Slightly Faster Interpreter - Interpretador um &pouco mais rápido - - - &Dynarec - Recompilador &dinâmico - - - Load &Map File... - Carregar &mapa do arquivo... - - - &Save Map File... - &Salvar mapa no arquivo... - - - &Reset Symbol Table - &Reiniciar tabela de símbolos - - - Ctrl+D - L - - - &Log Console - Console de &Logs - - - Ctrl+L - L - - - Memory &View... - &Visualizador de Memória... - - - &Keyboard - &Teclado - - - &Toggle fullscreen - Tela &cheia - - - Show &debug statistics - Mostrar estatísticas de &debug - - - I&gnore illegal reads/writes - I&gnorar leituras/escritas ilegais - - - Run on loa&d - Rodar ao &abrir - - - Show &FPS counter - Mostrar contador de &FPS - - - S&tretch to display - Es&ticar tela - - - &Sound emulation - Emular &som - - - - &Buffered Rendering - Renderização com &buffer - - - - &Hardware Transform - Transformação em &Hardware - - - - &Linear Filtering - Filtragem &Linear - - - &Wireframe (experimental) - &Wireframe (experimental) - - - &Display Raw Framebuffer - Mostrar framebuffer &bruto - - - Screen &1x - &1x Tela - - - Screen &2x - &2x Tela - - - Screen &3x - &3x Tela - - - Screen &4x - &4x Tela - - - &Fast Memory (dynarec, unstable) - Memória &rápida (recompilador dinâmico, instável) - - - &Go to http://www.ppsspp.org/ - &Ir para http://www.ppsspp.org/ - - - - &About PPSSPP... - &Sobre o PPSSPP... - - - &Use VBO - &Usar VBO - - - - De&bug - - - - - &Ignore Illegal reads/writes - - - - - &Anisotropic Filtering - - - - - &Screen Size - - - - - Lo&g levels - - - - Warning - Atenção - - - Error - Erro - - - Info - Informação - - - D&ump next frame to log - D&espejar o próximo frame no log - - - Memory View Texture... - Ver texturas na memória... - - - Off - Desligar - - - diff --git a/Qt/languages/ppsspp_ru.ts b/Qt/languages/ppsspp_ru.ts deleted file mode 100644 index 4db26ccbe4..0000000000 --- a/Qt/languages/ppsspp_ru.ts +++ /dev/null @@ -1,1089 +0,0 @@ - - - - - Controls - - Controls - Controls window title - Управление - - - - CtrlDisAsmView - - - Copy &address - - - - - Copy instruction (&hex) - - - - - Copy instruction (&disasm) - - - - - &Run to here - - - - - &Set Next Statement - - - - - &Toggle breakpoint - - - - - &Follow branch - - - - - Go to in &Memory View - - - - - &Rename function... - - - - - New function name - - - - - New function name: - - - - - Warning - Предупреждение - - - - No symbol selected - - - - - CtrlMemView - - - Go to in &disasm - - - - - &Copy value - - - - - C&hange value - - - - - Dump... - - - - - Set new value - - - - - Set new value: - - - - - CtrlRegisterList - - - Go to in &memory view - - - - - Go to in &disasm - - - - - &Copy value - - - - - C&hange... - - - - - Set new value - - - - - Set new value: - - - - - Debugger_Disasm - - - Disassembler - Window title - - - - - Ctr: - - - - - &Go to - - - - - &PC - - - - - &LR - - - - - Show VFPU - - - - - Regs - - - - - Funcs - - - - - &Go - - - - - Stop - - - - - Step &Into - - - - - Step &Over - - - - - S&kip - - - - - Next &HLE - - - - - Breakpoints - - - - - Address - - - - - Clear All - - - - - Callstack - - - - - Display Lists - - - - - - Id - - - - - - Status - - - - - Start Address - - - - - Current Address - - - - - Threads - - - - - Name - - - - - Current PC - - - - - Entry point - - - - - Remove breakpoint - - - - - Go to entry point - - - - - Change status - - - - - Running - - - - - Wait - - - - - Suspend - - - - - Debugger_DisplayList - - - Dialog - - - - - DisplayList - - - - - Id - - - - - Status - - - - - Start Address - - - - - Current Address - - - - - Run - - - - - Stop - - - - - Next DL - - - - - Commands - - - - - Step - - - - - Next Draw - - - - - Goto PC - - - - - Textures - - - - - - Address - - - - - - Width - - - - - - Height - - - - - - Format - - - - - Vertex Buffer - - - - - Coord Type - - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - - - - - Has Position - - - - - Has Normal - - - - - Has Color - - - - - Has UV - - - - - Values - - - - - - Next 20 - - - - - Index Buffer - - - - - Idx - - - - - Value - - - - - Framebuffer - - - - - VAddress - - - - - Display : - - - - - Color - - - - - Depth - - - - - Zoom- - - - - - Zoom+ - - - - - Run to here - - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - - - - - Goto: - - - - - Mode - - - - - Normal - - - - - Symbols - - - - - Memory Viewer - %1 - - - - - Debugger_MemoryTex - - - Dialog - - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - - - - - Debugger_VFPU - - - VFPU - - - - - Float - - - - - HalfFloat - - - - - Hex - - - - - Bytes - - - - - Shorts - - - - - Ints - - - - - MainWindow - - PPSSPP - PPSSPP - - - - &File - &Файл - - - - Quickload State - Быстро загрузить состояние - - - - Quicksave State - Быстро сохранить состояние - - - - &Emulation - &Эмуляция - - - Debu&g - &Отладка - - - - &Options - &Настройки - - - G3D - G3D - - - HLE - HLE - - - Default - По умолчанию - - - Lo&g Levels - Уровень ло&гирования - - - - &Language - &Язык - - - - &Video - &Видео - - - &Anisotropic filtering - &Анизотропная фильтрация - - - &Zoom - &Экран - - - Co&ntrols - У&правление - - - - &Core - &Ядро - - - - &Ignore Illegal reads/writes - &Игнорировать неправильные чтения/запись - - - - &Help - &Помощь - - - - &Open... - &Открыть... - - - - &Close - &Закрыть - - - - - - - - - Quickload state - Быстро загрузить состояние - - - Quicksave state - Быстро сохранить состояние - - - F2 - F2 - - - - &Load State File... - &Открыть файл состояния... - - - - &Save State File... - &Сохранить файл состояния... - - - - E&xit - В&ыход - - - - &Run - &Запустить - - - - &Pause - &Пауза - - - R&eset - Пере&загрузить - - - &Dynarec - &Dynarec - - - Load &Map File... - Загрузить файл &карты... - - - &Save Map File... - &Сохранить файл карты... - - - &Reset Symbol Table - &Сбросить таблицу символов - - - &Disassembly - &Деасэмблинг - - - &Log Console - &Консоль логов - - - Memory &View... - &Отображение памяти... - - - &Keyboard - &Клавиатура - - - &Toggle fullscreen - &Полный экран - - - Show &debug statistics - Показывать &отладочную информацию - - - I&gnore illegal reads/writes - &Игнорировать неправильные чтения/запись - - - &Gamepad - &Геймпад - - - Run on loa&d - Запускать при &загрузке - - - Show &FPS counter - Показывать &FPS - - - S&tretch to display - За&стягивать под экран - - - &Sound emulation - Эмуляция &звука - - - - &Buffered Rendering - &Буферированный рендеринг - - - F5 - F5 - - - - &Hardware Transform - &Аппаратное преобразование - - - F6 - F6 - - - - &Linear Filtering - &Линейная фильтрация - - - &Wireframe (experimental) - &Отображать каркас (экспериментально) - - - &Display Raw Framebuffer - &Отображать буфер кадров - - - Screen &1x - Увеличить &1x - - - &Fast Memory (dynarec, unstable) - &Быстрая память (dynarec, нестабильно) - - - - &About PPSSPP... - &О PPSSPP... - - - &Use VBO - &Использовать VBO - - - - Re&set - Пере&загрузить - - - - Run on &load - Запускать при &загрузке - - - - De&bug - &Отладка - - - - Load Map File... - Загрузить файл &карты... - - - - Save Map File... - &Сохранить файл карты... - - - - Reset Symbol Table - &Сбросить таблицу символов - - - - Dump next frame to log - С&бросить следующий кадр в лог - - - - Disassembly - &Деасэмблинг - - - - Display List... - Список экранов... - - - - Log Console - &Консоль логов - - - - Memory View - &Отображение памяти - - - - Memory View Texture - Память отображаемых текстур - - - - &CPU Dynarec - &Dynarec - - - - &Vertex Decoder Dynarec - - - - - Fast &Memory (unstable) - &Быстрая память (нестабильно) - - - - &Anisotropic Filtering - &Анизотропная фильтрация - - - - &Screen Size - (&S)Размер экрана - - - - &Stretch to Display - За&стягивать под экран - - - - &Vertex Cache - &Vertex кэш - - - - &Frameskip - Пропуск кадров - - - - &Audio - &Aудио - - - - &Fullscreen - &Полный экран - - - - &Show debug statistics - Показывать &отладочную информацию - - - - &Show FPS - Показывать &FPS - - - - Lo&g levels - Уровень ло&гирования - - - Debug - Отладка - - - Warning - Предупреждение - - - Error - Ошибка - - - Info - Информация - - - - &Go to official website - (&G)Зайдите на официальный сайт - - - D&ump next frame to log - С&бросить следующий кадр в лог - - - Memory View Texture... - Память отображаемых текстур... - - - DisplayList... - Список экранов... - - - Simple 2xAA - Простое 2x сглаживание - - - Off - Выключено - - - Frameskip - Пропуск кадров - - - You need to compile with SDL to have Gamepad support. - Вам нужно скомпилировать с SDL чтобы иметь поддержку геймпада. - - - diff --git a/Qt/languages/ppsspp_zh-cn.ts b/Qt/languages/ppsspp_zh-cn.ts deleted file mode 100644 index 651ee96e42..0000000000 --- a/Qt/languages/ppsspp_zh-cn.ts +++ /dev/null @@ -1,1145 +0,0 @@ - - - - - Controls - - Controls - Controls window title - 控制器 - - - - CtrlDisAsmView - - - Copy &address - (&A)复制地址 - - - - Copy instruction (&hex) - (&H)复制指令(十六进制型) - - - - Copy instruction (&disasm) - (&D)复制指令(汇编型) - - - - &Run to here - (&R)执行到此处 - - - - &Set Next Statement - (&S)设置下一语句 - - - - &Toggle breakpoint - (&T)锁定断点 - - - - &Follow branch - (&F)跟随分支 - - - - Go to in &Memory View - (&M)转到内存视图 - - - - &Rename function... - (&R)重命名函数... - - - - New function name - 新函数名称 - - - - New function name: - 新函数名称: - - - - Warning - 警告 - - - - No symbol selected - 没有选择象征 - - - - CtrlMemView - - - Go to in &disasm - (&D)转到汇编视图 - - - - &Copy value - (&C)复制值 - - - - C&hange value - - - - - Dump... - 转储... - - - - Set new value - 设置新值 - - - - Set new value: - 设置新值: - - - - CtrlRegisterList - - - Go to in &memory view - (&M)转到内存视图 - - - - Go to in &disasm - (&D)转到汇编视图 - - - - &Copy value - (&C)复制值 - - - - C&hange... - (&H)更改... - - - - Set new value - 设置新值 - - - - Set new value: - 设置新值: - - - - Debugger_Disasm - - - Disassembler - Window title - 反汇编器 - - - - Ctr: - 计数器: - - - - &Go to - (&G)转到 - - - - &PC - (&P)PC寄存器 - - - - &LR - (&L)连接寄存器 - - - - Show VFPU - 显示VFPU - - - - Regs - 寄存器 - - - - Funcs - 函数 - - - - &Go - (&G)转到 - - - - Stop - 停止 - - - - Step &Into - (&I)单步跟进 - - - - Step &Over - (&O)单步步过 - - - - S&kip - (&K)跳过 - - - - Next &HLE - (&H)下一HLE - - - - Breakpoints - 断点 - - - - Address - 地址 - - - - Clear All - 清空所有 - - - - Callstack - 调用栈 - - - - Display Lists - 显示列表 - - - - - Id - Id - - - - - Status - 状态 - - - - Start Address - 起始地址 - - - - Current Address - 当前地址 - - - Run - 执行 - - - Step - 单步执行 - - - - Threads - 线程 - - - - Name - 名称 - - - - Current PC - 当前PC寄存器 - - - - Entry point - 入口点 - - - - Remove breakpoint - 移除断点 - - - - Go to entry point - 转到入口点 - - - - Change status - - - - - Running - 执行中 - - - - Wait - 等待 - - - - Suspend - 挂起 - - - Show code - 显示代码 - - - - Debugger_DisplayList - - - Dialog - 对话框 - - - - DisplayList - - - - - Id - Id - - - - Status - 状态 - - - - Start Address - 起始地址 - - - - Current Address - 当前地址 - - - - Run - 执行 - - - - Stop - 停止 - - - - Next DL - - - - - Commands - - - - - Step - 单步执行 - - - - Next Draw - - - - - Goto PC - - - - - Textures - - - - - - Address - 地址 - - - - - Width - - - - - - Height - - - - - - Format - - - - - Vertex Buffer - - - - - Coord Type - - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - - - - - Has Position - - - - - Has Normal - - - - - Has Color - - - - - Has UV - - - - - Values - - - - - - Next 20 - - - - - Index Buffer - - - - - Idx - - - - - Value - - - - - Framebuffer - - - - - VAddress - - - - - Display : - - - - - Color - - - - - Depth - - - - - Zoom- - - - - - Zoom+ - - - - - Run to here - - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - 对话框 - - - - Goto: - 转到: - - - - Mode - 模式 - - - - Normal - 普通模式 - - - - Symbols - 特征符模式 - - - - Memory Viewer - %1 - 内存查看器 - %1 - - - - Debugger_MemoryTex - - - Dialog - 对话框 - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - - - - - Debugger_VFPU - - - VFPU - VFPU - - - - Float - 浮点型 - - - - HalfFloat - 半浮点型 - - - - Hex - 十六进制型 - - - - Bytes - 字节型 - - - - Shorts - 短整型 - - - - Ints - 整型 - - - - MainWindow - - PPSSPP - PPSSPP - - - - &File - (&F)文件 - - - - Quickload State - 快速负载态 - - - - Quicksave State - 快速保存态 - - - - &Emulation - (&E)模拟 - - - Debu&g - (&G)调试 - - - - &Options - (&O)选项 - - - Default - 默认 - - - Lo&g Levels - (&G)日志级别 - - - - &Language - (&L)语言选择 - - - - &Video - (&V)视频 - - - &Anisotropic filtering - (&A)各向异性过滤 - - - &Zoom - (&Z)缩放 - - - Co&ntrols - (&N)控制 - - - - &Core - (&C)核心 - - - - &Ignore Illegal reads/writes - 忽略非法读取/写入 - - - - &Help - (&H)帮助 - - - - &Open... - (&O)打开... - - - - &Close - (&C)关闭 - - - - - - - - - Quickload state - 快速读档 - - - F4 - F4 - - - Quicksave state - 快速存档 - - - F2 - F2 - - - - &Load State File... - (&L)读取存档... - - - - &Save State File... - (&S)保存存档... - - - - E&xit - (&X)退出 - - - - &Run - (&R)运行 - - - F7 - F7 - - - - &Pause - (&P)暂停 - - - F8 - F8 - - - R&eset - (&E)重置 - - - &Interpreter - (&I)解释器 - - - &Slightly Faster Interpreter - (&S)较快的解释器 - - - &Dynarec - (&D)动态重编译 - - - Load &Map File... - (&M)读取Map文件... - - - &Save Map File... - (&S)保存Map文件... - - - &Reset Symbol Table - (&R)重置符号表 - - - &Disassembly - (&D)汇编视图 - - - Ctrl+D - Ctrl+D - - - &Log Console - (&L)查看控制台日志 - - - Ctrl+L - Ctrl+L - - - Memory &View... - (&V)内存视图... - - - Ctrl+M - Ctrl+M - - - &Keyboard - (&K)键盘 - - - &Toggle fullscreen - (&T)全屏 - - - Show &debug statistics - (&D)显示调试信息 - - - I&gnore illegal reads/writes - (&G)忽略非法读写 - - - &Gamepad - (&G)手柄 - - - Run on loa&d - (&D)载入时运行 - - - Show &FPS counter - (&F)显示帧率计数器 - - - S&tretch to display - (&T)拉伸显示 - - - &Sound emulation - (&S)模拟声音 - - - F11 - F11 - - - - &Buffered Rendering - (&B)渲染缓冲 - - - F5 - F5 - - - - &Hardware Transform - (&H)硬件加速 - - - F6 - F6 - - - - &Linear Filtering - (&L)线性过滤 - - - &Wireframe (experimental) - (&W)使用线框 (实验性选项) - - - &Display Raw Framebuffer - (&D)显示 Raw 原始缓冲 - - - Screen &1x - &1倍窗口 - - - Ctrl+1 - Ctrl+1 - - - Screen &2x - &2倍窗口 - - - Ctrl+2 - Ctrl+2 - - - Screen &3x - &3倍窗口 - - - Ctrl+3 - Ctrl+3 - - - Screen &4x - &4倍窗口 - - - Ctrl+4 - Ctrl+4 - - - &Fast Memory (dynarec, unstable) - (&F)高速闪存 (动态重编译,不稳定) - - - &Go to http://www.ppsspp.org/ - (&G)转到 http://www.ppsspp.org/ - - - - &About PPSSPP... - (&A)关于 PPSSPP... - - - &Use VBO - (&U)使用 VBO - - - - Re&set - (&R)复位 - - - - Run on &load - 加载时执行 - - - - De&bug - 调试 - - - - Load Map File... - 载入地图文件 - - - - Save Map File... - 保存地图文件 - - - - Reset Symbol Table - 重置符号表 - - - - Dump next frame to log - 将下一帧转储至日志 - - - - Disassembly - 汇编视图 - - - - Display List... - 显示列表... - - - - Log Console - 查看控制台日志 - - - - Memory View - 内存视图 - - - - Memory View Texture - 内存纹理视图 - - - - &CPU Dynarec - (&D)动态重编译 - - - - &Vertex Decoder Dynarec - 顶点解码器动态重编译 - - - - Fast &Memory (unstable) - (&F)高速闪存 (动态重编译,不稳定) - - - - &Anisotropic Filtering - (&A)各向异性过滤 - - - - &Screen Size - 屏幕尺寸 - - - - &Stretch to Display - (&T)拉伸显示 - - - - &Vertex Cache - (&V)顶点缓存 - - - - &Frameskip - (&F)跳帧 - - - - &Audio - (&S)声响 - - - - &Fullscreen - (&F)全屏 - - - - &Show debug statistics - (&D)显示调试信息 - - - - &Show FPS - (&F)显示帧率计数器 - - - - Lo&g levels - (&G)日志级别 - - - Debug - 调试 - - - Warning - 警告 - - - Error - 错误 - - - Info - 信息 - - - - &Go to official website - (&G)进入官方网站 - - - D&ump next frame to log - (&U)将下一帧转储至日志 - - - Memory View Texture... - 内存纹理视图... - - - Off - 关闭 - - - diff --git a/Qt/languages/ppsspp_zh-tw.ts b/Qt/languages/ppsspp_zh-tw.ts deleted file mode 100644 index 19ca000742..0000000000 --- a/Qt/languages/ppsspp_zh-tw.ts +++ /dev/null @@ -1,1145 +0,0 @@ - - - - - Controls - - Controls - Controls window title - 控制器 - - - - CtrlDisAsmView - - - Copy &address - (&A)複製地址 - - - - Copy instruction (&hex) - (&H)複製指令(十六進制型) - - - - Copy instruction (&disasm) - (&D)複製指令(彙編型) - - - - &Run to here - (&R)執行到此處 - - - - &Set Next Statement - (&S)設置下一語句 - - - - &Toggle breakpoint - (&T)鎖定斷點 - - - - &Follow branch - (&F)跟隨分支 - - - - Go to in &Memory View - (&M)轉到內存視圖 - - - - &Rename function... - (&R)重命名函數... - - - - New function name - 新函數名稱 - - - - New function name: - 新函數名稱: - - - - Warning - 警告 - - - - No symbol selected - - - - - CtrlMemView - - - Go to in &disasm - (&D)轉到彙編視圖 - - - - &Copy value - (&C)複製值 - - - - C&hange value - - - - - Dump... - 轉儲... - - - - Set new value - 設置新值 - - - - Set new value: - 設置新值: - - - - CtrlRegisterList - - - Go to in &memory view - (&M)轉到內存視圖 - - - - Go to in &disasm - (&D)轉到彙編視圖 - - - - &Copy value - (&C)複製值 - - - - C&hange... - (&H)更改... - - - - Set new value - 設置新值 - - - - Set new value: - 設置新值: - - - - Debugger_Disasm - - - Disassembler - Window title - 反彙編器 - - - - Ctr: - 計數器: - - - - &Go to - (&G)轉到 - - - - &PC - (&P)PC寄存器 - - - - &LR - (&L)連接寄存器 - - - - Show VFPU - 顯示VFPU - - - - Regs - 寄存器 - - - - Funcs - 函數 - - - - &Go - (&G)轉到 - - - - Stop - 停止 - - - - Step &Into - (&I)單步跟進 - - - - Step &Over - (&O)單步步過 - - - - S&kip - (&K)跳過 - - - - Next &HLE - (&H)下一HLE - - - - Breakpoints - 斷點 - - - - Address - 地址 - - - - Clear All - 清空所有 - - - - Callstack - 調用棧 - - - - Display Lists - 顯示列表 - - - - - Id - Id - - - - - Status - 狀態 - - - - Start Address - 起始地址 - - - - Current Address - 當前地址 - - - Run - 執行 - - - Step - 單步執行 - - - - Threads - 線程 - - - - Name - 名稱 - - - - Current PC - 當前PC寄存器 - - - - Entry point - 入口點 - - - - Remove breakpoint - 移除斷點 - - - - Go to entry point - 轉到入口點 - - - - Change status - - - - - Running - 執行中 - - - - Wait - 等待 - - - - Suspend - 掛起 - - - Show code - 顯示代碼 - - - - Debugger_DisplayList - - - Dialog - 對話框 - - - - DisplayList - - - - - Id - Id - - - - Status - 狀態 - - - - Start Address - 起始地址 - - - - Current Address - 當前地址 - - - - Run - 執行 - - - - Stop - 停止 - - - - Next DL - - - - - Commands - - - - - Step - 單步執行 - - - - Next Draw - - - - - Goto PC - - - - - Textures - - - - - - Address - 地址 - - - - - Width - - - - - - Height - - - - - - Format - - - - - Vertex Buffer - - - - - Coord Type - - - - - Number Morph - - - - - Number Weights - - - - - Has Weight - - - - - Has Position - - - - - Has Normal - - - - - Has Color - - - - - Has UV - - - - - Values - - - - - - Next 20 - - - - - Index Buffer - - - - - Idx - - - - - Value - - - - - Framebuffer - - - - - VAddress - - - - - Display : - - - - - Color - - - - - Depth - - - - - Zoom- - - - - - Zoom+ - - - - - Run to here - - - - - Run to draw using this texture - - - - - Debugger_Memory - - - Dialog - 對話框 - - - - Goto: - 轉到: - - - - Mode - 模式 - - - - Normal - 普通模式 - - - - Symbols - 特徵符模式 - - - - Memory Viewer - %1 - 內存查看器 - %1 - - - - Debugger_MemoryTex - - - Dialog - 對話框 - - - - TexAddr - - - - - TexBufWidth0 - - - - - TexFormat - - - - - TexSize - - - - - ClutFormat - - - - - ClutAddr - - - - - ClutAddrUpper - - - - - LoadClut - - - - - TexMode - - - - - Read - - - - - Debugger_VFPU - - - VFPU - VFPU - - - - Float - 浮點型 - - - - HalfFloat - 半浮點型 - - - - Hex - 十六進制型 - - - - Bytes - 字節型 - - - - Shorts - 短整型 - - - - Ints - 整型 - - - - MainWindow - - PPSSPP - PPSSPP - - - - &File - (&F)文件 - - - - Quickload State - - - - - Quicksave State - - - - - &Emulation - (&E)模擬 - - - Debu&g - (&G)調試 - - - - &Options - (&O)選項 - - - Default - 默認 - - - Lo&g Levels - (&G)日誌級別 - - - - &Language - (&L)語言選擇 - - - - &Video - (&V)視頻 - - - &Anisotropic filtering - (&A)各向異性過濾 - - - &Zoom - (&Z)縮放 - - - Co&ntrols - (&N)控制 - - - - &Core - (&C)核心 - - - - &Ignore Illegal reads/writes - - - - - &Help - (&H)幫助 - - - - &Open... - (&O)打開... - - - - &Close - (&C)關閉 - - - - - - - - - Quickload state - 快速讀檔 - - - F4 - F4 - - - Quicksave state - 快速存檔 - - - F2 - F2 - - - - &Load State File... - (&L)讀取存檔... - - - - &Save State File... - (&S)保存存檔... - - - - E&xit - (&X)退出 - - - - &Run - (&R)運行 - - - F7 - F7 - - - - &Pause - (&P)暫停 - - - F8 - F8 - - - R&eset - (&E)重置 - - - &Interpreter - (&I)解釋器 - - - &Slightly Faster Interpreter - (&S)較快的解釋器 - - - &Dynarec - (&D)動態重編譯 - - - Load &Map File... - (&M)讀取Map文件... - - - &Save Map File... - (&S)保存Map文件... - - - &Reset Symbol Table - (&R)重置符號表 - - - &Disassembly - (&D)彙編視圖 - - - Ctrl+D - Ctrl+D - - - &Log Console - (&L)查看控制台日誌 - - - Ctrl+L - Ctrl+L - - - Memory &View... - (&V)內存視圖... - - - Ctrl+M - Ctrl+M - - - &Keyboard - (&K)鍵盤 - - - &Toggle fullscreen - (&T)全屏 - - - Show &debug statistics - (&D)顯示調試信息 - - - I&gnore illegal reads/writes - (&G)忽略非法讀寫 - - - &Gamepad - (&G)手柄 - - - Run on loa&d - (&D)載入時運行 - - - Show &FPS counter - (&F)顯示幀率計數器 - - - S&tretch to display - (&T)拉伸顯示 - - - &Sound emulation - (&S)模擬聲音 - - - F11 - F11 - - - - &Buffered Rendering - (&B)渲染緩衝 - - - F5 - F5 - - - - &Hardware Transform - (&H)硬件加速 - - - F6 - F6 - - - - &Linear Filtering - (&L)線性過濾 - - - &Wireframe (experimental) - (&W)使用線框 (實驗性選項) - - - &Display Raw Framebuffer - (&D)顯示 Raw 原始緩衝 - - - Screen &1x - &1倍窗口 - - - Ctrl+1 - Ctrl+1 - - - Screen &2x - &2倍窗口 - - - Ctrl+2 - Ctrl+2 - - - Screen &3x - &3倍窗口 - - - Ctrl+3 - Ctrl+3 - - - Screen &4x - &4倍窗口 - - - Ctrl+4 - Ctrl+4 - - - &Fast Memory (dynarec, unstable) - (&F)高速閃存 (動態重編譯,不穩定) - - - &Go to http://www.ppsspp.org/ - (&G)轉到 http://www.ppsspp.org/ - - - - &About PPSSPP... - (&A)關於 PPSSPP... - - - &Use VBO - (&U)使用 VBO - - - - Re&set - - - - - Run on &load - - - - - De&bug - - - - - Load Map File... - - - - - Save Map File... - - - - - Reset Symbol Table - - - - - Dump next frame to log - - - - - Disassembly - - - - - Display List... - - - - - Log Console - - - - - Memory View - - - - - Memory View Texture - - - - - &CPU Dynarec - - - - - &Vertex Decoder Dynarec - - - - - Fast &Memory (unstable) - - - - - &Anisotropic Filtering - - - - - &Screen Size - - - - - &Stretch to Display - - - - - &Vertex Cache - (&V)頂點緩存 - - - - &Frameskip - - - - - &Audio - - - - - &Fullscreen - - - - - &Show debug statistics - - - - - &Show FPS - - - - - Lo&g levels - - - - Debug - 調試 - - - Warning - 警告 - - - Error - 錯誤 - - - Info - 信息 - - - - &Go to official website - - - - D&ump next frame to log - (&U)將下一幀轉儲至日誌 - - - Memory View Texture... - 內存紋理視圖... - - - Off - 關閉 - - - diff --git a/Qt/macbundle.sh b/Qt/macbundle.sh deleted file mode 100644 index 457e618d37..0000000000 --- a/Qt/macbundle.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -PPSSPP="${1}" -PPSSPPQt="${PPSSPP}/Contents/MacOS/PPSSPPQt" - -if [ ! -f "${PPSSPPQt}" ]; then - echo "No such file: ${PPSSPPQt}!" - exit 0 -fi - -GIT_VERSION_LINE=$(grep "PPSSPP_GIT_VERSION = " "$(dirname "${0}")/../git-version.cpp") - -echo "Running Qt macbundle.sh for $PPSSPP/Contents/Info.plist ($GIT_VERSION_LINE)" - -# Why don't we just put these in the template? -plutil -replace NSPrincipalClass -string NSApplication ${PPSSPP}/Contents/Info.plist -plutil -replace NSHighResolutionCapable -bool YES ${PPSSPP}/Contents/Info.plist - -plutil -replace NSLocationWhenInUseUsageDescription -string "Your location may be used to emulate Go!Explore, a GPS accessory" ${PPSSPP}/Contents/Info.plist -plutil -replace NSCameraUsageDescription -string "Your camera may be used to emulate Go!Cam, a camera accessory" ${PPSSPP}/Contents/Info.plist -plutil -replace NSMicrophoneUsageDescription -string "Your microphone may be used to emulate Go!Cam/Talkman, a microphone accessory" ${PPSSPP}/Contents/Info.plist - -SHORT_VERSION_MATCH='.*"v([0-9\.]+(-[0-9]+)?).*";' -LONG_VERSION_MATCH='.*"v(.*)";' -if [[ "${GIT_VERSION_LINE}" =~ ^${SHORT_VERSION_MATCH}$ ]]; then - plutil -replace CFBundleShortVersionString -string $(echo ${GIT_VERSION_LINE} | perl -pe "s/${SHORT_VERSION_MATCH}/\$1/g") ${PPSSPP}/Contents/Info.plist - plutil -replace CFBundleVersion -string $(echo ${GIT_VERSION_LINE} | perl -pe "s/${LONG_VERSION_MATCH}/\$1/g") ${PPSSPP}/Contents/Info.plist -else - plutil -replace CFBundleShortVersionString -string "" ${PPSSPP}/Contents/Info.plist - plutil -replace CFBundleVersion -string "" ${PPSSPP}/Contents/Info.plist -fi - -# TODO: install SDL and Qt frameworks diff --git a/Qt/mainwindow.cpp b/Qt/mainwindow.cpp deleted file mode 100644 index ae39a4f381..0000000000 --- a/Qt/mainwindow.cpp +++ /dev/null @@ -1,699 +0,0 @@ -// Qt Desktop UI: works on Linux, Windows and Mac OSX -#include "ppsspp_config.h" - -#include -#include -#include -#include -#include -#include - -#include "mainwindow.h" - -#include "Common/System/Display.h" -#include "Common/System/NativeApp.h" -#include "Common/System/System.h" -#include "Common/File/Path.h" -#include "Core/MIPS/MIPSDebugInterface.h" -#include "Core/Debugger/SymbolMap.h" -#include "Core/HLE/sceUmd.h" -#include "Core/SaveState.h" -#include "Core/System.h" -#include "Core/Screenshot.h" -#include "GPU/GPUCommon.h" -#include "UI/GamepadEmu.h" - -MainWindow::MainWindow(QWidget *parent, bool fullscreen) : - QMainWindow(parent), - currentLanguage("en"), - nextState(CORE_POWERDOWN), - lastUIState(UISTATE_MENU) -{ -#if defined(ASSETS_DIR) - if (QFile::exists(ASSETS_DIR "ui_images/icon.png")) - setWindowIcon(QIcon(ASSETS_DIR "ui_images/icon.png")); - else - setWindowIcon(QIcon(qApp->applicationDirPath() + "/assets/ui_images/icon.png")); -#else - setWindowIcon(QIcon(qApp->applicationDirPath() + "/assets/ui_images/icon.png")); -#endif - - SetGameTitle(""); - emugl = new MainUI(this); - - setCentralWidget(emugl); - createMenus(); - updateMenus(); - - SetFullScreen(fullscreen); - - QObject::connect(emugl, SIGNAL(doubleClick()), this, SLOT(fullscrAct())); - QObject::connect(emugl, SIGNAL(newFrame()), this, SLOT(newFrame())); -} - -inline float clamp1(float x) { - if (x > 1.0f) return 1.0f; - if (x < -1.0f) return -1.0f; - return x; -} - -void MainWindow::newFrame() -{ - if (lastUIState != GetUIState()) { - lastUIState = GetUIState(); - if (lastUIState == UISTATE_INGAME && g_Config.bFullScreen && !QApplication::overrideCursor() && !g_Config.bShowTouchControls) - QApplication::setOverrideCursor(QCursor(Qt::BlankCursor)); - if (lastUIState != UISTATE_INGAME && g_Config.bFullScreen && QApplication::overrideCursor()) - QApplication::restoreOverrideCursor(); - - updateMenus(); - } - - if (g_Config.bFullScreen != isFullScreen()) - SetFullScreen(g_Config.bFullScreen); - - std::unique_lock lock(msgMutex_); - while (!msgQueue_.empty()) { - MainWindowMsg msg = msgQueue_.front(); - msgQueue_.pop(); - switch (msg) { - case MainWindowMsg::BOOT_DONE: - bootDone(); - break; - case MainWindowMsg::WINDOW_TITLE_CHANGED: - std::unique_lock lock(titleMutex_); - setWindowTitle(QString::fromUtf8(newWindowTitle_.c_str())); - break; - } - } -} - -void MainWindow::updateMenuGroupInt(QActionGroup *group, int value) { - foreach (QAction *action, group->actions()) { - action->setChecked(action->data().toInt() == value); - } -} - -void MainWindow::updateMenus() -{ - const DisplayLayoutConfig &config = g_Config.GetDisplayLayoutConfig(g_display.GetDeviceOrientation()); - - updateMenuGroupInt(saveStateGroup, g_Config.iCurrentStateSlot); - updateMenuGroupInt(displayRotationGroup, config.iInternalScreenRotation); - updateMenuGroupInt(renderingResolutionGroup, g_Config.iInternalResolution); - updateMenuGroupInt(frameSkippingGroup, g_Config.iFrameSkip); - updateMenuGroupInt(textureFilteringGroup, g_Config.iTexFiltering); - updateMenuGroupInt(screenScalingFilterGroup, config.iDisplayFilter); - updateMenuGroupInt(textureScalingLevelGroup, g_Config.iTexScalingLevel); - updateMenuGroupInt(textureScalingTypeGroup, g_Config.iTexScalingType); - - bool internalPortrait = config.InternalRotationIsPortrait(); - foreach(QAction * action, windowGroup->actions()) { - int width = (internalPortrait ? 272 : 480) * action->data().toInt(); - int height = (internalPortrait ? 480 : 272) * action->data().toInt(); - if (g_Config.iWindowWidth == width && g_Config.iWindowHeight == height) { - action->setChecked(true); - break; - } - } - emit updateMenu(); -} - -void MainWindow::bootDone() -{ - if (nextState == CORE_RUNNING_CPU) - runAct(); - updateMenus(); -} - -/* SIGNALS */ -void MainWindow::loadAct() -{ - QString filename = QFileDialog::getOpenFileName(NULL, "Load File", g_Config.currentDirectory.c_str(), "PSP ROMs (*.pbp *.elf *.iso *.cso *.chd *.prx)"); - if (QFile::exists(filename)) - { - QFileInfo info(filename); - g_Config.currentDirectory = Path(info.absolutePath().toStdString()); - System_PostUIMessage(UIMessage::REQUEST_GAME_BOOT, filename.toStdString()); - } -} - -void MainWindow::closeAct() -{ - updateMenus(); - - System_PostUIMessage(UIMessage::REQUEST_GAME_STOP); - SetGameTitle(""); -} - -void MainWindow::openmsAct() -{ - QString confighome = getenv("XDG_CONFIG_HOME"); - QString memorystick = confighome + "/ppsspp"; - QDesktopServices::openUrl(QUrl(memorystick)); -} - -static void SaveStateActionFinished(SaveState::Status status, std::string_view message, std::string_view metadata) -{ - // TODO: Improve messaging? - if (status == SaveState::Status::FAILURE) - { - QMessageBox msgBox; - msgBox.setWindowTitle("Load Save State"); - msgBox.setText("Savestate failure. Please try again later"); - msgBox.exec(); - return; - } -} - -void MainWindow::qlstateAct() -{ - Path gamePath = PSP_CoreParameter().fileToStart; - SaveState::LoadSlot(SaveState::GetGamePrefix(g_paramSFO), 0, SaveStateActionFinished); -} - -void MainWindow::qsstateAct() -{ - Path gamePath = PSP_CoreParameter().fileToStart; - SaveState::SaveSlot(SaveState::GetGamePrefix(g_paramSFO), 0, SaveStateActionFinished); -} - -void MainWindow::lstateAct() -{ - QFileDialog dialog(0,"Load state"); - dialog.setFileMode(QFileDialog::ExistingFile); - QStringList filters; - filters << "Save States (*.ppst)" << "|All files (*.*)"; - dialog.setNameFilters(filters); - dialog.setAcceptMode(QFileDialog::AcceptOpen); - if (dialog.exec()) - { - QStringList fileNames = dialog.selectedFiles(); - SaveState::Load(Path(fileNames[0].toStdString()), -1, SaveStateActionFinished); - } -} - -void MainWindow::sstateAct() -{ - QFileDialog dialog(0,"Save state"); - dialog.setFileMode(QFileDialog::AnyFile); - dialog.setAcceptMode(QFileDialog::AcceptSave); - QStringList filters; - filters << "Save States (*.ppst)" << "|All files (*.*)"; - dialog.setNameFilters(filters); - if (dialog.exec()) - { - QStringList fileNames = dialog.selectedFiles(); - SaveState::Save(Path(fileNames[0].toStdString()), -1, SaveStateActionFinished); - } -} - -void MainWindow::recordDisplayAct() -{ - g_Config.bDumpFrames = !g_Config.bDumpFrames; -} - -void MainWindow::useLosslessVideoCodecAct() -{ - g_Config.bUseFFV1 = !g_Config.bUseFFV1; -} - -void MainWindow::useOutputBufferAct() -{ - g_Config.bDumpVideoOutput = !g_Config.bDumpVideoOutput; -} - -void MainWindow::recordAudioAct() -{ - g_Config.bDumpAudio = !g_Config.bDumpAudio; -} - -void MainWindow::exitAct() -{ - closeAct(); - QApplication::exit(0); -} - -void MainWindow::runAct() -{ - System_PostUIMessage(UIMessage::REQUEST_GAME_RUN); -} - -void MainWindow::pauseAct() -{ - System_PostUIMessage(UIMessage::REQUEST_GAME_PAUSE); -} - -void MainWindow::stopAct() -{ - Core_Stop(); - System_PostUIMessage(UIMessage::REQUEST_GAME_STOP); -} - -void MainWindow::resetAct() -{ - updateMenus(); - System_PostUIMessage(UIMessage::REQUEST_GAME_RESET); -} - -void MainWindow::switchUMDAct() -{ - QString filename = QFileDialog::getOpenFileName(NULL, "Switch UMD", g_Config.currentDirectory.c_str(), "PSP ROMs (*.pbp *.elf *.iso *.cso *.chd *.prx)"); - if (QFile::exists(filename)) - { - QFileInfo info(filename); - g_Config.currentDirectory = Path(info.absolutePath().toStdString()); - __UmdReplace(Path(filename.toStdString())); - } -} - -void MainWindow::breakonloadAct() -{ - g_Config.bAutoRun = !g_Config.bAutoRun; -} - -void MainWindow::lmapAct() -{ - QFileDialog dialog(0,"Load .MAP"); - dialog.setFileMode(QFileDialog::ExistingFile); - QStringList filters; - filters << "Maps (*.map)" << "|All files (*.*)"; - dialog.setNameFilters(filters); - dialog.setAcceptMode(QFileDialog::AcceptOpen); - QStringList fileNames; - if (dialog.exec()) - fileNames = dialog.selectedFiles(); - - if (fileNames.count() > 0) - { - QString fileName = QFileInfo(fileNames[0]).absoluteFilePath(); - g_symbolMap->LoadSymbolMap(Path(fileName.toStdString())); - } -} - -void MainWindow::smapAct() -{ - QFileDialog dialog(0,"Save .MAP"); - dialog.setFileMode(QFileDialog::AnyFile); - dialog.setAcceptMode(QFileDialog::AcceptSave); - QStringList filters; - filters << "Save .MAP (*.map)" << "|All files (*.*)"; - dialog.setNameFilters(filters); - QStringList fileNames; - if (dialog.exec()) - { - fileNames = dialog.selectedFiles(); - g_symbolMap->SaveSymbolMap(Path(fileNames[0].toStdString())); - } -} - -void MainWindow::lsymAct() -{ - QFileDialog dialog(0,"Load .SYM"); - dialog.setFileMode(QFileDialog::ExistingFile); - QStringList filters; - filters << "Symbols (*.sym)" << "|All files (*.*)"; - dialog.setNameFilters(filters); - dialog.setAcceptMode(QFileDialog::AcceptOpen); - QStringList fileNames; - if (dialog.exec()) - fileNames = dialog.selectedFiles(); - - if (fileNames.count() > 0) - { - QString fileName = QFileInfo(fileNames[0]).absoluteFilePath(); - g_symbolMap->LoadNocashSym(Path(fileName.toStdString())); - } -} - -void MainWindow::ssymAct() -{ - QFileDialog dialog(0,"Save .SYM"); - dialog.setFileMode(QFileDialog::AnyFile); - dialog.setAcceptMode(QFileDialog::AcceptSave); - QStringList filters; - filters << "Save .SYM (*.sym)" << "|All files (*.*)"; - dialog.setNameFilters(filters); - QStringList fileNames; - if (dialog.exec()) - { - fileNames = dialog.selectedFiles(); - g_symbolMap->SaveNocashSym(Path(fileNames[0].toStdString())); - } -} - -void MainWindow::resetTableAct() -{ - g_symbolMap->Clear(); -} - -void MainWindow::dumpNextAct() -{ - gpu->DumpNextFrame(); -} - -void MainWindow::consoleAct() -{ -#if PPSSPP_PLATFORM(WINDOWS) - LogManager::GetInstance()->GetConsoleListener()->Show(LogManager::GetInstance()->GetConsoleListener()->Hidden()); -#endif -} - -void MainWindow::raiseTopMost() -{ - setWindowState( (windowState() & ~Qt::WindowMinimized) | Qt::WindowActive); - raise(); - activateWindow(); -} - -void MainWindow::SetFullScreen(bool fullscreen) { - if (fullscreen) { -#if !PPSSPP_PLATFORM(MAC) - menuBar()->hide(); - - emugl->setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); - // TODO: Shouldn't this be physicalSize()? - emugl->resizeGL(emugl->size().width(), emugl->size().height()); - // TODO: Won't showFullScreen do this for us? - setMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); - setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); -#endif - - showFullScreen(); - - if (GetUIState() == UISTATE_INGAME && !g_Config.bShowTouchControls) - QApplication::setOverrideCursor(QCursor(Qt::BlankCursor)); - } else { -#if !PPSSPP_PLATFORM(MAC) - menuBar()->show(); - updateMenus(); -#endif - - showNormal(); - SetWindowScale(-1); - - if (GetUIState() == UISTATE_INGAME && QApplication::overrideCursor()) - QApplication::restoreOverrideCursor(); - - int screenNum = QProcessEnvironment::systemEnvironment().value("SDL_VIDEO_FULLSCREEN_HEAD", "0").toInt(); - - // Move window to the center of selected screen - QRect rect; - const QList screens = QGuiApplication::screens(); - if (!screens.empty()) { - if (screenNum < 0) - screenNum = 0; - if (screenNum >= screens.size()) - screenNum = screens.size() - 1; - rect = screens[screenNum]->geometry(); - } else { - rect = QRect(QPoint(0, 0), size()); - } - move((rect.width() - frameGeometry().width()) / 4, (rect.height() - frameGeometry().height()) / 4); - } -} - -void MainWindow::fullscrAct() -{ - // Toggle the current state. - g_Config.bFullScreen = !isFullScreen(); - SetFullScreen(g_Config.bFullScreen); - - QTimer::singleShot(1000, this, SLOT(raiseTopMost())); -} - -void MainWindow::websiteAct() -{ - QDesktopServices::openUrl(QUrl("https://www.ppsspp.org/")); -} - -void MainWindow::forumAct() -{ - QDesktopServices::openUrl(QUrl("https://forums.ppsspp.org/")); -} - -void MainWindow::goldAct() -{ - QDesktopServices::openUrl(QUrl("https://www.ppsspp.org/buygold")); -} - -void MainWindow::gitAct() -{ - QDesktopServices::openUrl(QUrl("https://github.com/hrydgard/ppsspp/")); -} - -void MainWindow::discordAct() -{ - QDesktopServices::openUrl(QUrl("https://discord.gg/5NJB6dD")); -} - -void MainWindow::aboutAct() -{ - QMessageBox::about(this, "About", QString("PPSSPP Qt %1\n\n" - "PSP emulator and debugger\n\n" - "Copyright (c) by Henrik Rydg\xc3\xa5rd and the PPSSPP Project 2012-\n" - "Qt port maintained by xSacha\n\n" - "Additional credits:\n" - " PSPSDK by #pspdev (freenode)\n" - " CISO decompression code by BOOSTER\n" - " zlib by Jean-loup Gailly (compression) and Mark Adler (decompression)\n" - " Qt project by Digia\n\n" - "All trademarks are property of their respective owners.\n" - "The emulator is for educational and development purposes only and it may not be used to play games you do not legally own.").arg(PPSSPP_GIT_VERSION)); -} - -/* Private functions */ -void MainWindow::SetWindowScale(int zoom) { - if (isFullScreen()) - fullscrAct(); - - const DisplayLayoutConfig &config = g_Config.GetDisplayLayoutConfig(g_display.GetDeviceOrientation()); - const bool internalPortrait = config.InternalRotationIsPortrait(); - - int width, height; - if (zoom == -1 && (g_Config.iWindowWidth <= 0 || g_Config.iWindowHeight <= 0)) { - // Default to zoom level 2. - zoom = 2; - } - if (zoom == -1) { - // Take the last setting. - width = g_Config.iWindowWidth; - height = g_Config.iWindowHeight; - } else { - // Update to the specified factor. Let's clamp first. - if (zoom < 1) - zoom = 1; - if (zoom > 10) - zoom = 10; - - width = (internalPortrait ? 272 : 480) * zoom; - height = (internalPortrait ? 480 : 272) * zoom; - } - - g_Config.iWindowWidth = width; - g_Config.iWindowHeight = height; - -#if !PPSSPP_PLATFORM(MAC) - emugl->setFixedSize(g_Config.iWindowWidth, g_Config.iWindowHeight); - // TODO: Shouldn't this be scaled size? - emugl->resizeGL(g_Config.iWindowWidth, g_Config.iWindowHeight); - setFixedSize(sizeHint()); -#else - resize(g_Config.iWindowWidth, g_Config.iWindowHeight); -#endif - updateMenus(); -} - -void MainWindow::SetGameTitle(QString text) -{ - QString title = QString("PPSSPP %1").arg(PPSSPP_GIT_VERSION); - if (text != "") - title += QString(" - %1").arg(text); - - setWindowTitle(title); -} - -void MainWindow::loadLanguage(const QString& language, bool translate) -{ - if (currentLanguage != language) - { - QLocale::setDefault(QLocale(language)); - QApplication::removeTranslator(&translator); - - currentLanguage = language; - if (translator.load(QString(":/languages/ppsspp_%1.qm").arg(language))) { - QApplication::installTranslator(&translator); - } - if (translate) - emit retranslate(); - } -} - -void MainWindow::takeScreen() { - TakeUserScreenshot(); -} - -void MainWindow::createMenus() -{ - // File - MenuTree* fileMenu = new MenuTree(this, menuBar(), QT_TR_NOOP("&File")); - fileMenu->add(new MenuAction(this, SLOT(loadAct()), QT_TR_NOOP("&Load..."), QKeySequence::Open)) - ->addEnableState(UISTATE_MENU); - fileMenu->addSeparator(); - fileMenu->add(new MenuAction(this, SLOT(openmsAct()), QT_TR_NOOP("Open &Memory Stick"))) - ->addEnableState(UISTATE_MENU); - fileMenu->addSeparator(); - MenuTree* savestateMenu = new MenuTree(this, fileMenu, QT_TR_NOOP("Saves&tate slot")); - - QStringList slotNames; - QList slotIndices; - for (int i = 0; i < g_Config.iSaveStateSlotCount; ++i) { - slotNames << QString::number(i + 1); - slotIndices << i; - } - saveStateGroup = new MenuActionGroup(this, savestateMenu, SLOT(saveStateGroup_triggered(QAction *)), - slotNames, - slotIndices); - - fileMenu->add(new MenuAction(this, SLOT(qlstateAct()), QT_TR_NOOP("L&oad state"), Qt::Key_F4)) - ->addDisableState(UISTATE_MENU); - fileMenu->add(new MenuAction(this, SLOT(qsstateAct()), QT_TR_NOOP("S&ave state"), Qt::Key_F2)) - ->addDisableState(UISTATE_MENU); - fileMenu->add(new MenuAction(this, SLOT(lstateAct()), QT_TR_NOOP("&Load state file..."))) - ->addDisableState(UISTATE_MENU); - fileMenu->add(new MenuAction(this, SLOT(sstateAct()), QT_TR_NOOP("&Save state file..."))) - ->addDisableState(UISTATE_MENU); - MenuTree* recordMenu = new MenuTree(this, fileMenu, QT_TR_NOOP("&Record")); - recordMenu->add(new MenuAction(this, SLOT(recordDisplayAct()), QT_TR_NOOP("Record &display"))) - ->addEventChecked(&g_Config.bDumpFrames); - recordMenu->add(new MenuAction(this, SLOT(useLosslessVideoCodecAct()), QT_TR_NOOP("&Use lossless video codec (FFV1)"))) - ->addEventChecked(&g_Config.bUseFFV1); - recordMenu->add(new MenuAction(this, SLOT(useOutputBufferAct()), QT_TR_NOOP("Use output buffer for video"))) - ->addEventChecked(&g_Config.bDumpVideoOutput); - recordMenu->addSeparator(); - recordMenu->add(new MenuAction(this, SLOT(recordAudioAct()), QT_TR_NOOP("Record &audio"))) - ->addEventChecked(&g_Config.bDumpAudio); - fileMenu->addSeparator(); - fileMenu->add(new MenuAction(this, SLOT(exitAct()), QT_TR_NOOP("E&xit"), QKeySequence::Quit)); - - // Emulation - MenuTree* emuMenu = new MenuTree(this, menuBar(), QT_TR_NOOP("&Emulation")); - emuMenu->add(new MenuAction(this, SLOT(pauseAct()), QT_TR_NOOP("&Pause"))) - ->addEnableState(UISTATE_INGAME); - emuMenu->add(new MenuAction(this, SLOT(stopAct()), QT_TR_NOOP("&Stop"), Qt::CTRL + Qt::Key_W)) - ->addEnableState(UISTATE_INGAME); - emuMenu->add(new MenuAction(this, SLOT(resetAct()), QT_TR_NOOP("R&eset"), Qt::CTRL + Qt::Key_B)) - ->addEnableState(UISTATE_INGAME); - emuMenu->add(new MenuAction(this, SLOT(switchUMDAct()), QT_TR_NOOP("Switch UMD"), Qt::CTRL + Qt::Key_U)) - ->addEnableState(UISTATE_INGAME); - MenuTree* displayRotationMenu = new MenuTree(this, emuMenu, QT_TR_NOOP("Display rotation")); - displayRotationGroup = new MenuActionGroup(this, displayRotationMenu, SLOT(displayRotationGroup_triggered(QAction *)), - QStringList() << "Landscape" << "Portrait" << "Landscape reversed" << "Portrait reversed", - QList() << 1 << 2 << 3 << 4); - - // Debug - MenuTree* debugMenu = new MenuTree(this, menuBar(), QT_TR_NOOP("&Debug")); - debugMenu->add(new MenuAction(this, SLOT(breakonloadAct()), QT_TR_NOOP("Break on load"))) - ->addEventUnchecked(&g_Config.bAutoRun); - debugMenu->add(new MenuAction(this, SLOT(ignoreIllegalAct()), QT_TR_NOOP("&Ignore illegal reads/writes"))) - ->addEventChecked(&g_Config.bIgnoreBadMemAccess); - debugMenu->addSeparator(); - debugMenu->add(new MenuAction(this, SLOT(lmapAct()), QT_TR_NOOP("&Load MAP file..."))) - ->addDisableState(UISTATE_MENU); - debugMenu->add(new MenuAction(this, SLOT(smapAct()), QT_TR_NOOP("&Save MAP file..."))) - ->addDisableState(UISTATE_MENU); - debugMenu->add(new MenuAction(this, SLOT(lsymAct()), QT_TR_NOOP("Lo&ad SYM file..."))) - ->addDisableState(UISTATE_MENU); - debugMenu->add(new MenuAction(this, SLOT(ssymAct()), QT_TR_NOOP("Sav&e SYM file..."))) - ->addDisableState(UISTATE_MENU); - debugMenu->add(new MenuAction(this, SLOT(resetTableAct()),QT_TR_NOOP("Reset s&ymbol table"))) - ->addDisableState(UISTATE_MENU); - debugMenu->addSeparator(); - debugMenu->add(new MenuAction(this, SLOT(takeScreen()), QT_TR_NOOP("&Take screenshot"), Qt::Key_F12)) - ->addDisableState(UISTATE_MENU); - debugMenu->add(new MenuAction(this, SLOT(dumpNextAct()), QT_TR_NOOP("D&ump next frame to log"))) - ->addDisableState(UISTATE_MENU); - debugMenu->addSeparator(); - debugMenu->add(new MenuAction(this, SLOT(consoleAct()), QT_TR_NOOP("&Log console"), Qt::CTRL + Qt::Key_L)) - ->addDisableState(UISTATE_MENU); - - // Game settings - MenuTree* gameSettingsMenu = new MenuTree(this, menuBar(), QT_TR_NOOP("&Game settings")); - gameSettingsMenu->add(new MenuAction(this, SLOT(languageAct()), QT_TR_NOOP("La&nguage..."))); - gameSettingsMenu->add(new MenuAction(this, SLOT(controlMappingAct()), QT_TR_NOOP("C&ontrol mapping..."))); - gameSettingsMenu->add(new MenuAction(this, SLOT(displayLayoutEditorAct()), QT_TR_NOOP("Display layout & effects..."))); - gameSettingsMenu->add(new MenuAction(this, SLOT(moreSettingsAct()), QT_TR_NOOP("&More settings..."))); - gameSettingsMenu->addSeparator(); -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) - gameSettingsMenu->add(new MenuAction(this, SLOT(fullscrAct()), QT_TR_NOOP("&Fullscreen"), Qt::Key_F11)) -#else - gameSettingsMenu->add(new MenuAction(this, SLOT(fullscrAct()), QT_TR_NOOP("Fu&llscreen"), QKeySequence::FullScreen)) -#endif - ->addEventChecked(&g_Config.bFullScreen); - gameSettingsMenu->add(new MenuAction(this, SLOT(bufferRenderAct()), QT_TR_NOOP("&Skip buffer effects"))) - ->addEventChecked(&g_Config.bSkipBufferEffects); - - MenuTree* renderingResolutionMenu = new MenuTree(this, gameSettingsMenu, QT_TR_NOOP("&Rendering resolution")); - renderingResolutionGroup = new MenuActionGroup(this, renderingResolutionMenu, SLOT(renderingResolutionGroup_triggered(QAction *)), - QStringList() << "&Auto" << "&1x" << "&2x" << "&3x" << "&4x" << "&5x" << "&6x" << "&7x" << "&8x" << "&9x" << "1&0x", - QList() << 0 << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8 << 9 << 10); - // - Window Size - MenuTree* windowMenu = new MenuTree(this, gameSettingsMenu, QT_TR_NOOP("&Window size")); - windowGroup = new MenuActionGroup(this, windowMenu, SLOT(windowGroup_triggered(QAction *)), - QStringList() << "&1x" << "&2x" << "&3x" << "&4x" << "&5x" << "&6x" << "&7x" << "&8x" << "&9x" << "1&0x", - QList() << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8 << 9 << 10); - - MenuTree* frameSkippingMenu = new MenuTree(this, gameSettingsMenu, QT_TR_NOOP("&Frame skipping")); - frameSkippingMenu->add(new MenuAction(this, SLOT(autoframeskipAct()), QT_TR_NOOP("&Auto"))) - ->addEventChecked(&g_Config.bAutoFrameSkip); - frameSkippingMenu->addSeparator(); - frameSkippingGroup = new MenuActionGroup(this, frameSkippingMenu, SLOT(frameSkippinGroup_triggered(QAction *)), - QStringList() << "&Off" << "&1" << "&2" << "&3" << "&4" << "&5" << "&6" << "&7" << "&8", - QList() << 0 << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8); - MenuTree* textureFilteringMenu = new MenuTree(this, gameSettingsMenu, QT_TR_NOOP("Te&xture filtering")); - textureFilteringGroup = new MenuActionGroup(this, textureFilteringMenu, SLOT(textureFilteringGroup_triggered(QAction *)), - QStringList() << "&Auto" << "&Nearest" << "&Linear" << "Auto Max &Quality", - QList() << 1 << 2 << 3 << 4); - MenuTree* screenScalingFilterMenu = new MenuTree(this, gameSettingsMenu, QT_TR_NOOP("Scr&een scaling filter")); - screenScalingFilterGroup = new MenuActionGroup(this, screenScalingFilterMenu, SLOT(screenScalingFilterGroup_triggered(QAction *)), - QStringList() << "&Linear" << "&Nearest", - QList() << 0 << 1); - - MenuTree* textureScalingMenu = new MenuTree(this, gameSettingsMenu, QT_TR_NOOP("&Texture scaling")); - textureScalingLevelGroup = new MenuActionGroup(this, textureScalingMenu, SLOT(textureScalingLevelGroup_triggered(QAction *)), - QStringList() << "&Off" << "&2x" << "&3x" << "&4x" << "&5x", - QList() << 1 << 2 << 3 << 4 << 5); - textureScalingMenu->addSeparator(); - textureScalingTypeGroup = new MenuActionGroup(this, textureScalingMenu, SLOT(textureScalingTypeGroup_triggered(QAction *)), - QStringList() << "&xBRZ" << "&Hybrid" << "&Bicubic" << "H&ybrid + bicubic", - QList() << 0 << 1 << 2 << 3); - textureScalingMenu->addSeparator(); - textureScalingMenu->add(new MenuAction(this, SLOT(deposterizeAct()), QT_TR_NOOP("&Deposterize"))) - ->addEventChecked(&g_Config.bTexDeposterize); - - gameSettingsMenu->add(new MenuAction(this, SLOT(transformAct()), QT_TR_NOOP("&Hardware transform"))) - ->addEventChecked(&g_Config.bHardwareTransform); - gameSettingsMenu->addSeparator(); - gameSettingsMenu->add(new MenuAction(this, SLOT(audioAct()), QT_TR_NOOP("Enable s&ound"))) - ->addEventChecked(&g_Config.bEnableSound); - gameSettingsMenu->addSeparator(); - gameSettingsMenu->add(new MenuAction(this, SLOT(cheatsAct()), QT_TR_NOOP("Enable &cheats"), Qt::CTRL + Qt::Key_T)) - ->addEventChecked(&g_Config.bEnableCheats); - gameSettingsMenu->addSeparator(); - gameSettingsMenu->add(new MenuAction(this, SLOT(chatAct()), QT_TR_NOOP("Open chat"), Qt::CTRL + Qt::Key_C)) - ->SetEnabledFunc([=]() { - return g_Config.bEnableNetworkChat && GetUIState() == UISTATE_INGAME; - }); - - // Help - MenuTree* helpMenu = new MenuTree(this, menuBar(), QT_TR_NOOP("&Help")); - helpMenu->add(new MenuAction(this, SLOT(websiteAct()), QT_TR_NOOP("Visit www.&ppsspp.org"))); - helpMenu->add(new MenuAction(this, SLOT(forumAct()), QT_TR_NOOP("PPSSPP &forums"))); - helpMenu->add(new MenuAction(this, SLOT(goldAct()), QT_TR_NOOP("Buy &Gold"))); - helpMenu->add(new MenuAction(this, SLOT(gitAct()), QT_TR_NOOP("Git&Hub"))); - helpMenu->add(new MenuAction(this, SLOT(discordAct()), QT_TR_NOOP("Discord"))); - helpMenu->addSeparator(); - helpMenu->add(new MenuAction(this, SLOT(aboutAct()), QT_TR_NOOP("&About PPSSPP..."))); - - retranslate(); -} diff --git a/Qt/mainwindow.h b/Qt/mainwindow.h deleted file mode 100644 index 5e735aef6b..0000000000 --- a/Qt/mainwindow.h +++ /dev/null @@ -1,356 +0,0 @@ -#pragma once - -#include -#include -#include - -#include -#include -#include -#include - -#include "ppsspp_config.h" -#include "Common/System/System.h" -#include "Common/System/NativeApp.h" -#include "Common/System/Display.h" -#if PPSSPP_PLATFORM(WINDOWS) -#include "Common/Log/ConsoleListener.h" -#endif -#include "Core/Core.h" -#include "Core/Config.h" -#include "Core/System.h" -#include "Qt/QtMain.h" - -class MenuAction; -class MenuTree; - -enum { - FB_NON_BUFFERED_MODE = 0, - FB_BUFFERED_MODE = 1, -}; - -// hacky, should probably use qt signals or something, but whatever.. -enum class MainWindowMsg { - BOOT_DONE, - WINDOW_TITLE_CHANGED, -}; - -class MainWindow : public QMainWindow -{ - Q_OBJECT - -public: - explicit MainWindow(QWidget *parent = nullptr, bool fullscreen = false); - ~MainWindow() { }; - - CoreState GetNextState() { return nextState; } - - void updateMenuGroupInt(QActionGroup *group, int value); - - void updateMenus(); - - void Notify(MainWindowMsg msg) { - std::unique_lock lock(msgMutex_); - msgQueue_.push(msg); - } - - void SetWindowTitleAsync(std::string title) { - std::unique_lock lock(titleMutex_); - newWindowTitle_ = title; - Notify(MainWindowMsg::WINDOW_TITLE_CHANGED); - } - -protected: - void changeEvent(QEvent *e) - { - QMainWindow::changeEvent(e); - // Does not work on Linux for Qt5.2 or Qt5.3 (Qt bug) - if(e->type() == QEvent::WindowStateChange) - Native_NotifyWindowHidden(isMinimized()); - } - - void closeEvent(QCloseEvent *) { exitAct(); } - -signals: - void retranslate(); - void updateMenu(); - -public slots: - void newFrame(); - -private slots: - // File - void loadAct(); - void closeAct(); - void openmsAct(); - void saveStateGroup_triggered(QAction *action) { g_Config.iCurrentStateSlot = action->data().toInt(); } - void qlstateAct(); - void qsstateAct(); - void lstateAct(); - void sstateAct(); - void recordDisplayAct(); - void useLosslessVideoCodecAct(); - void useOutputBufferAct(); - void recordAudioAct(); - void exitAct(); - - // Emulation - void runAct(); - void pauseAct(); - void stopAct(); - void resetAct(); - void switchUMDAct(); - void displayRotationGroup_triggered(QAction *action) { - DisplayLayoutConfig &config = g_Config.GetDisplayLayoutConfig(g_display.GetDeviceOrientation()); - config.iInternalScreenRotation = action->data().toInt(); - } - - // Debug - void breakonloadAct(); - void ignoreIllegalAct() { g_Config.bIgnoreBadMemAccess = !g_Config.bIgnoreBadMemAccess; } - void lmapAct(); - void smapAct(); - void lsymAct(); - void ssymAct(); - void resetTableAct(); - void dumpNextAct(); - void takeScreen(); - void consoleAct(); - - // Game settings - void languageAct() { System_PostUIMessage(UIMessage::SHOW_LANGUAGE_SCREEN); } - void controlMappingAct() { System_PostUIMessage(UIMessage::SHOW_CONTROL_MAPPING); } - void displayLayoutEditorAct() { System_PostUIMessage(UIMessage::SHOW_DISPLAY_LAYOUT_EDITOR); } - void moreSettingsAct() { System_PostUIMessage(UIMessage::SHOW_SETTINGS); } - - void bufferRenderAct() { - System_PostUIMessage(UIMessage::GPU_RENDER_RESIZED); - System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED); - } - void linearAct() { g_Config.iTexFiltering = (g_Config.iTexFiltering != 0) ? 0 : 3; } - - void renderingResolutionGroup_triggered(QAction *action) { - g_Config.iInternalResolution = action->data().toInt(); - System_PostUIMessage(UIMessage::GPU_RENDER_RESIZED); - } - void windowGroup_triggered(QAction *action) { SetWindowScale(action->data().toInt()); } - - void autoframeskipAct() { - g_Config.bAutoFrameSkip = !g_Config.bAutoFrameSkip; - if (g_Config.bSkipBufferEffects) { - g_Config.bSkipBufferEffects = false; - System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED); - } - } - void frameSkippingGroup_triggered(QAction *action) { g_Config.iFrameSkip = action->data().toInt(); } - void textureFilteringGroup_triggered(QAction *action) { g_Config.iTexFiltering = action->data().toInt(); } - void screenScalingFilterGroup_triggered(QAction *action) { - DisplayLayoutConfig &config = g_Config.GetDisplayLayoutConfig(g_display.GetDeviceOrientation()); - config.iDisplayFilter = action->data().toInt(); - } - void textureScalingLevelGroup_triggered(QAction *action) { - g_Config.iTexScalingLevel = action->data().toInt(); - System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED); - } - void textureScalingTypeGroup_triggered(QAction *action) { - g_Config.iTexScalingType = action->data().toInt(); - System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED); - } - void deposterizeAct() { - g_Config.bTexDeposterize = !g_Config.bTexDeposterize; - System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED); - } - void transformAct() { - g_Config.bHardwareTransform = !g_Config.bHardwareTransform; - System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED); - } - void frameskipAct() { g_Config.iFrameSkip = !g_Config.iFrameSkip; } - - // Sound - void audioAct() { - g_Config.bEnableSound = !g_Config.bEnableSound; - } - - // Cheats - void cheatsAct() { g_Config.bEnableCheats = !g_Config.bEnableCheats; } - - // Chat - void chatAct() { - if (GetUIState() == UISTATE_INGAME) { - System_PostUIMessage(UIMessage::SHOW_CHAT_SCREEN); - } - } - - void fullscrAct(); - void raiseTopMost(); - - // Help - void websiteAct(); - void forumAct(); - void goldAct(); - void gitAct(); - void discordAct(); - void aboutAct(); - - // Others - void langChanged(QAction *action) { loadLanguage(action->data().toString(), true); } - -private: - void bootDone(); - void SetWindowScale(int zoom); - void SetGameTitle(QString text); - void SetFullScreen(bool fullscreen); - void loadLanguage(const QString &language, bool retranslate); - void createMenus(); - - QTranslator translator; - QString currentLanguage; - - CoreState nextState; - GlobalUIState lastUIState; - - QActionGroup *windowGroup, - *textureScalingLevelGroup, *textureScalingTypeGroup, - *screenScalingFilterGroup, *textureFilteringGroup, - *frameSkippingGroup, *renderingResolutionGroup, - *displayRotationGroup, *saveStateGroup; - - std::queue msgQueue_; - std::mutex msgMutex_; - - std::string newWindowTitle_; - std::mutex titleMutex_; -}; - -class MenuAction : public QAction -{ - Q_OBJECT - -public: - // Add to QMenu - MenuAction(QWidget* parent, const char *callback, const char *text, QKeySequence key = 0) : - QAction(parent), _text(text) - { - if (key != (QKeySequence)0) { - this->setShortcut(key); - parent->addAction(this); // So we don't lose the shortcut when menubar is hidden - } - connect(this, SIGNAL(triggered()), parent, callback); - connect(parent, SIGNAL(retranslate()), this, SLOT(retranslate())); - connect(parent, SIGNAL(updateMenu()), this, SLOT(update())); - } - // Add to QActionGroup - MenuAction(QWidget* parent, QActionGroup* group, QVariant data, QString text, QKeySequence key = 0) : - QAction(parent) - { - this->setCheckable(true); - this->setData(data); - this->setText(text); // Not translatable, yet - if (key != (QKeySequence)0) { - this->setShortcut(key); - parent->addAction(this); // So we don't lose the shortcut when menubar is hidden - } - group->addAction(this); - } - // Event which causes it to be checked - void addEventChecked(bool* event) { - this->setCheckable(true); - _eventCheck = event; - } - // TODO: Possibly handle compares - void addEventChecked(int* event) { - this->setCheckable(true); - _eventCheck = (bool*)event; - } - // Event which causes it to be unchecked - void addEventUnchecked(bool* event) { - this->setCheckable(true); - _eventUncheck = event; - } - // UI State which causes it to be enabled - void addEnableState(int state) { - _enabledFunc = nullptr; - _stateEnable = state; - _stateDisable = -1; - } - void addDisableState(int state) { - _enabledFunc = nullptr; - _stateEnable = -1; - _stateDisable = state; - } - void SetEnabledFunc(std::function func) { - _enabledFunc = func; - _stateEnable = -1; - _stateDisable = -1; - } -public slots: - void retranslate() { - setText(qApp->translate("MainWindow", _text)); - } - void update() { - if (_eventCheck) - setChecked(*_eventCheck); - if (_eventUncheck) - setChecked(!*_eventUncheck); - if (_stateEnable >= 0) - setEnabled(GetUIState() == _stateEnable); - if (_stateDisable >= 0) - setEnabled(GetUIState() != _stateDisable); - if (_enabledFunc) - setEnabled(_enabledFunc()); - } -private: - const char *_text; - bool *_eventCheck = nullptr; - bool *_eventUncheck = nullptr; - int _stateEnable = -1; - int _stateDisable = -1; - std::function _enabledFunc; -}; - -class MenuActionGroup : public QActionGroup -{ - Q_OBJECT -public: - MenuActionGroup(QWidget* parent, QMenu* menu, const char* callback, QStringList nameList, - QList valueList, QList keyList = QList()) : - QActionGroup(parent) - { - QListIterator i(valueList); - QListIterator k(keyList); - foreach(QString name, nameList) { - new MenuAction(parent, this, i.next(), name, keyList.size() ? k.next() : 0); - } - connect(this, SIGNAL(triggered(QAction *)), parent, callback); - menu->addActions(this->actions()); - } -}; - -class MenuTree : public QMenu -{ - Q_OBJECT -public: - MenuTree(QWidget* parent, QMenuBar* menu, const char *text) : - QMenu(parent), _text(text) - { - menu->addMenu(this); - connect(parent, SIGNAL(retranslate()), this, SLOT(retranslate())); - } - MenuTree(QWidget* parent, QMenu* menu, const char *text) : - QMenu(parent), _text(text) - { - menu->addMenu(this); - connect(parent, SIGNAL(retranslate()), this, SLOT(retranslate())); - } - MenuAction* add(MenuAction* action) - { - addAction(action); - return action; - } -public slots: - void retranslate() { - setTitle(qApp->translate("MainWindow", _text)); - } -private: - const char *_text; -}; diff --git a/Qt/resources/breakpoint.ico b/Qt/resources/breakpoint.ico deleted file mode 100644 index 33d3fd8fb1183b829d808b402bd9b0ebf062eafc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmeH_F%kkH3`K*p1$I=nQhE!$nUq`F<~AH7%MX25p0G^=rEb{k;_K8}vr-2X@Ds6PK%5h2_jA>*?N|Ju`d458Dl# A$^ZZW diff --git a/Qt/resources/breakpointDisable.ico b/Qt/resources/breakpointDisable.ico deleted file mode 100644 index b974cdb5e2302cfd7306dc272a4b2e70442ff49e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZU_qXWf$j`H#bWP$eb@(N1$=;kq?*#}Gm UGzEu&rZ)mHII$toATf{}0O;?X1^@s6 diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index fda4041acd..e803f5337a 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -1471,7 +1471,7 @@ void GameSettingsScreen::CreateSystemSettings(UI::ViewGroup *systemSettings) { KeyMap::UpdateNativeMenuKeys(); }); -#if defined(_WIN32) || (defined(USING_QT_UI) && !defined(MOBILE_DEVICE)) +#if defined(_WIN32) systemSettings->Add(new ItemHeader(sy->T("Recording"))); systemSettings->Add(new CheckBox(&g_Config.bDumpFrames, sy->T("Record Display"))); systemSettings->Add(new CheckBox(&g_Config.bUseFFV1, sy->T("Use Lossless Video Codec (FFV1)"))); diff --git a/UI/MiscScreens.cpp b/UI/MiscScreens.cpp index 28ec75c0ec..92183556d8 100644 --- a/UI/MiscScreens.cpp +++ b/UI/MiscScreens.cpp @@ -289,7 +289,7 @@ NewLanguageScreen::NewLanguageScreen(std::string_view title) : ListPopupScreen(t // We only support Arabic on platforms where we have support for the native text rendering // APIs, as proper Arabic support is way too difficult to implement ourselves. -#if !(defined(USING_QT_UI) || PPSSPP_PLATFORM(WINDOWS) || PPSSPP_PLATFORM(ANDROID)) +#if !(PPSSPP_PLATFORM(WINDOWS) || PPSSPP_PLATFORM(ANDROID)) if (tempLangs[i].name.find("ar_AE") != std::string::npos) { continue; } @@ -704,9 +704,6 @@ void CreditsScroller::Draw(UIContext &dc) { #if PPSSPP_PLATFORM(ANDROID) "Android SDK + NDK", #endif -#if defined(USING_QT_UI) - "Qt", -#endif #if defined(SDL) "SDL", #endif diff --git a/UI/NativeApp.cpp b/UI/NativeApp.cpp index c244344e1b..60f3a6507b 100644 --- a/UI/NativeApp.cpp +++ b/UI/NativeApp.cpp @@ -1316,7 +1316,7 @@ void NativeFrame(GraphicsContext *graphicsContext) { uiContext->SetBounds(Bounds(0, 0, g_display.dp_xres, g_display.dp_yres)); // OSX 10.6 and SDL 1.2 bug. -#if defined(__APPLE__) && !defined(USING_QT_UI) +#if defined(__APPLE__) static int dp_xres_old = g_display.dp_xres; if (g_display.dp_xres != dp_xres_old) { dp_xres_old = g_display.dp_xres; diff --git a/UWP/CommonUWP/CommonUWP.vcxproj b/UWP/CommonUWP/CommonUWP.vcxproj index c06762e56d..a114502d9f 100644 --- a/UWP/CommonUWP/CommonUWP.vcxproj +++ b/UWP/CommonUWP/CommonUWP.vcxproj @@ -168,7 +168,6 @@ - @@ -367,7 +366,6 @@ - diff --git a/UWP/CommonUWP/CommonUWP.vcxproj.filters b/UWP/CommonUWP/CommonUWP.vcxproj.filters index 91ab265c90..0489ff52a5 100644 --- a/UWP/CommonUWP/CommonUWP.vcxproj.filters +++ b/UWP/CommonUWP/CommonUWP.vcxproj.filters @@ -380,9 +380,6 @@ Render\Text - - Render\Text - Render\Text @@ -883,9 +880,6 @@ Render\Text - - Render\Text - Render\Text diff --git a/Windows/PPSSPP.vcxproj b/Windows/PPSSPP.vcxproj index af037e9734..133ff62ba2 100644 --- a/Windows/PPSSPP.vcxproj +++ b/Windows/PPSSPP.vcxproj @@ -537,22 +537,6 @@ true true - - true - true - true - true - true - true - - - true - true - true - true - true - true - true true @@ -931,30 +915,6 @@ true - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - true @@ -1286,7 +1246,6 @@ - true diff --git a/Windows/PPSSPP.vcxproj.filters b/Windows/PPSSPP.vcxproj.filters index a96978d5dd..eca79d0228 100644 --- a/Windows/PPSSPP.vcxproj.filters +++ b/Windows/PPSSPP.vcxproj.filters @@ -29,9 +29,6 @@ {15f0e146-e39c-4bad-ba10-3c714a7dbf74} - - {45191b1f-33c8-405c-a410-35fe2344d1d1} - {5bfed059-8636-4b1e-a3cf-f948d645babb} @@ -172,9 +169,6 @@ Windows\System - - Other Platforms\Qt - Windows\System @@ -211,9 +205,6 @@ Other Platforms\libretro - - Other Platforms\Qt - Other Platforms\SDL @@ -375,9 +366,6 @@ Windows\System - - Other Platforms\Qt - Windows\System @@ -448,12 +436,6 @@ Other Platforms\libretro - - Other Platforms\Qt - - - Other Platforms\Qt - Other Platforms\SDL @@ -674,9 +656,6 @@ Other Platforms\libretro - - Other Platforms\Qt - Other Platforms\SDL diff --git a/b.sh b/b.sh index b371fe4033..a7683d0fb0 100755 --- a/b.sh +++ b/b.sh @@ -5,31 +5,6 @@ CMAKE=1 while test $# -gt 0 do case "$1" in - --qt) echo "Qt enabled" - QT=1 - CMAKE_ARGS="-DUSING_QT_UI=ON ${CMAKE_ARGS}" - if [[ "$OSTYPE" == "darwin"* ]]; then - if command -v brew >/dev/null 2>&1; then - if brew --prefix qt@5 >/dev/null 2>&1; then - QT_PREFIX="$(brew --prefix qt@5)" - CMAKE_ARGS="-DCMAKE_PREFIX_PATH=${QT_PREFIX} ${CMAKE_ARGS}" - echo "Using Homebrew Qt5 from ${QT_PREFIX}" - fi - fi - fi - ;; - --qtbrew) echo "Qt enabled (homebrew)" - QT=1 - if brew --prefix qt@5 >/dev/null 2>&1; then - QT_PREFIX="$(brew --prefix qt@5)" - elif brew --prefix qt5 >/dev/null 2>&1; then - QT_PREFIX="$(brew --prefix qt5)" - else - echo "Could not find Homebrew Qt5 (qt@5). Install it with: brew install qt@5" - exit 1 - fi - CMAKE_ARGS="-DUSING_QT_UI=ON -DCMAKE_PREFIX_PATH=${QT_PREFIX} ${CMAKE_ARGS}" - ;; --ios) CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/ios.cmake ${CMAKE_ARGS}" TARGET_OS=iOS ;;