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

[3DS] [Feature request] XMB Performance on 3DS #16473

Open
Anonymous941 opened this issue Apr 27, 2024 · 4 comments
Open

[3DS] [Feature request] XMB Performance on 3DS #16473

Anonymous941 opened this issue Apr 27, 2024 · 4 comments

Comments

@Anonymous941
Copy link

Description

On my New 3DS, when starting up RetroArch, opening a game, closing a game, and switching cores, it spends around 1 minute on a black screen when using XMB, whereas on RGUI it only takes a few seconds.

I assume that this is because of the horrible SD random access IO speeds, and there are 1421 files in the assets/xmb folder, despite all of them combined taking up only 4.1 MB. Could there be an option to package these assets as a .tar and during startup, temporarily load them into RAM?

Alternatively (or additionally), it would be great if it would just have to load this once, rather then reloading it when switching games/cores/back to the menu. Since it's statically linked, I'm not sure if this is an option however

Expected behavior

RetroArch loads quickly

Actual behavior

RetroArch takes a long time to do any of these tasks

Steps to reproduce the bug

Open RetroArch

Bisect Results

N/A

Version/Commit

N/A

Environment information

N/A

@RobLoach
Copy link
Member

If anything, I believe using a .tar to compress all the assets will make loading slower, because it would have to decompress the assets.

XMB is rather graphic intense. You might want to try disabling the background shader and such.

@Anonymous941
Copy link
Author

.tar doesn't compress anything, and the problem is the amount of tiny files...

@RobLoach
Copy link
Member

This issue is about loading performance on XMB. Tar won't help loading performance, since it would still load the same amount of data from the disc. XMB is pretty hefty, so I'm not surprised it's slow. 800 × 240 is also pretty tight resolution for it too.

Try a faster SD card? Disable all the shaders?

@RobLoach RobLoach changed the title [3DS] [Feature request] Use .tar for xmb assets [3DS] [Feature request] XMB Support for 3DS Apr 29, 2024
@Anonymous941
Copy link
Author

I'm not sure what the new title means, XMB is already supported so I'm not asking about adding it...

Try a faster SD card? Disable all the shaders?

I think the bottleneck is the actual console, because on a computer I can quickly copy these small files

Tar won't help loading performance, since it would still load the same amount of data from the disc.

As a comment in a similar issue put it:

In order to actually use a core, we need to read its corresponding info file (this tells us, among other things, the type of content it can load). These are teeny tiny files, and on every other platform it takes a few milliseconds to read them - but 3DS is again a special case. It has the most appallingly slow microsd random access/transfer speeds I have ever seen anywhere - it's barely functional. So something that takes no time at all on every other platform takes forever on 3DS.

The current method of loading individual info files is pretty lousy from a performance perspective (the config file format is hugely inefficient when it comes to parsing operations, and multiple file open/close operations are bad in general, even if they are fast on other platforms). A single file would improve this, but:

The 3DS can read a medium-sized 4 MB file relatively quickly, but when trying to read a lot of small files (hundreds in this case), because of the slow access speeds, and inefficiencies of the FAT32 filesystem, it takes a long time to my understanding.

@Anonymous941 Anonymous941 changed the title [3DS] [Feature request] XMB Support for 3DS [3DS] [Feature request] XMB Performance on 3DS Apr 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants