Rpcs3: Qt Progress Tracking

Created on 17 Apr 2017  路  24Comments  路  Source: RPCS3/rpcs3

This issue is to track progress towards converting RPCS3 to Qt.

The repo for progress which uses the branch RPCS3-QT. The pull request. The instructions to build are updated to reflect getting Qt.

Goals:

  • [x] Make CMake/Appveyor work again. This also means fixing the Linux build to work with Qt.
  • [x] Create base/stub implementations for menus that are not yet implemented. There are many disabled menu options that could be finished. Some are mimickable from wx, others are new and improvements.
  • [x] Flesh out implementations for usability. Some main ones:
  1. Debugger
  2. Logging
  3. Gamelist (polishing needed)
  • [x] Have state be consistent. Implement the YAML stuff.

  • [x] Connect things to backend so the UI isn't just pretty, it is functional. This is a per item basis. And, listing all things that need/have implementation would be cumbersome (though I may do so anyhow). The best bet would be to look at the code and comment here/ask on discord.

Known Bugs (from build testing):

1) If you cancel a package installation, the taskbar progress won't reset. (thanks ssshadow)
2) Qt is a bit zealous in its copying of dll dependencies (windowdeployqt.exe). Figure out which dlls are actually needed.
3) Add SPU checkboxes in Core (I'll need to merge with master and it should be good)
4) Fix initial column sizes (Fixed but needs to get merged in still)
.5) GuiConfig is in a weird spot. (../bin/GuiConfig) That's because I copied the MSVC build to make custom build. Appveyor will have a different defined location, and it should be fine.
6) Autosaves are broken.

Enhancement GUI

Most helpful comment

lists for stuff left TODO now: feel free to contribute

💚PadManager
needs better layout @DAGINATSUKO

💚SettingsDialog
add VFS advanced tab ?

💚MemoryViewer
could the buffers be converted even easier? e.g. using other formats directly
http://doc.qt.io/qt-5.8/qimage.html#Format-enum

💛RSXDebugger - needs polishing:

  • [ ] confirm qt buffer conversions
  • [ ] address sometimes jumps weirdly while scrolling (which bug is doing that ?)

All 24 comments

lists for stuff left TODO now: feel free to contribute

💚PadManager
needs better layout @DAGINATSUKO

💚SettingsDialog
add VFS advanced tab ?

💚MemoryViewer
could the buffers be converted even easier? e.g. using other formats directly
http://doc.qt.io/qt-5.8/qimage.html#Format-enum

💛RSXDebugger - needs polishing:

  • [ ] confirm qt buffer conversions
  • [ ] address sometimes jumps weirdly while scrolling (which bug is doing that ?)

Logging is done except for having the log settings persist through reset.

Fix emu stop on close is done. (I cant modify the list. Sad)

View defaults to
image

Missing Core SPU options

Tried it with the custom build of flash-fire

It looks like it is unable to create a new Save Data
image

When there is a Save Data already available. The below dialog OK button does not seem to respond
image

Just noting I've seen these, thanks for looking at this!

The dialog OK button not respond to install the game data.
datosdeljuego

Thanks Raveskira

Bioshock-

F {PPU[0x1000000] Thread (main_thread) [0x000278f0]} : class std::runtime_error thrown: Trap!
(in file Emu\Cell\PPUInterpreter.cpp:3115)

Simpsons game dx 12-
Hangs on the EA logo
W {PPU[0x1000000] Thread (main_thread) [0x00b11b18]} cellGcmSys: cellGcmSetWaitFlip(ctxt=*0xe59000)
W {PPU[0x1000000] Thread (main_thread) [0x0050a730]} RSX: Reporting Cell writing to 0x2d6e4d00

F {rsx::thread} : class std::logic_error thrown: fs::file is null

This happens if your D3D adapter is not selected correctly. Sems like the first time QT does not set it correctly
try to change the adapter to OpenGL. Run a game
Now change the adapter to D3D12.
This is how I resolved it. Maybe the first time D3D adapter value is not getting updated properly in the config.yml

Build updated! @raveskirza thanks for the detailed report that made fixing this bug a lot easier!

(this will be much easier once appveyor is fixed, but fixing appveyor is beyond my skills)

@raveskirza @CesarAxe please test again with the new build

@Megamouse Now it works, thanks.

Updated build to reflect vfs not working and a couple other small changes. (pretend I am a human appveyor lol)

AutoSave dialog now work nicely with the new build 6

However the issue with the D3D adapter still exist
When configuring RPCS3 the first time, After selecting D3D and clicking on OK,it displays that D3D adapter is not available
image

But in the setting, however it would show as it has been set
image

When a game is booted,it will throw the error message as
F {rsx::thread} : class std::logic_error thrown: fs::file is null

image

Config also looks fine
image

To resolve
We have to change the Graphics to OpenGL or Vulkan, start a Game, then close the game
Then go back to setting and change to D3D adapter. this time D3d can be used to Boot the game

If you look at the config, It is still the same as it was before but how it starts working for D3D after performing the above two steps is quite puzzling
image

Related to keyboard mapping

When the config.yml from the wx rpcs3 is copied to the rpcs3qt. I see the below discrepancy

wX:

image

image

QT (For the same config.yml, some keys are displayed different)

image

image

Yeah. The keybindings are different inside of Qt, and maintaining a map from WX keys to Qt keys isn't worth the effort for reverse compatibility. It's best just to wipe the old file to defaults because they aren't compatible in general. Thanks for testing!

It's slightly incorrect. I would recommend to create another file, and leave wx stuff unchanged. This would be more consistent.

Alright. I'll modify to make and use a new file.

@raveskirza the Warning you get in the log only happens if no valid adapter is set, which is the case on first start. The bug you refer to seems to be unrelated to the code, but to some other ominous problem.
That said however, the search for this bug lead us to another one, which caused the Warning I talked about before to be spawned every time. It was caused by not getting valid strings for the adapter from config.yml. this should be fixed in the next build. Hopefully we find the bigger problem soon, too.
If you put the newly unzipped qt files into a completely new rpcs3 master folder, the phenomenon should not occur.
Edit: both bugs are now fixed

Latest build (8) should fix both keyboard file name being same as wx and direct X error. Please retest. @raveskirza

@flash-fire, @Megamouse, great work! Now it is smooth as silk

I noticed a very minor difference in behavior between wx and qt Settings , load Libraries section, Manual library selection list.

Steps to replicate:
a. Search for a module which is currently not selected e.g. fiber
b. Select the module e.g libfiber.sprx
c. Now clear the search string, so that all the modules are displayed
d. wx: the select module will appear on the top, you dont have to scroll down the list to see if the module is selected
qt: the select module will not appear on the top, you will need to scroll down the list to see if the module is selected. If you click OK and then again open the settings, it appears at the top though.

Tried the below latest build and library list behavior is exactly like it was in wx. Nice!
https://ci.appveyor.com/api/buildjobs/aoqfmodu1309af2j/artifacts/rpcs3-v0.0.2-2017-05-25-51b0a63e_win64.zip

2645 merged

Was this page helpful?
0 / 5 - 0 ratings

Related issues

kurosh10000 picture kurosh10000  路  3Comments

xddxd picture xddxd  路  3Comments

LokiGrants picture LokiGrants  路  3Comments

elad335 picture elad335  路  3Comments

AniLeo picture AniLeo  路  3Comments