-
Notifications
You must be signed in to change notification settings - Fork 604
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
State of Linux (Cont) #107
Comments
ext4 has case-folding support. Would it be possible to make it a requirement for Cemu? Users would have to store stuff accessed by the Wii U in a separate volume with this feature enabled though, which could be hard to do. |
That's a very bad idea. This requires, as you said, a seprate volume. Users might want to use a case-sensitive filesystem, so they need a own partition/drive just for Cemu. It is also not very end user friendly to show a Message to new Linux Users, who want to play their Games: "Welcome to Cemu on Linux! Linux is a user friendly OS and not only a nerd OS as everyone says. Now please reformat your drive and create a partition with a case-insensitive filesystem to use Cemu." Especially Steam Deck Users will have fun. |
Yeah I was just pointing out that the thing exists. It would be cool if Cemu supported it though, as I doubt that any workaround for case-folding would be more performant than an in-kernel implementation. |
Steam Deck wouldn't have this issue afaik since it's using a case-insensitive filesystem. But yeah, really only Wine does this to my knowledge and they do heavy caching using a virtual filesystem to prevent it from hurting performance. |
To have a bit more context: what data used by Cemu needs casefolding support? Only the mlc01 folder? Only the games one? Both? Something else? |
Case-insensitivity is needed for all files that map to the virtual Wii U file system in some way. Which is mlc and game folder files. So basically a majority of our file access code done by many different HLE modules |
This might be too hacky and im not too much of a programmer but cant all the files and directories which will be mapped to the wii u filesystem just be all uppercased or all lowercased |
That wouldn't work because the case must be kept intact. Anything else is not accurate emulation and some games might rely on case-sensitive checks internally |
Edit - I was wrong Another possibility though - https://www.collabora.com/news-and-blog/blog/2020/08/27/using-the-linux-kernel-case-insensitive-feature-in-ext4/ |
How do other emulators cope with this? |
It seems that y'all are talking about the Wii U's case-insensitive FS, but I'll throw this issue I'm having here since I think it's related to the main discussion:
About the online play feature(s), has anyone managed to get online actually working on Linux? I'm using the pre-compiled binary for Ubuntu on Arch, and after symlinking the missing dependencies the games I play work fine but when I try to go online by copying
My host machine is running Arch. Online works just fine on a Windows 10 VM (it says that the account is valid on Windows), so it's definitely not me following the instructions incorrectly. Does anyone know what could be causing this issue? |
You can create an image file and format it as ext4 |
To do it properly someone would need to write a Wii/U filesystem driver just like this one for FATX... https://github.com/mborgerson/fatx ... which uses a userspace FUSE based library and can seamlessly handle mounting Xbox & Xbox 360 images directly. |
I'm on latest ArchLinux and compiled Cemu with gcc and g++ and make. Few issues:
|
This may work for the mlc01 folder, but not for the games one. The latter has to be easily accessible to the user. Still, better than requiring a different partition :)
Mh, I believe that the issue here is the opposite; you don't need to mount a Wii U filesystem on the host, but you have to read the host's filesystem on the (emulated) Wii U |
Wine handles the case mismatch problem by recursively iterating directories and comparing file/folder names manually. With lots of caching it can be made fast. |
Are you using Vulkan or OpenGL as the graphics API? |
There's no functional difference between the two, once a filesystem is mounted on the host it is accessible by both the host and the emulator. So you create a 32GB image, format it for the WiiU, mount it with FUSE and its good. Emulator can read it as a native volume and the user can drag/drop files as needed. Edit Still not exactly ideal though since you could only ever hold 32GBs worth of games at one time and would need to swap them out as needed. Also any kind of image solution would break the GUI game list. |
Nope, they're currently stubbed on Linux, like a few other things. One of the things listed by Exzap. Task is still up for grabs for anyone who wants :p. |
@Crementif I managed to get Cemu to say that my account is valid by compiling from source. It was a problem with the binary in the releases. I'll update if I encounter any issues, but the problem I mentioned is fixed for now. |
I don't know what does Wine implement below the hood, but, maybe, a small SQLite db can be used to cache the entire tree? |
For Unix, Redis would be a better choice than SQLite. |
Using Vulkan, OpenGL does the same thing |
XDG Base Directory Specification The files that Cemu writes and reads from should not be next to the binary. It should be in the XDG directories.
|
Why would there be any need to persistently store such a cache? I can't think of any good reason for that. Nor would there be any need for a database engine to manage it. |
To me they look more like configuration files than general data, so why not
Mh, shouldn't logs go to
|
Yeah, cache is more for what programs do internally; if the files it generates are usable/useful for the end user it shouldn't be stored in cache generally. |
Good news! I had a quick chat with Krisman, the guy who implemented casefolding (case-insensitive) support for ext4, and he said the following:
All things considered, I think that using an ext4 image managed by Cemu (as also mentioned by @JPabloLassala) might be the best solution so far. Opportunistic use of the casefold feature on the host's filesystem might not be helpful in practice, because as far as I know there are no distros that ship with this feature enabled by default, and enabling it requires unmounting the filesystem (that could be hard/impossible to do for users that store everything in a single partition, like me). Using an image would likely mean that the mlc01 and games folder won't be normally accessible by the user, but I guess Cemu could transparently mount and unmuont the image when launched and closed. |
Yep, that's also what I tried, but I get a crash whenever I try to open general settings. More info in issue #527 (there is no reaction there yet tho) Is it possible to edit the settings without the UI? The sound is honestly the only thing preventing me to start playing |
I've been using the AppImages of Cemu (2.0.17, 2.0.18 and 2.0.19) for a few weeks now, no crashes and everything works great and fast (at least for BoTW), except that the app doesn't seem to respect the system dark theme on KDE.
|
This is what I've got in mine
|
I updated the original post to match the current state of development. |
Compiling from source in Ubuntu 22.04 , following the instructions on the site, gives me this error |
This comment was marked as off-topic.
This comment was marked as off-topic.
You should file an issue on my repo if you are having an issue with the ebuilds. Cemu is covered in the readme: https://github.com/Tatsh/tatsh-overlay#cemu |
There is now a Flatpak version available! |
I REJOICE FOR FREEDOM! Any way to merge or transition from appimage to flatpak? Like configs and such? |
You can copy the Cemu directory from |
Checking in tried to play Lego dimensions and couldn't get the portal to work looks like that's because hid support isn't in the Linux version yet |
I think the flatpak is stuck in stable and they don't have a beta branch on flatpak |
In case it helps anyone else who couldn't get the audio devices to populate:
|
Is there any tracking issue or PR on the missing HID support? |
Just tested Lego dimensions on arch using the AUR package and can confirm that the the postal works and detects figures |
Hey all, one suggestion for the Cemu linux builds is to change the directory for shadercache. Currently, they are stored in |
That's the point of the common cache folder, though? Removing that entire folder will affect many other applications: it's a convenient way to clear up some space, splitting that out into separate custom places per app is a step backwards. |
Exactly, why would a user delete the cache folder and not expect everything to have to be re-cached again? Maybe the solution would be to not blindly delete the entire cache folder to try to save space 🙃 |
I completely understand where you're coming from with the precompiled shader cache, but I think for the transferable cache these are not usually supposed to be removed. They would take a while to regenerate if you were to play again. |
So why are these builds experimental? Linux support looks to be completely fine??? I'm on Steam Deck btw |
Experimental just means that it didn't go through the rigorous testing and bug fixing period that comes with calling a release stable. But I agree that the state of the Linux releases is pretty good and this issue has runs it's course. Let's close it |
This is a continuation of #1
The current top priorities for our Linux build are:
There are also some features that haven't been ported over yet:
Nice to have:
(List last updated on 16-03-2024)
When building from source we use vcpkg for managing dependencies on all platforms and our officially supported and recommended compiler is Clang 14 or higher (and MSVC on Windows). With the
-DENABLE_VCPKG=OFF
option you can use system libraries instead of vcpkg but we generally discourage it as we prefer having builds with the same exact library configuration across all platforms for simplicity of debugging. We also won't officially support distributing Cemu as a distro package. Of course package maintainers are free to package it, but our focus is to streamline the troubleshooting and bug reporting process and it's way easier if there aren't dozens of different builds.The text was updated successfully, but these errors were encountered: