amwatson / CitraVR

Port of the leading 3DS emulator, Citra — designed for playing 3DS homebrew and personal game backups in 3D on the go with your Quest.
GNU General Public License v3.0
686 stars 60 forks source link

Versions above v0.3.2 no longer play mario kart 7, mario tennis open, and likely others #78

Open jack4455667788 opened 1 week ago

jack4455667788 commented 1 week ago

Is there an existing issue for this?

Affected Build(s)

> 0.3.2

Description of Issue

You were made aware of this issue here several months ago and said you knew what to do to fix it. It seems the version of questOS may be involved as well, as both the OP and i have v64.

The problem can be worked around in subsequent versions by turning hardware shaders off in the debug menu, but with a significant performance hit.

I'd like to help if i can (though may not be up to the challenge...), on this issue and in general to make this project better.

Below is an edited version of v0.3.2 that can be installed simultaneously with the latest version, as a hack workaround for the time being.

https://mega.nz/file/eVBmzAjb#hnjDcAQpiiRBPgAlwSQhYVGkHBlE891FWMi5O55zQ9k

Expected Behavior

I expect that these games would run as well or better in subsequent versions.

Reproduction Steps

Try loading mario kart 7 (or mario tennis open - probably others as well) with hardware shaders enabled in any version > 0.3.2

Log File

If you need this / think it will help - I can get it for you.

System Configuration

HMD:Quest 2 OS:v64

mrchrisster commented 1 week ago

Your version of 0.3.2 does not seem to work on v66 for me. The controls are not possible with an extra Citra window showing

jack4455667788 commented 1 week ago

Your version of 0.3.2 does not seem to work on v66 for me.

Bummer :( What happens when you run it? I don't know what is really going on to cause this bug or how the os plays into it, but the copy i shared is working properly for me in v64. When you uninstall the latest citra and just install v0.3.2 (my edited copy or the one available here) - does it work then?

The controls are not possible with an extra Citra window showing

You mean using multitasking? I have no idea what would happen if you tried to run them both at the same time.

All I did was edit the manifest (and re-sign) so both v0.3.2 and the latest version could be installed at the same time and not require you to constantly uninstall the latest citravr and reinstall v0.3.2 whenever you wanted to play the games broken in later versions.

I may need to make more changes to make it truly play nice (or do it the proper - non hack - way and recompile) but it is working for me currently (extremely minimally tested though, i just whipped it up today. If it matters, i installed v0.3.2 first and then installed the latest version and configured them in that order too.). I am using the oculus controllers though and haven't tried a gamepad... Are you using a gamepad? Edit: Gamepad works fine for me too.

mrchrisster commented 1 week ago

Hi Jack, sorry I thought you tried changing the code to make this work again for v66. I can confirm it installs next to my other Citra version. There is a fix on how to compile a version for v66+ https://www.reddit.com/r/CitraVR/s/LWNKZsL0Bx

I'm wondering if your version works for you because you're using a quest 2?

jack4455667788 commented 1 week ago

Interesting.

Because the fix is so simple, I've made a copy for you and anyone else who is looking for it. If it works in prior versions too (assuming they skip/ignore unknown flags like this), then I'll remove my other copy. Please let me know if it works for you!

https://mega.nz/file/rNQFSYhL#a3P5AuS4IaJaOIm8agP7_vby09D4T8x_FeGwI-Du-_E - for v66

I'm wondering if your version works for you because you're using a quest 2?

I doubt it. It's because i'm using v64! (i don't update if i don't have to)

mrchrisster commented 1 week ago

Thanks for giving it a try, Jack. Unfortunately the depth is off somehow (looks like left and right eye are flipped) and I still can't control the touch screen on v66 :(

jack4455667788 commented 1 week ago

Bummer :( I did what the video (lubos) showed, but the video also shows them pulling down the code for 0.3.2 and then doing nothing with it. If recompiling is required, they skipped that in the video.

At lest the vr worked though! That shows that the fix does work as intended (though not sure about that inverted eye issue). Edit I stumbled (by luck) on the inverted eye issue myself and it appears to be a sporadic bug in v0.3.2. For me, it only happened after the "crash bug handling" dialog was displayed, immersive vr was turned on, and I was mucking about with hand tracking at the time. Those factors may have nothing to do with it, but it is the one and only time i have seen this issue (also it was the only time in immersive mode that i could see the home environment in the background as well as catch glimpses of the main citra menu behind the vr display whenever i tried to use the oculus button to exit the program). Coincidentally or not, this strange state also left me without the ability to quit - I was able to wriggle out of it by pressing the oculus button repeatedly and getting lucky clicking on one of the icons on the main oculus app bar before the vr display obscured it again. In any case, this has happened one time and i have used the program a lot. Have you tried more than once to make sure it wasn't a fluke? (I recommend trying with immersive turned off - as that may have been involved)

In the issue the fix was posted in (https://github.com/amwatson/CitraVR/issues/76), the user on v66 said that everything worked for them (in v0.4.2) except the screen was shown as 2D. The fix is only intended to re-enable 3D mode and should have nothing to do with controller functionality (likewise the other manifest changes I made to allow simultaneous install should have had no impact on controller functionality either).

Do your controllers work in v0.4.2 found here (not the fixed copy that is supposedly available at the discord server)? The screen will be in 2d, but it might help to identify what the issue you're facing is. Same thing with v0.3.2 - have you tried the copy here and, if so, what results did you get with it?

Lastly, have you tried with a gamepad controller (might be worth a try)? And do you have pro controllers (that might possibly be the issue/involved here)?

mrchrisster commented 1 week ago

Hey Jack,

Thanks for your detailed response. I tried basically all options and restarting the headset in between as well 0.4.2 works well with the controllers when using Vulkan and disabling accurate multiplication. LuisFguiolltine just posted 0.3.2 on discord:

https://drive.google.com/file/d/1PKw1oh6djnmB0hYuWrfXm0wEpg69mSZe/view?usp=sharing

I'll give this a try now. Thanks again for looking into this and trying to help with this pesky incompatibly problem.

DerCooleJustin commented 5 days ago

Hey, i've had this issue as well. I don't know why this happens, but it seems to be the way CitraVR handles CIAs. Here is a workaround i developed:

  1. Drop the CIA on the SD Card of an actual 3DS
  2. If the CIA is encrypted: Decrypt it
  3. Dump CXI file from the decrypted CIA
  4. Put the CXI file into the games folder and launch the game in CitraVR I am not sure why this happens, and why this workaround works. I dropped this comment hoping this would help anyone with this issue :)