Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow emulation to work without firmware #9367

Merged
merged 4 commits into from Dec 7, 2020
Merged

Conversation

elad335
Copy link
Contributor

@elad335 elad335 commented Dec 3, 2020

HLE missing SPRX files, if no firmware is installed a pure HLE mode is activated.

More stuff:

  • Fix manual list loading bugs. (mentioned in Option "Manually load selected libraries" does compiling them but NOT loading #6442 (comment) )
  • Fix HLE gcm.
  • Bugfix to use system fonts instead of depending on firmware fonts.
  • Fix HLE sprx path detection. (multip-delim paths or paths with "."/".." such as "/dev_flash//sys/../sys/external////libvdec.sprx" didn't work)
  • Another bugfix for HLE detection for non-existing SPRX paths which start with "/dev_flash/sys/external/" such as "/dev_flash/sys/external/not_real_dir/libvdec.sprx", return ENOENT for them instead of doing HLE + CELL_OK. (liblv2list/manual modes)
  • Hardcode GUI sprx selection list to allow/fix LLE/HLE setting manipulation regardless of current firmware state. (installation state, fw version)

rpcs3/Emu/System.cpp Outdated Show resolved Hide resolved
@dio-gh
Copy link
Contributor

dio-gh commented Dec 3, 2020

Not sure how end-user ready this is, but I gave it a shot with the cube sample and it fails to display anything. The "no firmware installed" error message also still comes up, might wanna reword that and demote it into a warning msgbox.

edit: oh, the triangle test works tho :p

@elad335
Copy link
Contributor Author

elad335 commented Dec 3, 2020

Made cube test work fw-less.

@dio-gh
Copy link
Contributor

dio-gh commented Dec 3, 2020

Self compiled the latest commit due to git being pissy, can confirm the cube sample works now too. I'm still unsure to what extent the fully HLE mode is supposed to work with real games, I tested Armored Core: For Answer out of sheer curiousity, and it fatals right before it could show anything. May be fine for the time being though.

In case it's not: RPCS3.log.gz

Idk what's up with git on windows now btw, but just like Azure, I had massive troubles cloning the submodules. Took several tries and manual cleanings to get all of them properly pulled. Weird stuff.

Latest exe until the CI starts working again: rpcs3.exe.gz

@elad335
Copy link
Contributor Author

elad335 commented Dec 3, 2020

They need HLE SPURS and a few other HLE libs which are yet to be working properly.

@MSuih
Copy link
Member

MSuih commented Dec 4, 2020

I'm not sure about letting new users run rpcs3 without firmware at this point, I feel like it'll just cause a lot of "why doesn't my game work" questions. I feel like this should be a debug setting or something, at least until our HLE is significantly improved.

Sure, there's a dialog to warn users, but many people just click yes/ok without reading any of it.

@elad335
Copy link
Contributor Author

elad335 commented Dec 4, 2020

If X game does not boot without firmware, and didnt boot before, what difference does it make for the end user?

@MSuih
Copy link
Member

MSuih commented Dec 4, 2020

Previously they got a "Boot failed because firmware is missing" dialog box that they could not get past. They'd either stop to read it, or in worst case ask someone about "the weird error" that very clearly states what the issue is.

With these changes they'd click ok to dismiss the annoying popup, then get some weird error like black/white screen, access violation or whatever. They get confused and ask about why they're getting a black screen or whatever, which is more annoying for the other guy to figure out.

@MSuih
Copy link
Member

MSuih commented Dec 4, 2020

Also, adding it as an option would mean that people who intentionally run rpcs3 without firmware (for testing purposes f.ex.) wouldn't have to click ok to dismiss the warning every time they launch something.

@elad335
Copy link
Contributor Author

elad335 commented Dec 4, 2020

  • Now an interactive yes/no dialog, added secret GUI setting to disable popup (global ini GUI settings), popup never shows for SPU image + PPU PRX viewers which do not need fw.

Copy link
Contributor

@Megamouse Megamouse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer if the firmware check was split into another PR, since reviewers differ between the topics.

rpcs3/Emu/System.cpp Outdated Show resolved Hide resolved
rpcs3/rpcs3qt/gui_settings.cpp Outdated Show resolved Hide resolved
@Megamouse
Copy link
Contributor

Btw, I think you didn't really implement MSuih's suggestion.

The current state (in pseudo code):

if (fw not found AND show dialog) // default on
    show dialog
    if (skipped)
        wonder about next error
    else abort

MSuih's suggestion:


if (fw not found AND show dialog) // default on
    show error and abort

@elad335
Copy link
Contributor Author

elad335 commented Dec 4, 2020

Btw, I think you didn't really implement MSuih's suggestion.

The current state (in pseudo code):

if (fw not found AND show dialog) // default on
    show dialog
    if (skipped)
        wonder about next error
    else abort

MSuih's suggestion:


if (fw not found AND show dialog) // default on
    show error and abort

I prefer that "pure HLE/no fw" mode available all the time reagrdless of any setting, guarding with a simple yes/no question dialoge suffices.

* Fix HLE prx path detection.
* Fix manual list loading bugs.
Resulted in an unexpected dependancy on firmware files.
@AniLeo
Copy link
Member

AniLeo commented Dec 5, 2020

Why hardcode sprx list? What if you want to try old firmware versions that lack some of these modules? It seems better to just use what's listed in the folder

@elad335
Copy link
Contributor Author

elad335 commented Dec 5, 2020

Its OK to select files which do not exist, it doesnt crash or anything like that. Also if you want to switch between different fw versions and use the GUI setting it will forget your picks on files which didnt exist on older versions after switching to newer versions, which is fixed here.

Do not depend on /dev_flash/sys/external/ contents.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants