libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.23k stars 1.82k forks source link

[3DS] GLUI Menu Driver is missing assets #14544

Closed Jaffacakelover closed 1 year ago

Jaffacakelover commented 1 year ago

Warning: Missing assets, use the Online Updater if available

Retroarch 3DS complains about missing assets if the menu driver is switched to GLUI, prompting the user to download assets... but there's no Update Assets option in the Online Updater menu.

I tried adding the Ozone assets in manually: First using Universal Updater (which is incredibly slow and saves the assets into sdmc:/retroarch/media instead of sdmc:/retroarch/assets), then by putting the SD card into a computer and adding sdmc:/retroarch/assets/ozone from the buildbot. Sadly, it still complains about missing assets. They must have to go in a differently named folder / file structure. I tried sdmc:/retroarch/assets/glui, and moving everything out of subfolders into sdmc:/retroarch/assets/glui. Neither worked.

The buildbot for Retroarch was recently tweaked to only include the XMB Monochrome Assets by default (https://github.com/libretro/RetroArch/issues/12141#issuecomment-1242789019), which could have caused this side effect.

Options to solve this issue in Retroarch 3DS builds:

Yrouel commented 1 year ago

1.11.0 is the latest with the full complement of xmb themes and there was no "ozone" or "glui" folder inside assets just "ctr" "menu_widgets" "rgui" and "xmb". I'd try first if that version also gives you the same error just in case it was preexisting and you happened to notice it now after the xmb theme pruning

Jaffacakelover commented 1 year ago

I've checked all the stable 3DS versions between 1.12.0 and 1.9.0 (the buildbot only goes back to 1.9.0), and GLUI assets were missing from all of them. So they disappeared before August 2020?

(media folder renamed to assets = 1.9.2) (ctr folder added = 1.9.9) (bottom screen gui added / bottom screen log removed = 1.9.9)

I've found a backup on my PC of the assets/glui folder and its matching src folder! I couldn't tell you which version they're taken from, but they work when I add them to my 3DS. I could put them into a pull request to get them reinstated?

Yrouel commented 1 year ago

I've checked all the stable 3DS versions between 1.12.0 and 1.9.0 (the buildbot only goes back to 1.9.0), and GLUI assets were missing from all of them. So they disappeared before August 2020?

I don't know, I'm suggesting to check 1.11.0 to verify if the problem could be related to the pruning of the themes or not. In other words if it still happens in 1.11.0 it means it's not caused by having removed all the themes but monochrome from xmb

Jaffacakelover commented 1 year ago

Yes it still happened in 1.11.0, so it's not related to the xmb themes pruning. The GLUI theme is a separate set (like Ozone) that was pruned in some earlier version.

Yrouel commented 1 year ago

It seems more likely this is not a bug per se but just a forgotten menu option

LibretroAdmin commented 1 year ago

Pushed this commit so far which just removes the warning - I never quite liked this warning message anyway and the asset system needs a complete revamp, but it will take probably longer than a month, so for now just removing the message during the interim period is a good enough hotfix -

https://github.com/libretro/RetroArch/commit/3c7e4b032edda6eef694b6f3558a43add50b4ea6

Yrouel commented 1 year ago

Pushed this commit so far which just removes the warning

Shouldn't the better fix be to remove the problematic leftover glui option from the menu? Like won't this fail silently now?

LibretroAdmin commented 1 year ago

Pushed this commit so far which just removes the warning

Shouldn't the better fix be to remove the problematic leftover glui option from the menu? Like won't this fail silently now?

What 'problematic leftover glui option' are you talking about?

LIke try to explain more clearly what you think the issue is, I'm struggling to figure out what you are talking about.

LibretroAdmin commented 1 year ago

@MrHuu Got any idea what is going wrong here?

Yrouel commented 1 year ago

What 'problematic leftover glui option' are you talking about?

First sentence from OP:

"Retroarch 3DS complains about missing assets if the menu driver is switched to GLUI"

If you just remove the warning won't selecting GLUI just fail silently now? Which means shouldn't you just remove the GLUI option in the first place given that it seems to be broken anyway?

LibretroAdmin commented 1 year ago

I see no reason to jump to that conclusion. It would just simply not render certain missing assets, but those assets are probably not even ones that are important for the default theme.

MrHuu commented 1 year ago

I've never been able to successfully use MaterialUI / glui on 3ds. The -DHAVE_MATERIALUI flag was added years ago as experimental user interface alongside -DHAVE_XMB. As far as i'm aware, the required assets have never been distributed for 3ds.

I think -DHAVE_MATERIALUI can be removed from the makefile for now. https://github.com/libretro/RetroArch/blob/299875f8b6c24eac570c5679544fa58e7234b890/Makefile.ctr#L56

It can always be re-enabled, in case anyone wants to support it.

MaterialUI is designed with pointer / touch devices in mind, which currently is not supported on the 3ds. It's also aimed at higher resolution screens. Without optimizations, the glui menu driver isn't really suitable for use on 3ds. If adding support, it would only make sense to run on the bottom screen in my opinion.

The Update Assets option in the Online Updater menu is disabled, since retroarch on the 3ds can not handle the downloaded assets.zip file. Which also includes all assets for every platform and unsupported menu driver. Next to downloading a lot of unwanted files, the 3ds crashes during extraction of the large .zip.

All 3ds supported assets are included with the 3ds builds on the libretro buildbot.

LibretroAdmin commented 1 year ago

Removed MaterialUI as per @MrHuu 's recommendation - https://github.com/libretro/RetroArch/commit/6176b6a7646b2bf36ccfc128eca71b59c8873183