most of the games this can be evidenced in are Unreal Engine titles or games that otherwise do not work in master yet but it can be shown in Saints Row 2 that does work in the master branch
this ID was found from debugging games where storage device detection wasn't working and reverse engineering of Unreal Engine 3
[XAM] Modify default user XUID. Fixes behavior in NeoGeo Battle
Coliseum and possibly others. ("You do not have permissions to
perform this operation.")
- Clean up user index handling in XamUserGetXUID,
XamUserGetSigninState, XamUserReadProfileSettings,
XamUserWriteProfileSettings, XamUserCheckPrivilege,
XamUserContentRestrictionGetFlags, XamUserAreUsersFriends.
A user index of 0xFF does not mean anything special and is outright
invalid.
- Move XamUserReadProfileSettings code to new
xeXamUserReadProfileSettingsEx.
- Implement XamUserReadProfileSettings/XamUserReadProfileSettingsEx
which now call xeXamUserReadProfileSettingsEx.
- Reorganized xeXamUserReadProfileSettingsEx so that the needed buffer
size is checked before user index is validated, so that calls to
determine necessary buffer size return correctly instead of an error
about invalid user index.
- Stub XamUserIsOnlineEnabled.
Remove custom platform implementation of `DeleteFolder` and replace two
uses with `std::filesystem::remove_all` which removes a file or
directory with all its contents.
C++17ification!
- Filesystem interaction now uses std::filesystem::path.
- Usage of const char*, std::string have been changed to
std::string_view where appropriate.
- Usage of printf-style functions changed to use fmt.
- [Kernel] Rename game_language cvar to user_language.
- [Kernel] Recategorize user_language to XConfig.
- [Kernel] Add user_country cvar, used instead of hardcoded value in XConfig.
- [XAM] Use user_country cvar for xeXamGetLocaleEx instead of
xeExGetXConfigSetting.
Some titles, when using XamEnumerate synchronously, expect X_ERROR_NO_MORE_FILES as the return value.
Some titles, when using XamEnumerate asynchronously, expect X_ERROR_FUNCTION_FAILED as the overlapped result.