From 8a305b19af40e7d4dceafa1976e341959a8044be Mon Sep 17 00:00:00 2001 From: SiPlus Date: Mon, 7 Jul 2014 10:53:47 +0400 Subject: [PATCH 1/6] Change vec2(float, 0.0).xxxx to vec4(float) in VS --- rpcs3/Emu/GS/GL/GLVertexProgram.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rpcs3/Emu/GS/GL/GLVertexProgram.cpp b/rpcs3/Emu/GS/GL/GLVertexProgram.cpp index fc9a3289b9..cc6f14312e 100644 --- a/rpcs3/Emu/GS/GL/GLVertexProgram.cpp +++ b/rpcs3/Emu/GS/GL/GLVertexProgram.cpp @@ -522,10 +522,10 @@ void GLVertexDecompilerThread::Task() case 0x02: SetDSTVec("($0 * $1)"); break; //MUL case 0x03: SetDSTVec("($0 + $2)"); break; //ADD case 0x04: SetDSTVec("($0 * $1 + $2)"); break; //MAD - case 0x05: SetDSTVec("vec2(dot($0.xyz, $1.xyz), 0.0).xxxx"); break; //DP3 - case 0x06: SetDSTVec("vec2(dot(vec4($0.xyz, 1.0), $1), 0.0).xxxx"); break; //DPH - case 0x07: SetDSTVec("vec2(dot($0, $1), 0.0).xxxx"); break; //DP4 - case 0x08: SetDSTVec("vec2(distance($0, $1), 0.0).xxxx"); break; //DST + case 0x05: SetDSTVec("vec4(dot($0.xyz, $1.xyz))"); break; //DP3 + case 0x06: SetDSTVec("vec4(dot(vec4($0.xyz, 1.0), $1))"); break; //DPH + case 0x07: SetDSTVec("vec4(dot($0, $1))"); break; //DP4 + case 0x08: SetDSTVec("vec4(distance($0, $1))"); break; //DST case 0x09: SetDSTVec("min($0, $1)"); break; //MIN case 0x0a: SetDSTVec("max($0, $1)"); break; //MAX case 0x0b: SetDSTVec("vec4(lessThan($0, $1))"); break; //SLT From bf8e6dbc8ea524a286d91fb0cccc81e7e49c90bd Mon Sep 17 00:00:00 2001 From: SiPlus Date: Mon, 7 Jul 2014 10:57:03 +0400 Subject: [PATCH 2/6] Change vec2(float, 0.0).xxxx to vec4(float) in FS --- rpcs3/Emu/GS/GL/GLFragmentProgram.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rpcs3/Emu/GS/GL/GLFragmentProgram.cpp b/rpcs3/Emu/GS/GL/GLFragmentProgram.cpp index 418ce0375e..2b33a7fdf0 100644 --- a/rpcs3/Emu/GS/GL/GLFragmentProgram.cpp +++ b/rpcs3/Emu/GS/GL/GLFragmentProgram.cpp @@ -326,9 +326,9 @@ void GLFragmentDecompilerThread::Task() case 0x02: SetDst("($0 * $1)"); break; //MUL case 0x03: SetDst("($0 + $1)"); break; //ADD case 0x04: SetDst("($0 * $1 + $2)"); break; //MAD - case 0x05: SetDst("vec2(dot($0.xyz, $1.xyz), 0).xxxx"); break; // DP3 - case 0x06: SetDst("vec2(dot($0, $1), 0).xxxx"); break; // DP4 - case 0x07: SetDst("vec2(distance($0, $1), 0).xxxx"); break; // DST + case 0x05: SetDst("vec4(dot($0.xyz, $1.xyz))"); break; // DP3 + case 0x06: SetDst("vec4(dot($0, $1))"); break; // DP4 + case 0x07: SetDst("vec4(distance($0, $1))"); break; // DST case 0x08: SetDst("min($0, $1)"); break; // MIN case 0x09: SetDst("max($0, $1)"); break; // MAX case 0x0a: SetDst("vec4(lessThan($0, $1))"); break; // SLT @@ -379,7 +379,7 @@ void GLFragmentDecompilerThread::Task() //case 0x35: break; // BEMLUM case 0x36: SetDst("($0 - 2.0 * $1 * dot($0, $1))"); break; // RFL (reflection vector) //case 0x37: break; // TIMESWTEX - case 0x38: SetDst("vec2(dot($0.xy, $1.xy)).xxxx"); break; // DP2 + case 0x38: SetDst("vec4(dot($0.xy, $1.xy))"); break; // DP2 case 0x39: SetDst("normalize($0.xyz)"); break; // NRM case 0x3a: SetDst("($0 / $1)"); break; // DIV case 0x3b: SetDst("($0 / sqrt($1))"); break; // DIVSQ From 38e41e0ea81503acd82e33d6ebc86263f943e4f7 Mon Sep 17 00:00:00 2001 From: raven02 Date: Mon, 7 Jul 2014 18:59:32 +0800 Subject: [PATCH 3/6] RSX : add rescale support for native 960x1080 & 1024x768 --- rpcs3/Emu/GS/RSXThread.cpp | 54 +++++++++++++++++++++++++++++++++++- rpcs3/Emu/GS/sysutil_video.h | 29 +++++++------------ 2 files changed, 63 insertions(+), 20 deletions(-) diff --git a/rpcs3/Emu/GS/RSXThread.cpp b/rpcs3/Emu/GS/RSXThread.cpp index a20fa52c21..0143dcfe9d 100644 --- a/rpcs3/Emu/GS/RSXThread.cpp +++ b/rpcs3/Emu/GS/RSXThread.cpp @@ -1373,7 +1373,7 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t& args, const u3 { switch (Ini.GSResolution.GetValue()) { - case 1:// 1920x1080 window size + case 1: // 1920x1080 window size m_width_scale = m_height_scale = 4.0f; m_width = 1980; m_height = 1080; @@ -1391,6 +1391,58 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t& args, const u3 break; } } + + // Rescale native 960x1080 to fit 1080p/720p/480p window size + if (m_buffer_width == 960 && m_buffer_height == 1080) + { + switch (Ini.GSResolution.GetValue()) + { + case 1: // 1920x1080 window size + m_width_scale = 4.0f; + m_height_scale = 2.0f; + m_width = 1980; + m_height = 1080; + break; + case 2: // 1280x720 window size + m_width_scale = 2.66f; + m_height_scale = 1.33f; + m_width = 1280; + m_height = 720; + break; + case 4: // 720x480 window size + m_width_scale = 1.5f; + m_height_scale = 0.88f; + m_width = 720; + m_height = 480; + break; + } + } + + // Rescale native 1024x768 to fit 1080p/720p/480p window size + if (m_buffer_width == 1024 && m_buffer_height == 768) + { + switch (Ini.GSResolution.GetValue()) + { + case 1: // 1920x1080 window size + m_width_scale = 3.75f; + m_height_scale = 2.81f; + m_width = 1980; + m_height = 1080; + break; + case 2: // 1280x720 window size + m_width_scale = 2.5f; + m_height_scale = 1.87f; + m_width = 1280; + m_height = 720; + break; + case 4: // 720x480 window size + m_width_scale = 1.4f; + m_height_scale = 1.25f; + m_width = 720; + m_height = 480; + break; + } + } } break; diff --git a/rpcs3/Emu/GS/sysutil_video.h b/rpcs3/Emu/GS/sysutil_video.h index 800196e60c..5be7d76c36 100644 --- a/rpcs3/Emu/GS/sysutil_video.h +++ b/rpcs3/Emu/GS/sysutil_video.h @@ -231,9 +231,6 @@ static const CellVideoOutResolution ResolutionTable[] = {1600, 1080}, //10 - 5 {1440, 1080}, //11 - 6 {1280, 1080}, //12 - 7 - {960, 1080}, //13 - 8 - {960, 540}, //14 - 9 (Terraria [BLES01938]) - {1024,768}, //15 - 10 (Eskiss Homebrew) }; inline static u32 ResolutionIdToNum(u32 id) @@ -253,30 +250,24 @@ inline static u32 ResolutionIdToNum(u32 id) 5, //10 6, //11 7, //12 - 8, //13 - 9, //14 - 10, //15 }; - return id <= 15 ? res[id] : 0; + return id <= 12 ? res[id] : 0; } inline static u32 ResolutionNumToId(u32 num) { static const u32 res[] = { - 0, - 1, - 2, - 4, - 5, - 10, - 11, - 12, - 13, - 14, - 15, + 0, //0 + 1, //1 + 2, //2 + 4, //3 + 5, //4 + 10, //5 + 11, //6 + 12, //7 }; - return num <= 10 ? res[num] : 0; + return num <= 7 ? res[num] : 0; } From 52112006d40dca7b82121b11175d04f7a581e268 Mon Sep 17 00:00:00 2001 From: raven02 Date: Tue, 8 Jul 2014 23:18:29 +0800 Subject: [PATCH 4/6] RSX: simplify recale native resolution --- rpcs3/Emu/GS/RSXThread.cpp | 139 +++++++++-------------------------- rpcs3/Emu/GS/RSXThread.h | 3 +- rpcs3/Emu/GS/sysutil_video.h | 7 +- 3 files changed, 40 insertions(+), 109 deletions(-) diff --git a/rpcs3/Emu/GS/RSXThread.cpp b/rpcs3/Emu/GS/RSXThread.cpp index 0143dcfe9d..6fcc246e36 100644 --- a/rpcs3/Emu/GS/RSXThread.cpp +++ b/rpcs3/Emu/GS/RSXThread.cpp @@ -9,6 +9,37 @@ u32 methodRegisters[0xffff]; +void RSXThread::nativeRescale(float width, float height) +{ + switch (Ini.GSResolution.GetValue()) + { + case 1: // 1920x1080 window size + m_width_scale = 1920 / width * 2.0f; + m_height_scale = 1080 / height * 2.0f; + m_width = 1920; + m_height = 1080; + break; + case 2: // 1280x720 window size + m_width_scale = 1280 / width * 2.0f; + m_height_scale = 720 / height * 2.0f; + m_width = 1280; + m_height = 720; + break; + case 4: // 720x480 window size + m_width_scale = 720 / width * 2.0f; + m_height_scale = 480 / height * 2.0f; + m_width = 720; + m_height = 480; + break; + case 5: // 720x576 window size + m_width_scale = 720 / width * 2.0f; + m_height_scale = 576 / height * 2.0f; + m_width = 720; + m_height = 576; + break; + } +} + u32 GetAddress(u32 offset, u8 location) { switch(location) @@ -1337,112 +1368,8 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t& args, const u3 m_width = m_buffer_width = re(buffers[m_gcm_current_buffer].width); m_height = m_buffer_height = re(buffers[m_gcm_current_buffer].height); - // Rescale native 1080p to fit 720p/480p window size - if (m_buffer_width == 1920 && m_buffer_height == 1080) - { - switch (Ini.GSResolution.GetValue()) - { - case 2: // 1280x720 window size - m_width_scale = m_height_scale = 1.33f; - m_width = 1280; - m_height = 720; - break; - case 4: // 720x480 window size - m_width_scale = 0.75f; - m_height_scale = 0.88f; - m_width = 720; - m_height = 480; - break; - } - } - - // Rescale native 720p to fit 480p window size - if (m_buffer_width == 1280 && m_buffer_height == 720) - { - if (Ini.GSResolution.GetValue() == 4) // 720x480 window size - { - m_width_scale = 1.125f; - m_height_scale = 1.33f; - m_width = 720; - m_height = 480; - } - } - - // Rescale native 960x540 to fit 1080p/720p/480p window size - if (m_buffer_width == 960 && m_buffer_height == 540) - { - switch (Ini.GSResolution.GetValue()) - { - case 1: // 1920x1080 window size - m_width_scale = m_height_scale = 4.0f; - m_width = 1980; - m_height = 1080; - break; - case 2: // 1280x720 window size - m_width_scale = m_height_scale = 2.66f; - m_width = 1280; - m_height = 720; - break; - case 4: // 720x480 window size - m_width_scale = 1.5f; - m_height_scale = 1.77f; - m_width = 720; - m_height = 480; - break; - } - } - - // Rescale native 960x1080 to fit 1080p/720p/480p window size - if (m_buffer_width == 960 && m_buffer_height == 1080) - { - switch (Ini.GSResolution.GetValue()) - { - case 1: // 1920x1080 window size - m_width_scale = 4.0f; - m_height_scale = 2.0f; - m_width = 1980; - m_height = 1080; - break; - case 2: // 1280x720 window size - m_width_scale = 2.66f; - m_height_scale = 1.33f; - m_width = 1280; - m_height = 720; - break; - case 4: // 720x480 window size - m_width_scale = 1.5f; - m_height_scale = 0.88f; - m_width = 720; - m_height = 480; - break; - } - } - - // Rescale native 1024x768 to fit 1080p/720p/480p window size - if (m_buffer_width == 1024 && m_buffer_height == 768) - { - switch (Ini.GSResolution.GetValue()) - { - case 1: // 1920x1080 window size - m_width_scale = 3.75f; - m_height_scale = 2.81f; - m_width = 1980; - m_height = 1080; - break; - case 2: // 1280x720 window size - m_width_scale = 2.5f; - m_height_scale = 1.87f; - m_width = 1280; - m_height = 720; - break; - case 4: // 720x480 window size - m_width_scale = 1.4f; - m_height_scale = 1.25f; - m_width = 720; - m_height = 480; - break; - } - } + // Rescale native resolution to fit 1080p/720p/480p/576p window size + nativeRescale((float)m_buffer_width, (float)m_buffer_height); } break; diff --git a/rpcs3/Emu/GS/RSXThread.h b/rpcs3/Emu/GS/RSXThread.h index 10c8ef83bb..3dd6abbf58 100644 --- a/rpcs3/Emu/GS/RSXThread.h +++ b/rpcs3/Emu/GS/RSXThread.h @@ -595,7 +595,8 @@ protected: u32 OutOfArgsCount(const uint x, const u32 cmd, const u32 count); void DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t& args, const u32 count); - + void nativeRescale(float width, float height); + virtual void OnInit() = 0; virtual void OnInitThread() = 0; virtual void OnExitThread() = 0; diff --git a/rpcs3/Emu/GS/sysutil_video.h b/rpcs3/Emu/GS/sysutil_video.h index 5be7d76c36..b0d03c6323 100644 --- a/rpcs3/Emu/GS/sysutil_video.h +++ b/rpcs3/Emu/GS/sysutil_video.h @@ -231,6 +231,7 @@ static const CellVideoOutResolution ResolutionTable[] = {1600, 1080}, //10 - 5 {1440, 1080}, //11 - 6 {1280, 1080}, //12 - 7 + {960, 1080}, //13 - 8 }; inline static u32 ResolutionIdToNum(u32 id) @@ -250,9 +251,10 @@ inline static u32 ResolutionIdToNum(u32 id) 5, //10 6, //11 7, //12 + 8, //13 }; - return id <= 12 ? res[id] : 0; + return id <= 13 ? res[id] : 0; } inline static u32 ResolutionNumToId(u32 num) @@ -267,7 +269,8 @@ inline static u32 ResolutionNumToId(u32 num) 10, //5 11, //6 12, //7 + 13, //8 }; - return num <= 7 ? res[num] : 0; + return num <= 8 ? res[num] : 0; } From ba3838f54c834f3d7b79970d8a16afda2a6c5649 Mon Sep 17 00:00:00 2001 From: Sacha Date: Wed, 9 Jul 2014 01:58:01 +1000 Subject: [PATCH 5/6] Qt: Update to Qt 5.2 code base. Makes the code much simpler! --- rpcs3/rpcs3qt/glviewer.cpp | 112 +++++++++++++------------------------ rpcs3/rpcs3qt/glviewer.h | 32 +++++++---- rpcs3/rpcs3qt/main.cpp | 2 +- rpcs3/rpcs3qt/qml/main.qml | 29 +++++----- 4 files changed, 77 insertions(+), 98 deletions(-) diff --git a/rpcs3/rpcs3qt/glviewer.cpp b/rpcs3/rpcs3qt/glviewer.cpp index 22128e5c72..f05546ef04 100644 --- a/rpcs3/rpcs3qt/glviewer.cpp +++ b/rpcs3/rpcs3qt/glviewer.cpp @@ -1,88 +1,56 @@ #include "glviewer.h" #include #include -#include #include -GLViewer::GLViewer(QQuickItem* parent) - : QQuickItem(parent), - m_timerID(0), - m_fbo(0) -{ - this->setFlag(QQuickItem::ItemHasContents); -} +// This class hooks beforeRendering and allows us to draw a scene and reset GL state. +// In future, we will likely want to manually control the update rate. -GLViewer::~GLViewer() -{ - this->cleanup(); -} +void GLRenderer::paint() { + // Do GL here + glViewport(0, 0, m_viewportSize.width(), m_viewportSize.height()); -void GLViewer::timerEvent(QTimerEvent* evt) -{ - if (evt && evt->timerId() == m_timerID) - this->update(); -} - -QSGNode* GLViewer::updatePaintNode(QSGNode* node, UpdatePaintNodeData* data) -{ - QSGSimpleTextureNode* textureNode = static_cast(node); - if (!textureNode) - textureNode = new QSGSimpleTextureNode(); - // Push Qt state. - glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS); - glPushAttrib(GL_ALL_ATTRIB_BITS); - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - glShadeModel(GL_FLAT); - glDisable(GL_CULL_FACE); - glDisable(GL_LIGHTING); - glDisable(GL_STENCIL_TEST); glDisable(GL_DEPTH_TEST); + + // Draw blue to the window to show that we work + glClearColor(0.2, 0, 0.8, 1); + glClear(GL_COLOR_BUFFER_BIT); + glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + // Put the GL state back to how it was in case it makes SceneGraph angry + ((QQuickWindow*)sender())->resetOpenGLState(); +} - delete m_fbo; - m_fbo = 0; - int width = this->width(); - int height = this->height(); - if (width && height) { - m_fbo = new QOpenGLFramebufferObject(width, height); - textureNode->setTexture(this->window()->createTextureFromId(m_fbo->texture(), m_fbo->size())); +GLViewer::GLViewer() + : m_renderer(0) +{ + connect(this, SIGNAL(windowChanged(QQuickWindow*)), this, SLOT(handleWindowChanged(QQuickWindow*))); +} + +void GLViewer::handleWindowChanged(QQuickWindow *win) +{ + if (win) { + connect(win, SIGNAL(beforeSynchronizing()), this, SLOT(sync()), Qt::DirectConnection); + connect(win, SIGNAL(sceneGraphInvalidated()), this, SLOT(cleanup()), Qt::DirectConnection); + // We will take over from here + win->setClearBeforeRendering(false); } - else - { - textureNode->setTexture(this->window()->createTextureFromId(0, QSize(0,0))); +} + +void GLViewer::sync() +{ + if (!m_renderer) { + m_renderer = new GLRenderer(); + connect(window(), SIGNAL(beforeRendering()), m_renderer, SLOT(paint()), Qt::DirectConnection); } - textureNode->setRect(this->boundingRect()); - - if (m_fbo) { - m_fbo->bind(); - } - // Restore (pop) Qt state. - glMatrixMode(GL_TEXTURE); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glPopAttrib(); - glPopClientAttrib(); - - if (!m_timerID) - m_timerID = this->startTimer(16); - - return textureNode; + m_renderer->setViewportSize(window()->size() * window()->devicePixelRatio()); } void GLViewer::cleanup() { - this->killTimer(m_timerID); - m_timerID = 0; - delete m_fbo; - m_fbo = nullptr; + if (m_renderer) { + delete m_renderer; + m_renderer = 0; + } } + diff --git a/rpcs3/rpcs3qt/glviewer.h b/rpcs3/rpcs3qt/glviewer.h index 7ff0009158..177e8607f3 100644 --- a/rpcs3/rpcs3qt/glviewer.h +++ b/rpcs3/rpcs3qt/glviewer.h @@ -1,23 +1,35 @@ #pragma once #include -#include + +class GLRenderer : public QObject { + Q_OBJECT +public: + GLRenderer() { } + + void setViewportSize(const QSize &size) { m_viewportSize = size; } + +public slots: + void paint(); + +private: + QSize m_viewportSize; +}; class GLViewer : public QQuickItem { - Q_OBJECT + Q_OBJECT public: - GLViewer(QQuickItem* parent = 0); - virtual ~GLViewer(); + GLViewer(); + ~GLViewer() { cleanup(); } -protected: - QSGNode* updatePaintNode(QSGNode* old, UpdatePaintNodeData* data); - void timerEvent(QTimerEvent* evt); +public slots: + void sync(); + void cleanup(); private slots: - void cleanup(); + void handleWindowChanged(QQuickWindow *win); private: - int m_timerID; - QOpenGLFramebufferObject* m_fbo; + GLRenderer *m_renderer; }; diff --git a/rpcs3/rpcs3qt/main.cpp b/rpcs3/rpcs3qt/main.cpp index 0aef5b2ab2..5bc3c32cc9 100644 --- a/rpcs3/rpcs3qt/main.cpp +++ b/rpcs3/rpcs3qt/main.cpp @@ -1,4 +1,4 @@ -// Qt5.1+ frontend implementation for rpcs3. Known to work on Windows, Linux, Mac +// Qt5.2+ frontend implementation for rpcs3. Known to work on Windows, Linux, Mac // by Sacha Refshauge #include #include diff --git a/rpcs3/rpcs3qt/qml/main.qml b/rpcs3/rpcs3qt/qml/main.qml index d115717bde..0231af1a73 100644 --- a/rpcs3/rpcs3qt/qml/main.qml +++ b/rpcs3/rpcs3qt/qml/main.qml @@ -1,6 +1,6 @@ -import QtQuick 2.1 -import QtQuick.Controls 1.0 -import QtQuick.Window 2.0 +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Window 2.1 import GLViewer 1.0 ApplicationWindow { @@ -44,19 +44,18 @@ ApplicationWindow { MenuItem { text: qsTr("&About...") } } } - GLViewer { - anchors.fill: parent - Rectangle { - color: Qt.rgba(0, 0.5, 0.35); - height: Math.round(parent.height / 2) - width: height - radius: width + GLViewer {} + Rectangle { + color: Qt.rgba(0, 0.5, 0.35); + height: Math.round(parent.height / 2) + width: height + radius: width + anchors.centerIn: parent + Text { anchors.centerIn: parent - Text { - anchors.centerIn: parent - font.pixelSize: parent.height / 2 - text: "Qt" - } + font.pixelSize: parent.height / 2 + text: "Qt" } } + } From 2ba5ada9f81203666297beedc1e85274daa98db3 Mon Sep 17 00:00:00 2001 From: Sacha Date: Wed, 9 Jul 2014 02:26:31 +1000 Subject: [PATCH 6/6] Qt: Update to match rest of emu. --- rpcs3/rpcs3qt/qml/main.qml | 10 ++++++---- rpcs3/rpcs3qt/rpcs3qt.pro | 2 +- rpcs3/stdafx.h | 6 ++++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/rpcs3/rpcs3qt/qml/main.qml b/rpcs3/rpcs3qt/qml/main.qml index 0231af1a73..e6307bc49b 100644 --- a/rpcs3/rpcs3qt/qml/main.qml +++ b/rpcs3/rpcs3qt/qml/main.qml @@ -6,16 +6,16 @@ import GLViewer 1.0 ApplicationWindow { visible: true title: qsTr("RPCS3 Qt") - width: 500 - height: 500 + width: Screen.desktopAvailableWidth / 2 + height: Screen.desktopAvailableHeight / 2 menuBar: MenuBar { Menu { title: qsTr("&Boot") MenuItem { text: qsTr("&Boot Game...") } + MenuItem { text: qsTr("&Boot Game and Start...") } MenuItem { text: qsTr("&Install PKG") } MenuSeparator {} - MenuItem { text: qsTr("Boot &ELF") } - MenuItem { text: qsTr("Boot &SELF") } + MenuItem { text: qsTr("Boot &(S)ELF") } MenuSeparator {} MenuItem { text: qsTr("E\&xit"); onTriggered: Qt.quit() } } @@ -30,6 +30,7 @@ ApplicationWindow { Menu { title: qsTr("&Config") MenuItem { text: qsTr("&Settings") } + MenuItem { text: qsTr("&PAD Settings") } MenuSeparator {} MenuItem { text: qsTr("Virtual &File System Manager") } MenuItem { text: qsTr("Virtual &HDD Manager") } @@ -38,6 +39,7 @@ ApplicationWindow { title: qsTr("&Tools") MenuItem { text: qsTr("&ELF Compiler") } MenuItem { text: qsTr("&Memory Viewer") } + MenuItem { text: qsTr("&RSX Debugger") } } Menu { title: qsTr("&Help") diff --git a/rpcs3/rpcs3qt/rpcs3qt.pro b/rpcs3/rpcs3qt/rpcs3qt.pro index 977c740315..6bdf680161 100644 --- a/rpcs3/rpcs3qt/rpcs3qt.pro +++ b/rpcs3/rpcs3qt/rpcs3qt.pro @@ -1,4 +1,4 @@ -# Qt5.1+ project for rpcs3. Works on Windows, Linux and Mac OSX +# Qt5.2+ project for rpcs3. Works on Windows, Linux and Mac OSX QT += gui opengl quick CONFIG += c++11 diff --git a/rpcs3/stdafx.h b/rpcs3/stdafx.h index 77a9cac9b3..4fbb2d8d3e 100644 --- a/rpcs3/stdafx.h +++ b/rpcs3/stdafx.h @@ -50,6 +50,10 @@ #endif // _DEBUG #endif // MSVC_CRT_MEMLEAK_DETECTION +// This header should be frontend-agnostic, so don't assume wx includes everything +#include +#include +#include #include typedef unsigned int uint; @@ -302,7 +306,9 @@ enum Status #include "Emu/FS/vfsStreamMemory.h" #include "Emu/FS/vfsFile.h" #include "Emu/FS/vfsDir.h" +#ifndef QT_UI #include "rpcs3.h" +#endif #define _PRGNAME_ "RPCS3" #define _PRGVER_ "0.0.0.4"